Upload
akimovpro
View
752
Download
0
Embed Size (px)
DESCRIPTION
Д
Citation preview
Инструментарий для быстрой разработки мобильных 2D игр
Android OS
Виталий Цаплин
Концепция
Универсальный редактор Исполняющая машина + скрипт DLC?
Архитектура
Дерево сцены = Композиция изображений + (узлы + физические объекты) Игровой цикл: AbstractGame Игровой контекст: GameContext
Структура игры
Игровой проект (не зависит от платформы)
Обертка (зависит оп платформы)
Средства разработки
Eclipse Maven Java Android SDK
Игровой цикл
public interface AbstractGame { void onStartup(GameContext context,
int width, int height); void onCleanup(); void onThink(float delta); void onRender(Graphics gfx, float delta); void onResize(int width, int height);}
Игровой контекст
public interface GameContext {ResourceManager getResourceManager();
SoundManager getSoundManager(); UIEvent getNexEvent();}
Сцена
Отображение + анимированные декорации
Поддержание структурной целостности SceneReader -> SceneDefenition SceneBuilder -> Nodes Узлы: Body, Helper, Sprite, Joints
Графика
OpenGL ES 1.1 … void drawSprite(); void drawString(); void flush();
Физика
Box2D: Swig+JNI Сборочные скрипты для NDK, MinGW,
VisualStudio NMake Состояния vs. Обратные вызовы Разрушаемые объекты: setDamageMax(),
setDamageThreshold(), setDamageFactor(), setBreakable(), getDamage(), isBroken()
jBox2D – НЕ для мобильных
Структура инструментария
scene-editor sprite-compiler font-compiler game-commons game-engine-commons game-engine-box2d game-engine-tester game-engine-android
Инструменты
Редактор игровой сцены Утилита для создания анимированных
изображений Утилита для формирования шрифтов
Редактор игровой сцены
Изображения Физические тела Полигоны, прямоугольники, окружности Сочленения: Revolute, Prismatic, etc. Групповое редактирование свойств Ссылки на объекты Композитные сцены XML
TODOs
Доработка UI Оптимизация графики Перенос основной части кода в С++ Поддержка Python, LUA… Поддержка iOS (Marmalade?)
Скриншоты среды разработки
www.youtube.com/watch?v=13kJcIXcXKA
Игровой процесс
www.youtube.com/watch?v=mghyKWwwWs0
Вопросы?