Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Грибные блоки - красочная головоломка, в которой вам предстоит передвигать блоки и заполнять ряды, чтобы собирать грибочки в корзину! Попробуйте продержаться как можно дольше!

Грибные блоки

Головоломки, Расслабляющая, Пазлы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Android + Libgdx

С этим тегом используют

Игры Смартфон Приложение iOS Телефон Google Play iPhone Gamedev Open Source Все
16 постов сначала свежее
4
loginivsetakoe
7 лет назад
Лига Разработчиков Видеоигр

Вторая игра. Это как первая, только вторая⁠⁠

Чуть больше полугода назад я выкладывал пост о своей первой мобильной игре и вот созрел рассказать о второй. Наверное меня на это сподвиг третий подписчик появившийся невесть откуда спустя месяцев 8 с последнего поста, ну или нет. Сразу скажу, что разработкой игр я занимаюсь в свободное время и это не является ни моей работой, ни подработкой.


Начну по порядку. Инструментами для разработки, как и в прошлый раз послужили Android Studio в компании с библиотекой libGDX. В этот раз даже воспользовался некоторыми полезными свойствами двумерного физического движка, очень даже помогло.  И так к игре.


Идея игры не нова — вы играете за космический корабль и должны уничтожить некоторое количество вражеских кораблей за отведенное время, все остальные враги присутствующие в игре будут вам в этом всячески мешать. В отличии от первой игры, эта получилась куда как более динамичной. Было весело заставить врагов действовать, иногда даже осмысленно (вообще появляется детский восторг, когда первый враг начинает уворачиваться от метеорита или башня стрелять в твоем направлении).


Другой позитивный момент это значительно большее количество анимации, в основном покадровой (спрайты) ну и немного всяких вращений и прочей ерунды оживляющей картинку.

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост
Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Так же в игре есть элемент развития. То есть увеличивается ваш уровень, а с ним и основные характеристики корабля. Кроме этого можно покупать, за игровые монетки добытые в неравном бою, улучшения к характеристикам корабля (быстрее стрелять, быстрее летать, мощнее снаряды и т. д.) и улучшения к бонусам (дольше время щита, больше радиус магнита и т. д.). Хоть это вроде и не относится к игровому процессу напрямую, но немного интереса добавляет, по крайней мере на мой взгляд. Менюшка с этим добром выглядит так:

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Все (или почти все) иконки взяты с сайта http://game-icons.net/. Может кому-то будет полезно.

Игровая картинка хоть и стала значительно лучше относительно первой игры, но все равно далека от совершенства. От этого явно не уйти действуя по принципу «я его слепила из того, что было». Но если сказать что это ретро стиль, то кто-нибудь да поверит. Так, что это ретро стиль. Элементы управления в игре мне действительно нравятся, кнопки удались на славу

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Да и остальное не режет глаз

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Времени на вторую игру ушло гораздо больше чем на первую. От начала и до первого релиза примерно 7 месяцев. Возможно это из-за того, что я пару раз забрасывал ее на месяц (не думаю, что причина в этом), а может потому что хотелось сделать ее получше. Если кому интересно на сколько это у меня получилось, может сам посмотреть на Google Play:

https://play.google.com/store/apps/details?id=mendel.vasilii.spacerace

Показать полностью 5
[моё] Gamedev Libgdx Android Мобильные игры Разработка игр Гифка Длиннопост
7
9
DELETED
7 лет назад
Лига Разработчиков Видеоигр

От финансовых аналитиков до разработчиков мобильных игр за месяц.⁠⁠

Вместо эпиграфа

Часть 1. От финансовых аналитиков… Или глава пролог

С чего начинается день финансового аналитика, спросите вы? С рутины, отвечу я. Утро, офис, на автомате готовим чашечку кофе, сигарета и в довесок дюжина мыслей, которые устремляются куда то вдаль… И так они себе летят, летят и бац… Дерево…


На протяжение многих лет одно и то же. Надоело. Понятно было, что нужен новый вызов, а то завязли в своём маленьком и уютном болотце. Проходили дни и недели: утро, кофе, сигарета, дневная рутина и под вечер ты просто никакой. И так каждый день. “Стена плача” всё росла и росла (о ней чуть позже, фото покажем).


