Как я писал Bomberman'а на Android
С момента публикации игры постоянно люди просили выложить исходники. Решил всё-таки поделиться ими. Может кому-нибудь и поможет в изучении LibGDX.
Тег
Записей: 26
С момента публикации игры постоянно люди просили выложить исходники. Решил всё-таки поделиться ими. Может кому-нибудь и поможет в изучении LibGDX.
Решил всё-таки публиковать все уроки на github'е. И мне так работать проще, и людям удобнее, как мне кажется.
В любой игре присутствует меню. Довольно сложно придумать иной способ навигации. В этой статье рассмотрим как создать свой экран с меню средствами libGDX. Попутно немного о проблеме соотношения сторон на различных устройствах.
Ради интереса решил посмотреть сколько в принципе можно заработать на рекламе в не очень раскрученном приложении. Как раз дописывал Lode Runner'а, в него и запихнул. Решил показать, как добавить в свои игры на LibGDX рекламу.
В прошлой статье рассматривалась работа с ContactListener. Вот только примеры, которые я использовал, были не совсем верно выбраны. В Box2D есть намного более удобные средства для фильтрации столкновений, а именно - фильтры. О них и напишу в этот раз.
Прошлые статьи в целом были вводными. Но только при помощи них уже можно написать свою игру. Правда в этом случае придётся всю физику самому продумывать. Для написания многих типов игр идеально бы подошёл встроенный в LibGDX движок - Box2D. О нём и пойдёт речь в этой статье.
Уже не первый проект, где выскакивает ошибка при быстром включении/выключении звука. Почему-то libgdx плохо справляется со стерео.
В Box2D есть специальный интерфейсный класс ContactListener, реализовав который, можно обрабатывать коллизии. В этой статье покажу как его использовать на практических примерах.
Не разобрался как следует с отрисовкой объектов и стал жаловаться. А оказалось, что объект то повернуть не так сложно. Ну, текстуру объекта.
Не так давно начал обкатывать физические движок Box2D, который в libGDX входит. Довольно не мало проблем с ним возникло. Последние дни мучился с различными силами.
В играх на Android очень важно организовать управление удобное. Я пока Bomberman'а делал, перепробовал различные варианты. Рассмотрим в этой статье возможные альтернативы.
Попросили для Bomberman'a сделать возможность управлять стрелками, а не джоем. При чём, хотели возможность самим задавать положение всех 4-х стрелок. Вместо того, что бы рисовать все 4, тем самым забивая лишними битами атлас, решил всего одну стрелку сделать, а потом просто поворачивать. Довольно забавно ведут себя методы по повороту спрайта.
Такая вот ошибка возникала периодически. Причина была непонятна. Иногда ошибка не выскакивает в течении часа, иногда каждую минуту...Абсолютный рэндом. Решение проблемы необычно.
Та архитектура, что я привёл довольно хороша, но избыточна. Зачем изобретать велосипед? В действительности в libGDX есть пакет scene2d, который позволяет на его основе создать хорошую архитектуру.
При написании игры больше всего времени тратится именно на работу с графикой. В этой статье рассмотрим как работать с графикой (текстурами, регионами и т.д.) в libGDX. Помимо описания принципов основных дам пару советов об оптимизации рендеринга.
Статья, по сути, являтся переводом официальной документации. Может что-то будет отличаться. libGDX включает в себя несколько модулей, предоставляющих определённые возможности при разработке. Думаю, очевидно, какие модули должны присутствовать в такого рода библиотеке.
После рассмотрения жизненного цикла игры сразу стоит рассмотреть архитектуру (каркас). Вообще Роллингс и Моррис (Rollings and Dave Morris) в своей книге "Game Architecture and Design" подробно описывают создание игр с точки зрения архитектуры. В своё время я правда не особо проникся этой книгой, но вам может понравится. Я же опишу архитектуру, которую стараюсь использовать сам.
В прошлой статье создали простенькое приложение для проверки работоспособности. Теперь стоит узнать о жизненном цикле игр. Впрочем, это относится не только к играм, любое приложение в Android имеет такой жизненный цикл.
Начиная с libGDX работать, уже тогда подумал над написанием туторила по этой библиотеке. Когда начал освещать процесс написания игры, то вопросы посыпались на мыло и в твиттер по некоторым аспектам разработки. Так что, начнём. Список всех статей (да и какие-нибудь другие материалы) буду размещать на странице о libGDX. В новом уроке будет использоваться исходник предыдущего и что-то дописываться.
Реализовал анимацию взрыва. Оказалось всё довольно-таки не просто. Обойтись одним объектом не получалось никак. Да и ещё сложность была в том, что анимация взрыва по краям и в центре разная. Но, обо всё по порядку.
Доработал слегка управление, слегка анимацию оптимизировал. Контролы будут снизу справа (установка бомбы, взрыв и т.д). Для управления пока тачем. Если нажали левее перса, то идёт влево, если выше, то вверх и т.д. Если есть клава, то двигаться можно стрелками, а бомбу устанавливать пробелом.
В любой игре есть меню, из которого вы уже попадаете на игровой экран. В общем-то различных экранов может быть много. Можно, конечно, полностью перерисовывать всё, когда необходимо переключение между экранами. В libgdx всё намного проще оказалось.
Добавил врагов на уровне. Balloom не просто двигаются по карте, но и взаимодействуют с миром. По мимо того, что умеют обходить препятствия, они ещё и могут убить нашего персонажа.
Озвучку движения игрока сделал. Слегка пришлось повозиться, правда (: Обычно я эмулятор использовал только для игр, но они, как выяснилось, позволяют дебажить игры и вытаскивать из них ресурсы =D
Продолжаю допиливать движок Bomberman. Реализовал анимацию на спрайтах.
Решил всё-таки плотно заняться разработкой игр под Android. На чистом OpenGL как-то ломало всё писать, решил поискать движки готовые. Остановился на libgdx.