SlideShare a Scribd company logo
LimeJS — фреймворк для
  разработки HTML5 игр




       Юрийчук Павел
            Ciklum
      Проект BoosterMedia
О себе

●
    Flex/Flash developer, Сasino games framework
    в 2k-group
●
    Mobile games developer, Сasual games в
    Ciklum
●
    Как найти :
    ●
        Facebook
    ●
        Twitter
    ●
        gmail
Плюшки

●
    Архитектура
●
    Обьекты на сцене и взаимодействие между
    ними
●
    Renderers и как они работают
●
    События
●
    Инструментарий
●
    Кое что еще ;)
LimeJS

●
    JavaScript framework для разработки кросс-
    платформенных игр на основе
    google closures library
●
    Разработчик — компания DigitalFruit
●
    Первый публичный коммит в github —
    19 января 2011
●
    https://github.com/digitalfruit/limejs
●
    http://www.limejs.com/
●
    API Docs
Архитектура

●
    Легко расширяемая функциональность
●
    Кросс-платформенность
●
    Отделена отрисовка обьектов
●
    Эффективность работы отрисовщика
Lime.JS
Пользовательский интерфейс

●
    Структура UI отделена от фактического
    представления, навигация по ней:
    ●   AppendChild()
    ●   RemoveChild()
    ●   RemoveChildAt()
    ●   Children_[]/getParent()
●
    Добавление и удаление слушателей событий:
    ●   Goog.events.listen/goog.events.unlisten
    ●   AddEventListener/removeEventListener
Отрисовка объектов

●
    Поддерживаются следующие типы
    отрисовщиков UI:
    ●
        DOM = HTML + CSS3
    ●
        Canvas = все отрисовываем в объектах Сanvas
    ●
        WebGL - на стадии разработки и не стабилен
●
    При изменении свойств объекта он
    помечается как “dirty” что приводит к его
    перерисовке
Пример: Казаки
Как работает отрисовка
Profit!

●
    Отрисовывается только то, что было
    изменено
●
    Одинаковый подход как для простых так и
    для сложных обьектов
●
    Независимость от выбранного отрисовщика
Profit!

●
    Отрисовывается только то, что было
    изменено
●
    Одинаковый подход как для простых так и
    для сложных обьектов
●
    Независимость от выбранного отрисовщика
События

●
    Один и тот же обработчик на много событий сразу
    ['touchstart','touchend','touchcancel','touchmove']
●
    По умолчанию this установлен на event.target
●
    При использовании Canvas не надо менять код !
Примеры

●   goog.events.listen(heroesContainer,
    ['touchstart','mousedown'],this.handleHero
    Click_,false,this)