И вот оно - долгожданное явление, послужившее толчком в развитии дальнейших событий. Как-то с утра, то ли 19, то ли 20 сентября 2017, один из коллег кидает статью, где рассказывается от первого лица о двух ребятишках, которые, едва окончив школу, без малейшего опыта в разработке, написали игру. И тут меня осенило: вот он! Вот тот вызов, которого я ждал для своей команды (которая никогда не писала игры и опыта на этом поле не имела, от слова совсем). Да так осенило что я оказался залит утренним кофе.


А дальше было просто. Собрал ребят, обсудили данный вопрос и решили, а чем чёрт не шутит. Как минимум в будущем, когда будем скучать и делать свою рутинную работу, параллельно можно будет поиграть в собственные игры. В сумасшедшие собственные игры. Задача руководства команде была довольно простой: “Сделай то - не знаю что, сделай так - не знаю как, но на выходе должна получиться игра”.


Теперь утро финансового аналитика начиналось так:


1. Переступаю порог офиса

2. Спрашиваю как продвигается разработка игры

3. Прошу скинуть рабочую версию чтобы поиграть


Вот только после всего этого - кофе и перекур.


Мы разбили статью на несколько глав, в каждой из которых повествование ведется от лица человека, который выполнял изложенную часть работы. Надеемся, что статья не только покажет обратную сторону разработки, но и послужит катализатором конструктивной критики в наш адрес.

Часть 2. Нарисуй пингвина и да, он должен летать. Или глава о текстурах

После того, как мы определились с жанром, персонажами и динамикой игры, настало время воплотить идеи в текстурах. После общения с главным программистом, идея отрисовки всех текстур только в векторе потерпела фиаско. Нужен растр. Мы пораскинули мозгами и логично пришли к выводу что нам нужны наборы текстур под разные разрешения экранов. Так же логично мы пришли к выводу что если хотим быстро что-то сделать, то это очень сильное кунг-фу для нас. Поэтому пошли таким путем: оригинал в векторе, его экспортируем в растр низкого разрешения и на выходе получаем текстуры стилизованные под пиксель арт. Ну, в общем, текстуры очень похожие на пиксель арт, но не пиксель арт.


Отрисовка велась в основном в open source программах (GIMP и Inkscape), но ими одними нам не удалось обойтись, поэтому пришлось задействовать Aseprite и After Effects для анимации. Например, вот разобранный морж, подготовленный к анимации

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

В первые дни разработки, все тайлы экспортировались в один спрайт, а по указанным во вручную созданной таблице координатам программист вырезал нужный кадр. Настал момент когда размеры спрайта перевалили за 12000px по вертикали… Что-то начало нам подсказывать что мы движемся в неправильном направлении. Совсем неправильном. И если вначале мы думали что уж игру-то мы кое-как накодим, то тут мы поняли что в словаре под статьей как не надо делать игры, должны быть наши наработки. Спасло нас то, что мы (внезапно!) не первые кто пишет игру под Андроид и почти все проблемы, которые могут возникнуть у чайников уже давно описаны в какой-нибудь статье. Окей, гугл и спустя сутки мы уже получаем удовольствие от работы с Atlas в libgdx.


Тут самое время подметить один момент: если уж и пришла в голову мысль окунуться в разработку игр, даже для самого себя составьте четкое техническое задание, опираясь на которое вы сможете грамотно организовать процесс. Без него слаженной работы не получится.


По итогу мы пришли к тому, что исходники всех текстур храним в одном большом svg файле (даже изначально растровые изображения) и, при необходимости экспортируем тайлы в png (либо поодиночке, либо пакетно). Выглядит это, конечно монструозно, но на деле - не так страшен черт, как его малюют.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Далее несколько примеров работы с анимированными персонажами.

Часть 3. Delphi жив и как он вписался в разработку. Или рассказ от лица прикладного программиста

30 сентября на совещании было озвучено, что кто-то из нас должен написать программу для генерации уровней, на базе созданной карты объектов в tiled.exe.


Итого ТЗ:

