SlideShare a Scribd company logo
1 of 24
Download to read offline
CitrusGame Engine
Быстрая и удобная
кроссплатформенная
разработка для мобильных
устройств на примере
платформера

Шумовский Юрий

Разработчик игр, http://mobgamedev.com

yurij.shumovskij@gmail.com
Требования к порту игры
«Конек-Горбунок»

Игровой автомат

Быстро
Дешево

Кроссплатформенно

iPhone
iPad
Аndroid
web
Выбираем
Кроссплатформенное
решение
Выбираем
Кроссплатформенное
решение
Citrus game engine:
что это, что в нем полезного
и из чего состоит?
Citrus это:
Display frameworks (2D, 3D)
Physics frameworks
Multi resolution solution
Level manager
Sound manager
Gamepads

Camera system
Архитектура игры готовая к
применению
Игровые примитивы (Hero, Enemy,
Coin, MovingPlatform, Sensor, Teleport,
Cannon и прочее
Starling

Starling
Stage3D
OpenGL, OpenGL ES 2.0, Direct3D

GPU
iPhone, Android…
… extends StarlingCitrusEngine
super.handleAddedToStage(e);
Starling.multitouchEnabled = true;
setUpStarling(true, 0);

import citrus.objects.platformer.box2d.Hero;

… extends CitrusEngine
state = new Away3DGameState();

import citrus.objects.platformer.nape.Hero;
Организация графики
1x

Решение 1.
Свои наборы графики
под каждое разрешение
(1x, 1.5x, 2x, 4x, 5x)

1.5x
_baseWidth = 480;
_baseHeight = 320;
_viewportMode = ViewportMode.FULLSCREEN;
_assetSizes = [1, 1.5, 2, 4, 5];

2x

4x

Assets.assets = new AssetManager
(scaleFactor);
Assets.assets.enqueue("multiresolutions/assets" +
caleFactor + "x.png");
Assets.assets.enqueue("multiresolutions/assets" +
caleFactor + "x.xml");

scaleFactor – вычисляется автоматически
…но есть один недостаток
базовый размер для Android
все разрешения
не нарисуешь, а при
FULLSCREEN видно как
растягивается графика
Решение 2.
1) Используем base_width, base_height.
2) ScaleFactor считаем сами
3) Добавляем мертвые зоны +
маштабирование максимальной графики