●   heroesContainer.addEventListener('mousedow
    n', this.handleHeroClick_,false,this)
Еще раз о Rendering'e
●
    Для чего лучше DOM:
    ●
        Качественный scale и другие транфсормации
    ●
        IOS - скорость СSS3 трансформаций выше чем js code +
        style
    ●
        Нет ограничений на размер области отрисовки
●
    Для чего Canvas:
    ●
        Быстрее scaling, но его качество хуже
    ●
        Быстрее отрисовка большого множества обьектов
    ●
        Есть ограниченя на размер области отрисовки
Примеры

●
    Пользовательский интерфейс лучше
    рисовать через DOM — почти наверняка
    будут слайдеры, эффекты
●
    Отрисовка сцены игры — лучше в Canvas,
    если вас устраивает скорость
●
    Canvas — позволяет сделять скриншот на
    стороне клиента!
Инструменты

●
    Скрипт lime.py
    ●
        Init — инициализация фреймворка, скачивает
        зависимости
    ●
        Create — создать новый проект
    ●
        Update — обновление зависимостей внутри
        проекта
    ●
        Compile — компиляция существующего, можно
        создавать динамический прелоадер
    ●
        Gensoy — внедрение json & css в проект, меньше
        файлов
Box2D

●
    Порт С++ проекта http://box2d.org/ на
    JavaScript
●
    Исходники здесь
●
    Интегрирован в LimeJS как third-party library,
    скачивается на этапе инициализации
●
    http://sourceforge.net/projects/box2d-js/ 2008
●
    https://github.com/thinkpixellab/pl/tree/master/src/box2d/collision
Box2D::JS::Features

●
    C++ полный список здесь
●
    Коллизии и контакт объектов
●
    Системы частиц
●
    Моделирование механики в играх
Google closures library

●
    Автоматизированное управление завимостями
●
    XML — XPath, AJAX — xhrIo, JSON — native / json parser
●
    DataStructures
    ●   Array, Vector, Size, Coordinate
    ●   Map, AVL-tree, Pool, Queue, Heap, Collection
●
    Templates
●
    Storage
●
    Cryptogrpahy
●
    Graphics
●
    i18n - internationalization
Что надо будет добавлять самому

●
    Загрузка ресурсов и их обработка
●
    Обработку Spritesheet если у вас не
    поддерживаемый генератор
●
    Навигация а-ля getChildById/getElementById
    и прочее
●
    Компонент lime.ui.Scroller, lime.Layer и
    lime.Label— подлежат доработке
    напильником
●
    Звук для iOS — таблетка тут
Lime.JS

More Related Content

ODP
Pavel yuriychuk svg in game development
PDF
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
PDF
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
PPTX
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
PDF
Павел Юрийчук - Разработка приложений под мобильные браузеры
PDF
MVC in JavaScript
PPTX
Gwt jug basic
ODP
Разработка для Sailfish OS на примере мессенджера для социальной сети ВКонтакте
Pavel yuriychuk svg in game development
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
Microsoft Edge и платформа веб-приложений в Windows 10 / Константин Кичинский...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
Павел Юрийчук - Разработка приложений под мобильные браузеры
MVC in JavaScript
Gwt jug basic
Разработка для Sailfish OS на примере мессенджера для социальной сети ВКонтакте

What's hot (20)

PDF
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
PDF
Сделай дизайнеру приятно: Красивые веб-формы
PDF
Знакомство с Tizen
PDF
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
PDF
Tizen Mobile Application Lifecycle by Kirill Danilov
PPTX
WebGL - создание 3D графики в браузере
PDF
Скриншоты как сервис
PDF
JavaScript завтра / Сергей Рубанов (Exante Limited)
PPTX
AngularJS
PPTX
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
PDF
Desktop app based on node js and html5
PDF
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
PDF
Bootstrap3 basics
PPTX
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
PDF
GUI Meetup Spring, Рустем Гайфутдинов
PDF
Жизнь в изоляции / Роман Дворнов (Avito)
PDF
DevOPS meetup
ODP
Kothic JS - Web Browser Crash Test
PDF
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Как взаимодействовать с графическими дизайнерами: готовим UI Kit / Артем Моло...
Сделай дизайнеру приятно: Красивые веб-формы
Знакомство с Tizen
"nw.js: введение в кросс-платформенные декстопные приложения на JavaScript", ...
Tizen Mobile Application Lifecycle by Kirill Danilov
WebGL - создание 3D графики в браузере
Скриншоты как сервис
JavaScript завтра / Сергей Рубанов (Exante Limited)
AngularJS
Trainspotting Transporting: RabbitMQ, Akka.NET, Rx, MVI, Cycle.js
Desktop app based on node js and html5
Онлайн-кинотеатр для SmartTV на веб-технологиях / Михаил Лабанов (Ayyo)
Bootstrap3 basics
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
GUI Meetup Spring, Рустем Гайфутдинов
Жизнь в изоляции / Роман Дворнов (Avito)
DevOPS meetup
Kothic JS - Web Browser Crash Test
Реактивный фронтенд фреймворк для людей (Константин Комелин)
Ad

Viewers also liked (7)

PDF
Jsfwdays 2013-2
PDF
Switching to angular.js silk way
PDF
Mobile Web Apps development essentials
PDF
Global logic tech talk switching to Angular.js
PDF
Full stack development
ODP
SVG in game development
PDF
Mobile web apps
Jsfwdays 2013-2
Switching to angular.js silk way
Mobile Web Apps development essentials
Global logic tech talk switching to Angular.js
Full stack development
SVG in game development
Mobile web apps
Ad

Similar to Lime.JS (20)

PPTX
Дуров Р. - Cocos2d
PPSX
Moving from Flash to HTML5 – converting large projects
PPT
Web весна 2013 лекция 10
PDF
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
PDF
JavaFX 2.0 overview
PDF
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
PDF
Использование сторонних библиотек в веб-приложении
PDF
Ренессанс графики на клиенте
PPTX
Playing in the browser
KEY
PDF
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
PDF
Flex 4 Gumbo Framework
PDF
YaC 2013 Notes
PPTX
Wargaming.net: Архитектура современных 3D движков
PDF
JavaFX Script Language
PDF
Разработка мобильных приложений на HTML5
PPT
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
PPTX
Railsclub 2012
PDF
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
PPT
Web осень 2012 лекция 10
Дуров Р. - Cocos2d
Moving from Flash to HTML5 – converting large projects
Web весна 2013 лекция 10
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
JavaFX 2.0 overview
CodeFest 2013. Агафонкин В. — Высокопроизводительные визуализации данных в бр...
Использование сторонних библиотек в веб-приложении
Ренессанс графики на клиенте
Playing in the browser
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Flex 4 Gumbo Framework
YaC 2013 Notes
Wargaming.net: Архитектура современных 3D движков
JavaFX Script Language
Разработка мобильных приложений на HTML5
CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр
Railsclub 2012
TК°Conf. Ещё не поздно учить WebGL. Антон Корзунов.
Web осень 2012 лекция 10

Lime.JS

  • 1. LimeJS — фреймворк для разработки HTML5 игр Юрийчук Павел Ciklum Проект BoosterMedia
  • 2. О себе ● Flex/Flash developer, Сasino games framework в 2k-group ● Mobile games developer, Сasual games в Ciklum ● Как найти : ● Facebook ● Twitter ● gmail
  • 3. Плюшки ● Архитектура ● Обьекты на сцене и взаимодействие между ними ● Renderers и как они работают ● События ● Инструментарий ● Кое что еще ;)
  • 4. LimeJS ● JavaScript framework для разработки кросс- платформенных игр на основе google closures library ● Разработчик — компания DigitalFruit ● Первый публичный коммит в github — 19 января 2011 ● https://github.com/digitalfruit/limejs ● http://www.limejs.com/ ● API Docs
  • 5. Архитектура ● Легко расширяемая функциональность ● Кросс-платформенность ● Отделена отрисовка обьектов ● Эффективность работы отрисовщика
  • 7. Пользовательский интерфейс ● Структура UI отделена от фактического представления, навигация по ней: ● AppendChild() ● RemoveChild() ● RemoveChildAt() ● Children_[]/getParent() ● Добавление и удаление слушателей событий: ● Goog.events.listen/goog.events.unlisten ● AddEventListener/removeEventListener
  • 8. Отрисовка объектов ● Поддерживаются следующие типы отрисовщиков UI: ● DOM = HTML + CSS3 ● Canvas = все отрисовываем в объектах Сanvas ● WebGL - на стадии разработки и не стабилен ● При изменении свойств объекта он помечается как “dirty” что приводит к его перерисовке
  • 11. Profit! ● Отрисовывается только то, что было изменено ● Одинаковый подход как для простых так и для сложных обьектов ● Независимость от выбранного отрисовщика
  • 12. Profit! ● Отрисовывается только то, что было изменено ● Одинаковый подход как для простых так и для сложных обьектов ● Независимость от выбранного отрисовщика
  • 13. События ● Один и тот же обработчик на много событий сразу ['touchstart','touchend','touchcancel','touchmove'] ● По умолчанию this установлен на event.target ● При использовании Canvas не надо менять код !
  • 14. Примеры ● goog.events.listen(heroesContainer, ['touchstart','mousedown'],this.handleHero Click_,false,this) ● heroesContainer.addEventListener('mousedow n', this.handleHeroClick_,false,this)
  • 15. Еще раз о Rendering'e ● Для чего лучше DOM: ● Качественный scale и другие транфсормации ● IOS - скорость СSS3 трансформаций выше чем js code + style ● Нет ограничений на размер области отрисовки ● Для чего Canvas: ● Быстрее scaling, но его качество хуже ● Быстрее отрисовка большого множества обьектов ● Есть ограниченя на размер области отрисовки
  • 16. Примеры ● Пользовательский интерфейс лучше рисовать через DOM — почти наверняка будут слайдеры, эффекты ● Отрисовка сцены игры — лучше в Canvas, если вас устраивает скорость ● Canvas — позволяет сделять скриншот на стороне клиента!
  • 17. Инструменты ● Скрипт lime.py ● Init — инициализация фреймворка, скачивает зависимости ● Create — создать новый проект ● Update — обновление зависимостей внутри проекта ● Compile — компиляция существующего, можно создавать динамический прелоадер ● Gensoy — внедрение json & css в проект, меньше файлов
  • 18. Box2D ● Порт С++ проекта http://box2d.org/ на JavaScript ● Исходники здесь ● Интегрирован в LimeJS как third-party library, скачивается на этапе инициализации ● http://sourceforge.net/projects/box2d-js/ 2008 ● https://github.com/thinkpixellab/pl/tree/master/src/box2d/collision
  • 19. Box2D::JS::Features ● C++ полный список здесь ● Коллизии и контакт объектов ● Системы частиц ● Моделирование механики в играх
  • 20. Google closures library ● Автоматизированное управление завимостями ● XML — XPath, AJAX — xhrIo, JSON — native / json parser ● DataStructures ● Array, Vector, Size, Coordinate ● Map, AVL-tree, Pool, Queue, Heap, Collection ● Templates ● Storage ● Cryptogrpahy ● Graphics ● i18n - internationalization
  • 21. Что надо будет добавлять самому ● Загрузка ресурсов и их обработка ● Обработку Spritesheet если у вас не поддерживаемый генератор ● Навигация а-ля getChildById/getElementById и прочее ● Компонент lime.ui.Scroller, lime.Layer и lime.Label— подлежат доработке напильником ● Звук для iOS — таблетка тут