В генераторе tiled.exe создаем карту объектов, нажимаем экспорт в PNG, загружаем в какую-то программу эту картинку, после на эту картинку вешаем активные элементы (монетки, черепки, замедлители, моржи, медведи и т.д.), в специальных полях задаем настройки уровня (общее время уровня, очки, и т.д.), жмем на кнопку «Готово» и на выходе получаем JSON файл.

Все уставились на меня, мол, ты же вроде прикладной программист, примусы починяешь, давай быстренько накидай чего-нибудь. Я такой «Да не вопрос, я же High Level Developer: в универе калькулятор написал».


Ставим Delphi 2010. Начинаем с нуля. Окей Google, как двигать картинки по форме?Накидал форму, на форме панель с инструментами (активные элементы игры), при двойном клике на канве основной игровой области должен создаваться объект, который должен двигается простым перетаскиванием. Добавил кнопки загрузки карты и фона уровня. Все на английском, надо же показать свой мега скилл.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Далее, надо это все дело сохранять, поэтому вешаем дополнительно кнопочку.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Добавляю поля для основных настроек уровня, и для красоты вешаю кнопку сохранения скриншота уровня и кнопки очистки всех расставленных элементов, а также кнопку загрузки JSON.


Все, интерфейс накидал, на том и порешили что 90% работы сделано за 6 часов и остались сущие мелочи.


5 дней и ночей спустя…


Все начало создаваться, очищаться, память уже не течет, объекты двигаются, JSON сохраняется и загружается, даже скриншоты делаются. Даже сделал учет масштаба 1:2 игровой области в игре и у меня на форме (1920 * 1080 в игре, а у меня область 960 * 540).


Прихожу в офис, отчитываюсь что долг родине отдал, дело за вами, господа. Но ни тут-то было, Вова (JAVA developer) в курилке говорит «Бро, а какая система координат у тебя на выходе в JSON?». На мой вопросительный взгляд последовало объяснение что в libgdx начало координат это нижний левый угол экрана, и соответственно у каждого объекта также… Я начинаю нервно курить и вспоминаю про себя, что в Delphi самая лучшая система координат и XY=0,0 это верхний левый угол. Ну ок, докурил и начал: отнять, прибавить, поделить, бац профит!


Жму на кнопку «На! Смотри! Все нижний левый, так нижний левый»


7 дней спустя релиз. И, нет, у медведей не фиговые листочки в промежности, а так мы отметили на карте уровня точки и направление, откуда появляются новые монеты.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Часть 4. While (!release) { Кофе, перекур, код; } . Или глава о собственно разработке

Написание игры - занятие довольно увлекательное, которое возвращает тебя в детство. Только за происходящим на экране ты видишь не внешнюю магию, а внутренний мир, скрытый от обычного игрока, ты устанавливаешь в нем свои законы и правила, ты заставляешь его обрести видимую форму, ожить и зазвучать.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Так как опыта в разработке игр было аж 0.0, то сразу же появилось много вопросов. Первый из них - “для какой платформы писать?” разрешился довольно просто, так как есть опыт разработки приложений под Андроид, то и писать решили под Андроид. Просмотрев доступные движки и фреймворки остановился на связке libGdx и Java так как предполагалось что, игра будет в 2d формате.


По началу решил не использовать движок box2d, а задавать скорость объектов игры и самому отслеживать коллизии. Быстренько накидал тестовый уровень - всё ОК, пингвин бегает, монетки собирает. Начальство сразу вопрос - “Когда релиз?” Отвечаю - “Две недели за глаза.” Но не тут-то было. После того как назрел вопрос о том, что монетки должны откуда то вылетать и красиво отскакивать от поверхностей, а пингвин должен прыгать по этим самым поверхностям, подключил физический движок box2d, пришлось в нем ковыряться. Задал поведение объектов внутри уровня так, чтобы оно соответствовало любой конфигурации уровня. Витя сваял прогу в которой можно было редактировать уровни и сохранять их конфиги в файлы. При загрузке уровня мой класс лоадер читает файл и строит по настройкам уровень и заполняет его объектами добавляет игрока (пингвина) и вуаля можно играть и время от времени добавлять различные уровни не переписывая кода игры.


