Corona SDK: Быстрая разработка
кроссплатформенных игр
Сергей Лалов – Spiral Code Studio
@SergeyLerg
08.12.2013
Что такое Corona SDK
SDK, позволяющее создавать кроссплатформенные
приложения
Поддержка Android и iOS (скоро Windows)
Возм...
Lua – это хорошо!
Хорошо зарекомендованный
Простой, легкость освоения
Кроссплатформенный и встраиваемый
Доступно много код...
На что способна Corona?
Довольно высокая производительность
Достаточно обширный API
У Starter версии наиболее значимое отл...
Сторонние SDK и не только
Ad: Chartboost, Vungle, iAd, AdMob, RevMob…
Facebook, Twitter, GameCenter, Google Game Services
...
Миф #1 - Disclaimer
Нет, мне не заплатили, чтобы я рассказывал про корону.
Она мне правда нравится.
Миф #2 – Corona медленная,
потомучто кроссплатформенная
Ядро короны написано на чистом С++ и OpenGL
Для системных вызовов ...
Сравнение производительности
с Unity2D
Создание спрайтов по нажатию на экран
Спрайт 128x128px 16 кадров png
Тестирование н...
Миф #3 – На Corona нет
достойных игр
Corona Hall of Fame
http://www.coronalabs.com/halloffame/
Fun Run, Major Magnet, Blas...
Миф #4 – Corona только лишь
для игр
Widgets
Можно создавать свои
Проблемы с нативными элементами есть, но они
решаемы
По с...
Одновременная разработка
для iOS и Android
Для подавляющего большинства проектов нет смысла
отдельно создавать версии под ...
Быстрая разработка
На Corona разрабатывать действительно быстро, в этом
способствуют быстрый и достаточно точный симулятор...
Зоопарк экранов
Основная проблема при кроссплатформенной разработке это обилие
различных разрешений экранов устройств.
Реш...
Зоопарк экранов
Иногда, когда времени особенно нет, используется
ZoomStretch на весь экран. Для некоторых приложений это
р...
Зоопарк экранов
Тогда на помощь приходит хитрость. В файле config.lua
добавить код, который бы понимал с каким соотношение...
Config.lua 1
local w, h = display.pixelWidth, display.pixelHeight
if w >= 480 then
w = w * 0.5
h = h * 0.5
end
if w >= 480...
Config.lua 2
local cw, ch = 320, 480
local w, h = display.pixelWidth, display.pixelHeight
if w == 768 and h == 1024 then
c...
Config.lua 3
application = {
content = {
width = 384, height = 512,
scale = 'letterbox',
imageSuffix = {['@2x'] = 1.2, ['@...
Опорные координаты
_W = display.contentWidth  -- Virtual width
_H = display.contentHeight -- Virtual height
_T = display.s...
Кнопка назад
Интегрирование в Storyboard
Runtime:addEventListener('key', function (event)
  if event.keyName == 'back' and...
Оптимизация
Кэш переменных
Использование простых for i = n, m do циклы
Выравнивание изображений до 2^n
Потребление памяти ...
Плох тот разработчик,
что не мечтает сделать свой фреймворк
Важным фактором для скорости разработки является
наличие таког...
Special thanks, Books
Barry Swan aka Rakoonic http://www.playlevel.com/
Nevin Flanagan aka Alestane - Corona SDK Hotshot
h...
Спасибо за внимание!
Сергей Лалов – Spiral Code Studio
@SergeyLerg
08.12.2013
E-mail для вопросов и предложений о сотрудни...
Upcoming SlideShare
Loading in...5
×

С.Лалов "Corona SDK для разработки кроссплатформенных приложений", DUMP-2014

712

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
712
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

С.Лалов "Corona SDK для разработки кроссплатформенных приложений", DUMP-2014

  1. 1. Corona SDK: Быстрая разработка кроссплатформенных игр Сергей Лалов – Spiral Code Studio @SergeyLerg 08.12.2013
  2. 2. Что такое Corona SDK SDK, позволяющее создавать кроссплатформенные приложения Поддержка Android и iOS (скоро Windows) Возможность разработки на Windows и Mac OS X 2D графика (даже 2.5D) Язык Lua Быстрый и удобный симулятор Компиляция без запуска Xcode
  3. 3. Lua – это хорошо! Хорошо зарекомендованный Простой, легкость освоения Кроссплатформенный и встраиваемый Доступно много кода Динамический Малый вес в приложении 1.4MB На iOS нельзя JIT – LuaJIT, JavaScript V8
  4. 4. На что способна Corona? Довольно высокая производительность Достаточно обширный API У Starter версии наиболее значимое отличие – это только лишь отсутствие внутриигровых покупок Enterprise версия позволяет добавлять собственные плагины
  5. 5. Сторонние SDK и не только Ad: Chartboost, Vungle, iAd, AdMob, RevMob… Facebook, Twitter, GameCenter, Google Game Services In-Apps: Apple, Google, Amazon, OUYA Flurry, ZIP, SQLite, JSON, LFS, Bit, Videos, Maps Storyboard, Transitions, Timers, Physics, Joysticks И др.
  6. 6. Миф #1 - Disclaimer Нет, мне не заплатили, чтобы я рассказывал про корону. Она мне правда нравится.
  7. 7. Миф #2 – Corona медленная, потомучто кроссплатформенная Ядро короны написано на чистом С++ и OpenGL Для системных вызовов написаны обёртки на Objective-C и Java Lua используется только для дополнительных библиотек вроде Widgets, Timers и Transitions По факту Lua очень редко является узким звеном у приложения
  8. 8. Сравнение производительности с Unity2D Создание спрайтов по нажатию на экран Спрайт 128x128px 16 кадров png Тестирование на iPad 2 Unity2D - 3800 объектов 10fps, 1650 - 25fps Corona - 4200 объектов 10fps, 1750 - 25fps
  9. 9. Миф #3 – На Corona нет достойных игр Corona Hall of Fame http://www.coronalabs.com/halloffame/ Fun Run, Major Magnet, Blast Monkeys, The Lost City Freeze, Official apps for The Lorax, Fling a Fish, BraveSmart и др.
  10. 10. Миф #4 – Corona только лишь для игр Widgets Можно создавать свои Проблемы с нативными элементами есть, но они решаемы По сути ограничение только в фантазии
  11. 11. Одновременная разработка для iOS и Android Для подавляющего большинства проектов нет смысла отдельно создавать версии под каждую из платформ. Средства кроссплатформенной разработки дико экономят время разработчиков. Corona – это быстрое, удобное и гибкое средство разработки. Отличия кода под ту или иную платформу минимальны и заключаются непосредственно в особенностях различий самих платформ (их возможностей).
  12. 12. Быстрая разработка На Corona разрабатывать действительно быстро, в этом способствуют быстрый и достаточно точный симулятор, автоматический перезапуск симулятора при изменении файлов проекта (отключаемо), отсутствие компиляции для запуска в симуляторе, быстрая компиляция iOS и Android сборок без участия Xcode. Даже когда в проекте возникает ошибка, приложение не рушится, давая в некоторых случаях возможность нормально продолжить работу. Можно использовать любой текстовый редактор. Мой выбор – ZeroBrane Studio.
  13. 13. Зоопарк экранов Основная проблема при кроссплатформенной разработке это обилие различных разрешений экранов устройств. Решение в использовании Content Scaling, но не обычного, а хитрого. При обычном масштабировании задаётся виртуальная область координат экрана, обычно равная разрешению экрана iPhone 3GS – 320x480px, а дальше это дело растягивается под каждый экран. Основные режимы это: ZoomStretch – занимает весь экран, не сохраняет пропорции ZoomEven – занимает весь экран, сохраняет пропорции Letterbox – занимает не весь экран, сохраняет пропорции
  14. 14. Зоопарк экранов Иногда, когда времени особенно нет, используется ZoomStretch на весь экран. Для некоторых приложений это работает. Но по хорошему всегда нужно использовать Letterbox. Если с этим ничего не делать, то, например, игра написанная под iPhone будет иметь чёрные полосы с мусором по длинным краям экрана на iPad. Типичное решение – расширить фон так чтобы эта чернота исчезла. Но это не решает другой проблемы – такие приложения становятся немного размытыми на iPad из-за нецелого фактора масштабирования.
  15. 15. Зоопарк экранов Тогда на помощь приходит хитрость. В файле config.lua добавить код, который бы понимал с каким соотношением сторон мы имеем дело и выбирал бы соответствующие width и height – 320x480 для iPhone и 384x512 для iPad. При этом код должен уметь позиционировать свои элементы динамически – с привязкой к углам и краям экрана.
  16. 16. Config.lua 1 local w, h = display.pixelWidth, display.pixelHeight if w >= 480 then w = w * 0.5 h = h * 0.5 end if w >= 480 then w = w * 0.5 h = h * 0.5 end application = { content = { width = w, height = h, scale = 'letterbox', imageSuffix = {['@2x'] = 1.2, ['@4x'] = 2.5}, fps = 60 }}
  17. 17. Config.lua 2 local cw, ch = 320, 480 local w, h = display.pixelWidth, display.pixelHeight if w == 768 and h == 1024 then cw, ch = 384, 512 elseif w == 600 and h == 1024 then cw, ch = 400, 512 elseif w == 720 and h == 1280 then cw, ch = 360, 640 end application = { content = { width = cw, height = ch, scale = 'letterbox', imageSuffix = {['@2x'] = 1.2, ['@4x'] = 2.5}, fps = 60 }}
  18. 18. Config.lua 3 application = { content = { width = 384, height = 512, scale = 'letterbox', imageSuffix = {['@2x'] = 1.2, ['@4x'] = 2.5}, fps = 60 }} iPad является самым «квадратным» среди мобильных устройств, с соотношением сторон 4:3. Все остальные устройства более широкие и, получается, при этой схеме не происходит масштабирования вверх, только downsize. Это, например, отлично подходит для e-books. 2776х1536px – размер фонового изображения @4x, который покроит все устройства при данной конфигурации.
  19. 19. Опорные координаты _W = display.contentWidth  -- Virtual width _H = display.contentHeight -- Virtual height _T = display.screenOriginY -- Top _L = display.screenOriginX -- Left _R = display.viewableContentWidth - _L  -- Right _B = display.viewableContentHeight - _T -- Bottom   _SW = _R - _L -- Screen width in virtual coordinate system _SH = _B - _T -- Screen height in virtual coordinate system   _CX = _W / 2 – Screen center _CY = _H / 2 display.pixelWidth  -- Device native width display.pixelHeight -- Device native height
  20. 20. Кнопка назад Интегрирование в Storyboard Runtime:addEventListener('key', function (event)   if event.keyName == 'back' and event.phase == 'down' then     local scene= storyboard.getScene(storyboard.getCurrentSceneName())     if scene and type(scene.backPressed) == 'function' then       scene:backPressed()       return true     end   end end) function scene:backPressed()   storyboard.gotoScene('scenes.menu', 'slideRight', 500) end
  21. 21. Оптимизация Кэш переменных Использование простых for i = n, m do циклы Выравнивание изображений до 2^n Потребление памяти и её измерение Сборщик мусора Минимизируйте количество групп
  22. 22. Плох тот разработчик, что не мечтает сделать свой фреймворк Важным фактором для скорости разработки является наличие такого мини фреймворка - набора вспомогательных функций, целых кусков кода или просто подходов к разработке сильно ускоряет процесс. Кнопки SlideView, Parallax Обёртки над newImage и newText Меню выбора уровня Диалоговые окна ООП И т.д.
  23. 23. Special thanks, Books Barry Swan aka Rakoonic http://www.playlevel.com/ Nevin Flanagan aka Alestane - Corona SDK Hotshot http:// www.packtpub.com/corona-software-development-kit-hotshot/b Dr. Burton - Mobile App Development with Corona http ://www.burtonsmediagroup.com/books/mobile-app-developmen / https://github.com/Lerg
  24. 24. Спасибо за внимание! Сергей Лалов – Spiral Code Studio @SergeyLerg 08.12.2013 E-mail для вопросов и предложений о сотрудничестве sergey.lalov@gmail.com IRC Чат: freenode.net #corona Lerg Поболтать можно тут http://www.coronalabs.com/community/irc/ http://coronalabs.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×