Смещение по Y задаем вручную
switch(stage.fullScreenHeight){
case 480:
yOffset = 160;
break;
case 500:
yOffset = 130;
break;
case 512:
yOffset = 130;
break;
….
var scaleYNormal:Number =
Math.round(stage.fullScreenHeight/(BASE_HEIGHT));
if (scaleYNormal < 2) {
scaleYNormal = 2;
}
var scaleOriginal:Number =
(stage.fullScreenHeight/BASE_HEIGHT)/scaleYNormal;
Анимация в Citrus Engine

Атласы
(сиквенция картинок)

Анимация в SWF файле +
RUNTIME rendering
Скелетная анимация с
Dragon Bones
Использование Атласа
Атлас собираем с отдельных картинок
помощью
http://www.codeandweb.com/texturepacker

[Embed(source="/../embed/games/hungryhero/g
raphics/mySpritesheet.png")]
public static const AtlasTextureGame:Class;
[Embed(source="/../embed/games/hungryhero/g
raphics/mySpritesheet.xml",
mimeType="application/octet-stream")]
public static const AtlasXmlGame:Class;

<XML>

var ta:TextureAtlas = new
TextureAtlas(Texture.fromBitmap(new
heroAnimBitmap()),XML(new heroAnimXML()));
var animationSeq:AnimationSequence = new
AnimationSequence(ta,["walk","idle",
"jump"],"idle",24);
hero.view = animationSeq;
Анимация в SWF файле +
RUNTIME rendering

При запуске, с каждого кадра анимации создается
BitmapData
Скелетная анимация с
Dragon Bones

Texture.png
<XML>
skeleton.xml
<XML>
texture.xml
Particle Systems
Как создавать
particle systems
http://onebyonedesign.com/flash/particleeditor/

Настраиваем визуальные
параметры

particle.pex
texture.png

particleArt = new PDParticleSystem(particleXML, texture);
particleArt.start();
flame = new CitrusSprite("flame",{view:particleArt});
add(flame);

Экспортируем в XML +
texture

Используем в коде
Физика в Citrus Engine
Не стоит писать свой код
обработки столкновений.
Доверьтесь Box2D

var pika2:Sensor = Sensor(getObjectByName
("pika2"));
pika2.onBeginContact.add(onPikaHandler);
Создание и управление
уровнями
Редакторы уровней

1. mapeditor

2. GLEED2D - Generic Level Editor 2D,

3. FlashIDE (используют даже HTML5 программисты)
Редакторы уровней ,
используя Flash IDE

ObjectMaker2D.FromMovieClip(level);
Плюсы/Минусы в Citrus Engine

Плюс

Минус

Плюс

Минус

Плюс

Минус
The end

Благодарю за внимание!

More Related Content

Similar to Citrus Game Engine, Юрий Шумовский

Иструментарий для быстрой разработки игр с 2 d физикой
Иструментарий для быстрой разработки игр с 2 d физикойИструментарий для быстрой разработки игр с 2 d физикой
Иструментарий для быстрой разработки игр с 2 d физикойakimovpro
 
Windows Phone 7 Game Development
Windows Phone 7 Game DevelopmentWindows Phone 7 Game Development
Windows Phone 7 Game DevelopmentSergii Lutai
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Эльвина Сакаева
 
Тенденции и тренды
Тенденции и трендыТенденции и тренды
Тенденции и трендыLysenko Andrey
 
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest
 
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрkranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрKrivoy Rog IT Community
 
Сloudmach Pitch for RSCh (YEES - 2010)
Сloudmach Pitch for RSCh (YEES - 2010)Сloudmach Pitch for RSCh (YEES - 2010)
Сloudmach Pitch for RSCh (YEES - 2010)YEES-2011
 
Earn millions with a casual gameplay
Earn millions with a casual gameplayEarn millions with a casual gameplay
Earn millions with a casual gameplayAnton Volkov
 
Тестируем игры для мобильных устройств: от прототипа до запуска
Тестируем игры для мобильных устройств: от прототипа до запускаТестируем игры для мобильных устройств: от прототипа до запуска
Тестируем игры для мобильных устройств: от прототипа до запускаSQALab
 
Разработка игр на базе AlternativaPlatform
Разработка игр на базе AlternativaPlatformРазработка игр на базе AlternativaPlatform
Разработка игр на базе AlternativaPlatformAnton Volkov
 
Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Catherine Tipanova
 
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...Mail.ru Group
 
NettleBox - Products
NettleBox - ProductsNettleBox - Products
NettleBox - ProductsNettleTech
 
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest
 
Protecting your mobile game from the most common hacks
Protecting your mobile game from the most common hacksProtecting your mobile game from the most common hacks
Protecting your mobile game from the most common hacksDevGAMM Conference
 
Tanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserTanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserAnton Volkov
 
Портирование игр на мобильные платформы
Портирование игр на мобильные платформыПортирование игр на мобильные платформы
Портирование игр на мобильные платформыStanislav Krasnoyarov
 
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаКРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаKirill Lebedev
 

Similar to Citrus Game Engine, Юрий Шумовский (20)

Иструментарий для быстрой разработки игр с 2 d физикой
Иструментарий для быстрой разработки игр с 2 d физикойИструментарий для быстрой разработки игр с 2 d физикой
Иструментарий для быстрой разработки игр с 2 d физикой
 
Windows Phone 7 Game Development
Windows Phone 7 Game DevelopmentWindows Phone 7 Game Development
Windows Phone 7 Game Development
 
Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)Особенности тестирования мобильных приложений (Android, iOS)
Особенности тестирования мобильных приложений (Android, iOS)
 
Тенденции и тренды
Тенденции и трендыТенденции и тренды
Тенденции и тренды
 
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
 
10293
1029310293
10293
 
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игрkranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
kranonit S02E02 Стас Чирва: Unity3D Разработка казуальных и социальных игр
 
Сloudmach Pitch for RSCh (YEES - 2010)
Сloudmach Pitch for RSCh (YEES - 2010)Сloudmach Pitch for RSCh (YEES - 2010)
Сloudmach Pitch for RSCh (YEES - 2010)
 
Earn millions with a casual gameplay
Earn millions with a casual gameplayEarn millions with a casual gameplay
Earn millions with a casual gameplay
 
Тестируем игры для мобильных устройств: от прототипа до запуска
Тестируем игры для мобильных устройств: от прототипа до запускаТестируем игры для мобильных устройств: от прототипа до запуска
Тестируем игры для мобильных устройств: от прототипа до запуска
 
Разработка игр на базе AlternativaPlatform
Разработка игр на базе AlternativaPlatformРазработка игр на базе AlternativaPlatform
Разработка игр на базе AlternativaPlatform
 
Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)Введение в тестирование мобильных игр (SQA Days-12)
Введение в тестирование мобильных игр (SQA Days-12)
 
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...
Современные базовые принципы UX-проектирования в играх, Ольга Шуберт, ведущий...
 
Разработка игр в небольшой компании
Разработка игр в небольшой компании Разработка игр в небольшой компании
Разработка игр в небольшой компании
 
NettleBox - Products
NettleBox - ProductsNettleBox - Products
NettleBox - Products
 
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игрCodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
 
Protecting your mobile game from the most common hacks
Protecting your mobile game from the most common hacksProtecting your mobile game from the most common hacks
Protecting your mobile game from the most common hacks
 
Tanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browserTanki Online — multiplayer 3D-action in browser
Tanki Online — multiplayer 3D-action in browser
 
Портирование игр на мобильные платформы
Портирование игр на мобильные платформыПортирование игр на мобильные платформы
Портирование игр на мобильные платформы
 
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессингаКРИ 2010. Разработка технологической платформы в условиях временного прессинга
КРИ 2010. Разработка технологической платформы в условиях временного прессинга
 

More from IT Share

Cоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр ДежуркоCоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр ДежуркоIT Share
 
Pooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаPooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаIT Share
 
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиIT Share
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...IT Share
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеIT Share
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...IT Share
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...IT Share
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных IT Share
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеIT Share
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming WebIT Share
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.IT Share
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...IT Share
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр КолесеньIT Share
 
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр КаскевичIT Share
 

More from IT Share (14)

Cоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр ДежуркоCоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр Дежурко
 
Pooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаPooling is magic, Максим Клыга
Pooling is magic, Максим Клыга
 
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming Web
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
 

Citrus Game Engine, Юрий Шумовский