По наступлению определенных событий в мире прикрутил проигрывание звуков и музыки, с одним “но”: при запуске десктопной версии музыка и звуки часто приводит к вылетам из игры, побороть которые так и не получилось, в андроиде такого не случается.


Где хранить результаты? Конечно в БД. И тут нужны небольшие танцы с бубном, так как ядро игры не умеет работать с sqlite так как это делает андроид. Поэтому используется драйвер sqlit - jdbc для подключения к уже созданной базе и работе с ней в десктопной версии. А при работе в андроид версии проверяется есть ли в песочнице приложения файл базы и если его нет то он копируется из ассетов, если есть то подключаемся через sqldroid.


Для различных экранов создал самописные кнопки, на которые отлеживаю нажатия, вся фишка в том, что на экране когда ты рисуешь элементы нулевые координаты находятся в левом нижнем углу, а при событии ввода нулевые координаты находятся в левом верхнем углу, приходится каждый раз проводить над ними операцию конвертации.


Монетизация - довольно таки просто с использованием интерфейса обратных вызовов можно в любой момент показать или скрыть баннер, полноэкранное объявление либо видео за вознаграждение.


Ну вот, впринципе, и всё. В планах поработать над повышением быстродействия, подключить к игровым сервисам Google Play и добавить функционала.

Часть 5. Немое кино в прошлом. Или глава о звуковом наполнении игры

Процесс разработки затронул не всех и в свободные от кода руки мы отдали звуковое сопровождение игры. Требования звучали достаточно лаконично: “Музыка должна быть просто зашибись, чтобы игроки прям слюни пускали”.

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Сижу никого не трогаю, тут мне заявляют коллеги по цеху “Ну все, Валера настало твое время, на тебя делегирована звуковая часть работы, надо её сделать со скоростью звука”.


Мне то, что сиди слушай музыку, выбирай то что понравилось и в папку скидывай, вроде работёнка не пыльная, но… Пингвин прыгает, ходит, летает, собирает монетки, выигрывает и проигрывает… Мозг болит, уши кровоточат, о, супер, этот звук подходит, так-с, а вот указание авторских прав нам точно не подходит.


Плюнул на все, залез в медиатеку YouTube слил себе много-много мб треков и семплов, переслушал все, только звукового кофе, чтоб перебить уже прослушанное я не нашел, пришлось слушать для отдыха звуки отбойного молотка, перфоратора и болгарки...


Всё, необходимый набор звуков собран, а мерзкие программисты заявляют: “Слишком много мегабайтов, надо резать и сжимать, циклить все что можно, а что нельзя то уменьшать...”

Пришлось знакомиться с аудиоредакторами, привет Adobe Audition!


Готово! Есть архив, музыка нарезана и зациклена, звуки почищены и собраны! Красота одним словом!


Итого: четыре дня и четыре ночи скакал Илья Муромец, пока скакалку не отобрали!

Часть 6. … до разработчиков мобильных игр. Или глава эпилог

У каждого из нас есть много чего рассказать, у каждого из нас был свой путь до того как мы стали настоящей командой, для всех из нас он был непростым, да чего уж там, и сейчас не всё просто.


Уже много лет перед глазами графики цифры, валютные пары и индексы, от них голова кругом идёт. Смена занятия (хоть и на месяц) реально привела в чувства и позволила отдохнуть от финансовой рутины.


Кстати, вот тут и настало время для нашей “Стены Плача” (Курение вредит вашему здоровью!)

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Не судите строго, но критикуйте конструктивно, просто это реальный путь от финансового аналитика до разработчика мобильных игр. Надеемся, что это не последняя наша история и мы продолжим развиваться и радовать вас нашими новыми достижениями и играми!


С уважением Команда GCN, разработчики мобильной игры "Tapstazy".

От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi
От финансовых аналитиков до разработчиков мобильных игр за месяц. Android, Java, Игры на Android, Libgdx, Android разработка, Длиннопост, Видео, Delphi

Так как я являюсь частью команды разработчиков, то ставлю тэг "моё", указывающий на оригинальное авторство статьи.

Показать полностью 10 3
[моё] Android Java Игры на Android Libgdx Android разработка Длиннопост Видео Delphi
22
69
loginivsetakoe
8 лет назад
Лига Разработчиков Видеоигр

Первая мобильная игра. От начала до конца⁠⁠

Хочу рассказать о моем первом опыте создания мобильной игры. Сразу скажу, что делал я это, в общем-то, для саморазвития и моя работа не связана с играми. Занялся я этим просто потому, что всегда хотелось попробовать и мешало только то, что не было вообще никакого представления с чего начать. Сделав усилие над собой, я совершил практически невероятное, я погуглил как делать мобильные игры на Android (ну просто потому, что у меня Android). Среди прочего интернет мне сказал, что есть такая библиотека libgdx и очень даже удобно работать с ней из Android Studio.

Первая мобильная игра. От начала до конца Android, Игры на Android, Libgdx, Gamedev, Мобильные игры, Длиннопост

С помощью libgdx можно делать игры и для ios и для html5 и для десктопной windows, но это меня особо не интересовало, поэтому ничего внятного сказать на эту тему не могу.

Так вот, взяв libgdx и Android Studio и посмотрев ряд уроков в интернете (ну и конечно почитав официальную документацию) я решил, что дальше изучать лучше на деле, то есть делать игрушку.


Идея игры. Так как это только начало я решил сделать, что-то относительно простое в плане реализации, копировать имеющиеся игры мне не хотелось (просто зачем?) и вот родилась в моей голове игра, не то чтобы полностью новая и супер оригинальная, но такую я не нашел.


Для начала я взял шарики и поместил их на поле из 6-и угольников. Размер поля выбирался так, чтобы и не мелко было и вариантов для действий оставалось достаточно. Получилось поле 10x11 (на самом деле 9,5x11). Процесс игры сам по себе простой, тыкаешь пальцем в шарик, оттягиваешь в противоположном (к направлению желаемого движения) направлении и отпускаешь. Шарик перемещается туда, куда его отправили (с заданной скоростью, чем дальше оттянули, тем выше скорость) и либо останавливается естественным путем, либо утыкается в другие шарики. Собирая в соседних клетках по пять или более шариков они исчезают (если их больше 5 то появляется шарик с бонусом). Вот собственно основа игры.


Сразу было решено, что в игре будут уровни для прохождения и будет несколько разных целей, которые нужно будет достичь для победы (например, очистить все поле, убрать заданное число шариков одного цвета или продержаться на протяжении n-го количества ходов). Но для отработки геймплея изначально был создан уровень на выживание (играй себе и играй, пока не проиграешь), он остался и в текущей версии игры.


Ресурсы для игры брались в интернете на сайтах где вокруг изображения были кнопки «Скачать бесплатно», «Бесплатно», «Экстра бесплатно», «Супер мега экстра бесплатно», конечно все переделывалось, что-то вообще рисовалось самостоятельно (то, что попроще). Первый вариант выглядел неказисто (хотя мне конечно нравилось). Изображений не сохранилось, но было примерно так:

Первая мобильная игра. От начала до конца Android, Игры на Android, Libgdx, Gamedev, Мобильные игры, Длиннопост

Убедившись, что все работает я начал делать уровни. Было решено, уровни грузить из xml-файлов. Эти файлы должны содержать всю необходимую информацию (начальное расположение шариков, цель уровня, количество ходов за которые успеть, сколько шариков появляется за ход и т.д.). Начал я делать уровни с того, что написал простенький редактор уровней, как-то же я должен расставить шарики, посмотреть на это и убедиться, что в это можно играть. Редактор выглядит очень сурово (он же только для меня), в нем первые версии многих элементов игры.

Первая мобильная игра. От начала до конца Android, Игры на Android, Libgdx, Gamedev, Мобильные игры, Длиннопост

Я бы сказал, что с редактором делать уровни намного проще, чем без, но без редактора я даже не стал пробовать (ну это правда, безумие какое-то).

Главной фишкой игрушки я считаю уровни, в которых нужно очистить поле. Все шарики изначально уже расположены на поле нужно за определенное количество шагов полностью очистить поле от шариков.

Первая мобильная игра. От начала до конца Android, Игры на Android, Libgdx, Gamedev, Мобильные игры, Длиннопост

Играть мне в них конечно не так интересно. Ну, я же их сделал, я знаю, как их пройти (хотя иногда выручает плохая память). Остальные типы уровней тоже не плохи (ну еще бы они мне не нравились). Вообще получилась довольно непростая игра, в основном (первые уровни то конечно простые, в один невозможно проиграть даже специально), что на мой взгляд плюс для игры в жанре «Головоломки».

Сделав побольше уровней (наверное, 120) я решил, что нужно и картинкой заняться. Изменения проходили в несколько этапов, при этом игра уже была загружена в Play Market.

Первая мобильная игра. От начала до конца Android, Игры на Android, Libgdx, Gamedev, Мобильные игры, Длиннопост

При создании уровней постепенно начался кризис воображения, поэтому на поле были добавлены новые игровые элементы (разноцветный шарик, неподвижная скала, портал) и свойства шариков (щит, лёд). Со всем этим делом стало конечно намного проще делать новые уровни, повторяться то не хочется, а так разнообразия прибавилось прилично.


Название игры тоже претерпело несколько изменений точнее первое слово в названии, ибо второе слово Balls так и осталось неизменным, шарики они и есть шарики.


Еще в игрушку были добавлены игровые сервисы Google и реклама от AdMob (того же гугла). Сделано это в большей степени в целях обучения, ибо никаких надежд на игру я не возлагал (как оказалось и правильно). Добавить рекламу оказалось на удивление просто и заняло минут 20 от силы. С сервисами я возился значительно дольше, но там была проблема в устаревших примерах, которыми я пользовался.


Вот как-то так выглядит история моей первой мобильной игры. Получилось длинно. А то в интернете полно историй успеха, пусть будет моя история не успеха. Зато это было весело.


Если вдруг кому интересно, ссылка на игру в Play Market

Показать полностью 4
[моё] Android Игры на Android Libgdx Gamedev Мобильные игры Длиннопост
26
56
SinuX
SinuX
8 лет назад
Лига Разработчиков Видеоигр

Mosquito Invasion VR - мой опыт создания VR игрушки для Android⁠⁠

Всем привет! Пару месяцев назад я решил исполнить свою давнюю мечту и создать свою собственную ламповую игрушку для смартфона. Поскольку тема виртуальной реальности начинает все чаще мелькать в постах и новостях, я решил запилить именно VR игру.

Хоть я и знаком с OpenGL, идея писать все с нуля в голом NDK меня не прельщала. Писать игру решил с использованием библиотеки Libgdx, потому что во-первых, она кроссплатформенная, а во-вторых, я с ней уже давно знаком, и даже писал раньше небольшие игрушки "в стол". Первое, с чем я столкнулся, - это полное отсутствие поддержки VR. В целом, libgdx - неплохая библиотека, но ее разработчики знатно тормозят и не торопятся следовать трендам современности. Выхода из ситуации было 3:

1) Использовать Cardboard SDK

2) Использовать Unity

3) Реализовать "headTracking" вручную в рамках libgdx

В первых двух случаях мне пришлось бы переучиваться и вставать на новые рельсы, поэтому эти варианты я сразу отбросил. Кроме того, у меня неприязнь к Unity)) Хоть я и понимаю, что это очень удобный движок в плане переноса на другие платформы с огромным комьюнити, но у меня в душе он ассоциируется с конструктором для школьников типа ucoz-а. Я выбрал третий вариант, и после нескольких недель гугления и вчитывния в формулы публикаций по Oculus Rift, я родил собственную реализацию комплементарного фильтра, который позволяет отслеживать вращение головы с помощью акселерометра, гироскопа и компаса, причем в моей реализации последние два датчика не обязательны. В случае отсутствия гироскопа углы вращения виртуальной головы определяются по наклонам телефона при помощи акселерометра, по-моему это первое подобное решение в VR играх. Большинство игр просто не запускаются на телефонах без гироскопа.

Перед началом разработки я начитался постов про пожизненную блокировку разработчиков в Google Playe за ворованный контент, поэтому решил все модели, текстуры и звуки делать самостоятельно. Пришлось в кратчайшие сроки освоить основы моделирования в Blender по видеоурокам и создать модель комнаты с комарами:

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

Звуки записывал на телефон и обрабатывал в Ocenaudio, либо синтезировал в LMMS:

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

Кстати, со звуком в libgdx вообще все плохо. Во-первых, стандартный Sound никак не фиксирует момент готовности файла к воспроизведению. Во-вторых, soundPool андроида, который используется в Sound, весьма забагованная вещь, которая работает по-разному от версии к версии. Я обнаружил, что в Android ниже 4.3 он не умеет высвобождать память от ненужных звуков в процессе работы приложения, из-за этого в игре может пропадать звук. Причем в версиях 4.3 и выше такой проблемы нет. Тем не менее, мне все равно пришлось практически полностью переписать стандартные классы работы со звуками из libgdx, создав тем самым свой мини-движок, который имитирует трехмерный звук (чисто изменением громкости каналов, без бинаурального эффекта).

Для получения стереопары на экране используются два разных viewport-а:

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

Текущий счет и количество жизней выводятся на экран виртуального телика. Вообще в целом игрушка представляет собой масштабируемый движок, который получился весьма оптимизированным за счет отказа от дополнительных библиотек с кучей ненужного мусора. Я сделал собственный формат описания уровней, запилил к нему парсер. Поддерживается скелетная анимация объектов уровня, эффекты из системы частиц и шейдеры. Игрушка выдает 60 fps практически на любом смартфоне с android 5.0+ и 1 гигом оперативы, обеспечивая очень плавную анимацию поворота головы. И вообще, у меня сложилось впечатление, что большинство VR игр в маркете созданы какими-то далекими от геймдева людьми, потому что они подлагивают даже на моем далеко не самом плюшевом телефоне (Asus ZE551ML). Я изначально боролся за каждый кадр, каждое умножение и деление, поэтому по сравнению с остальными VR играми маркета, моя создает ощущение, будто играешь в сам Oculus. Вот еще пару скринов:

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост
Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

Кроме того, в игре есть обычный режим на полный экран (без VR):

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост
Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

В ближайшее время планирую добавить новые уровни, над одним из них, кстати, работаю прямо сейчас:

Mosquito Invasion VR - мой опыт создания VR игрушки для Android Виртуальная реальность, Gamedev, Инди, Игры, Android, Libgdx, Длиннопост

Немного опоздал к хэллоуину с хоррор-локацией, но все равно доведу до конца)

Видео геймплея (ускоренное): https://www.youtube.com/watch?v=KJer-dD1uwU

Буду рад услышать замечания и пожелания)

Показать полностью 8
[моё] Виртуальная реальность Gamedev Инди Игры Android Libgdx Длиннопост
15
82
Nobinator
Nobinator
9 лет назад
Лига Разработчиков Видеоигр

Игра Screw. Java и Libgdx.⁠⁠

Игра Screw. Java и Libgdx. Libgdx, Android, Gamedev, Длиннопост, Screw, Java
Показать полностью 1
Libgdx Android Gamedev Длиннопост Screw Java
25
mordasinus
mordasinus
9 лет назад

Создание Android игры на Libgdx⁠⁠

Создание Android игры на Libgdx Android, Мобильные игры, Libgdx, Разработка игр, Gamedev, Игры, Программирование, Java, Длиннопост
Показать полностью 1
[моё] Android Мобильные игры Libgdx Разработка игр Gamedev Игры Программирование Java Длиннопост
12
6
mordasinus
mordasinus
9 лет назад

Как я создал игру за 45 дней⁠⁠

Как я создал игру за 45 дней
Показать полностью 1
[моё] Игры Игры на Android Создание игр Android Gamedev Libgdx Java Длиннопост
27
2
Nobinator
Nobinator
9 лет назад

Результаты труда программиста⁠⁠

Результаты труда программиста
Показать полностью 1
[моё] Gamedev Java Libgdx Bitmazes Длиннопост Android
14
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии