Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

игровая логика, проблемы и решения

2,712 views

Published on

Анализ средств для создания портирования и изменения игровой логики

Published in: Technology
  • Be the first to comment

  • Be the first to like this

игровая логика, проблемы и решения

  1. 1. Обзор технологий Игровая логика, проблемы и решения
  2. 2. О докладчике Владимир Кожаев Аспирант Института Кибернетики имени В.М. Глушкова E-mail:vkozhaev@gmail.com
  3. 3. Постановка задачиКазуальные игры со сложной логикойЛогические: шахматы, шашки, домино, карточные, в дуракаРолевые игрыКвестыТейкуныХарактеризуютсяСложные правила игрыМного платформ: IoC,Flash, Android, Unity3d, JavaScript|HTML-5, Windows Phone etc.Техническое задание меняется по ходу выполнения игры
  4. 4. Постановка задачиЛогика меняется по ходу созданияигры. Нужно менять быстроПереносится на разныеплатформы. Все то – же, но нужнопереписывать. Как этого избежать?
  5. 5. Постановка задачиПрограммисты vs дизайнерыПоэты vs технариКак программисту понять, что хочет геймдизайнер?Как убедиться, что понято правильно?Как показать противоречивость требований? Нужно средство связи! Простое – чтоб понимали дизайнеры Мощное – чтоб программировать
  6. 6. Постановка задачиНужно средство создания игровой логики, такое чтоб:Логику можно быстро создаватьПокрывало несколько платформУдобное для дизайнеров и программистов
  7. 7. Чем пользуются сейчас?Системы основанные на правилахМультиплатформенные средыКроссплатформенные средыМультиплатформенные системыИгровые фреймворкиЯзыки общего назначения с динамической типизациейЯзыки специального назначения с динамической типизациейПрименение автоматного подхода
  8. 8. Системы основанные на правилахБазы знаний, buisnes rules systemsПравила вида “если - то”Вывод одного правила может анализироваться другимДля задания множества правил используется декларативный языкЛогика на декларативном языке, конкретная работа – на декларативномДля осуществления логического вывода используется алгоритм РетеJess, DRoos, HamurrapyRules, Oracle busines rules и ещё несколько десятков
  9. 9. Системы основанные на правилах+ -Выбор средств на любой Нет реализации под вкус большинствоБольшинство бесплатные казуальных платформШирокие возможности Сложны в изученииНаличие коммьюнити, Заточены под бизнес литературы, форумовХорошая идея
  10. 10. Мультиплатформенные системыОдин язык – много разных платформ.Adobe Alchemy: C++ во флешHaXe – на Flash, JavaScript, PHP,С#, C++Marmalade – IoC, Android, Symbean, BadaCorona 2D - IoC, Android
  11. 11. Мультиплатформенные системы+ - Отсутствует поддержка нативныхКодим один раз - работает везде возможностей Под разные платформы – разные библиотеки Не упрощают разработку собственно логики
  12. 12. Кросплатформенные системыКод в байткод – байткод – в интерпретатор.Иногда интерпретатор встраивается в инсталляциюAdobe Air, Unity3DJava – почти
  13. 13. Кросплатформенные системы+ -Пишем один раз, работает Большой объем файла везде инсталляцииДействительно везде Усложнена поддержкаСообщество нативных возможностейДокументация Собственно логикуИнструментальные средства разрабатывать ничем не легче
  14. 14. Игровые фреймворкиНабор библиотек и утилит облегчающих разработку игрПредустановленные события: столкновения, поддержка клавиш, поиск пути, система частицПоиск путиИ многое другоеDaiquiri, Flixel, Pixelblitz, PushButton Engine,Bold Pixel Engine v1
  15. 15. Игровые фреймворкиДействительно упрощает Для сложных игр разработку игр возможностей недостаточноБольшой выбор ГлюкавыеБесплатные Дизайнерам не понятны Логика размазана по коду
  16. 16. Языки общего назначение с динамической типизациейLua, Python, JavaScript, SсhemeНа них пишутся скриптыСкрипты интерпретируютсяИнтерпретатор встроен в игруСкрипты декларативные – вызывают методы базового языка
  17. 17. Языки общего назначение с динамической типизацией+ - Спагетти – кодПростые Медленный флеш плеер на мобилке +Есть реализация под все медленный интерпретатор – платформы ахтунг!!!Подходят в качестве скриптов верхнего уровня: верстка GUI, графика и т.п.
  18. 18. Языки специального назначения с динамическойтипизациейФункциональныеЛогическиеScheme, Common Lisp, ProLog, Scala, ErlangСоздаем Domain Specific LanguageПишем скрипт в декларативном стилеСкрипт выполняется интерпретатором
  19. 19. Языки специального назначения с динамическойтипизацией+ -Лаконичный синтаксис Нет средств для большинстваБыстрее, чем ЯП общего назначения казуальных платформЗаточенность под искуственный Сложны для изучения интеллектDSL простые – понятны дизайнеру Подходит для очень опытной команды
  20. 20. Автоматное программированиеИгровым агентом управляет конечный автоматОперации производятся на: входе в состояние, выходе из состояния, переходе из состояния A в B, переходе из состояния в себя – жеДля задания автомата применяется декларативный языкСкрипт трансформируется в структуру данных на базовом языкеЧтение скрипта происходит один разКонечный автомат представляется в виде ориентированного графа
  21. 21. Автоматное программированиеПреимуществаБыстро работаетОриентированный граф – стрелочная схема – понятен дизайнерамРазработанная, богатая теорияПрограммисты изучают в институте
  22. 22. Автоматное программированиеПонятен дизайнерам!!!
  23. 23. Автоматное программированиеЧто есть сейчас?Множество средствВизуализация, моделирование, применениеНе подходят :(Почему?Нет инструмента единого для всех языковОбеспечивают возможности не нужные для игрСложны в изученииНе поддерживаются
  24. 24. ASMLASML – Abstract State Machine Languagehttp://research.microsoft.com/en-us/projects/asml/Разработан компанией MicrosoftФункциональныйДекларативный – вызывает методы императивных языковОсновное предназначение – создание исполняемых спецификацийМинусыЕсть только для платформы .NETНужно изучатьНе заточен под игрыВывод: хорош, но не для игр
  25. 25. UniModhttp://unimod.sourceforge.net/Разработка Шалыто А.АПлагин под EclipseВизуальный редактор графа состоянийВходные файлы в формате XMLНа выходе Jar – файлыИли компиляция под SymbeaМинусы:Не поддерживаетсяТолько Java и SymbeanНеоправданно сложный для игрНет документации
  26. 26. РезюмеСуществующие на рынке средства не в полной мере удовлетворяют потребностямИли для одной платформыИли неудобныеИли медленныеИли недокументированные
  27. 27. Что предлагаю я Автоматное программирование DSL на базе XML XML читается один раз Транслируется в структуру данных на базовом ЯП Структура данных – свойство агента Можно менять структуру данных в процессе игры Другое свойство – состояние Управляющие воздействия при входе в состояние, выходе из него, переходе из одного состояния в другое и если состояние не меняется Язык декларативный, при изменении состояний вызываются функции базового я.п. На каждый тик проходим массив обьектов меняем состояния, если потребуется и выполняем управляющие воздействия
  28. 28. Что предлагаю яПреимущества подходаРаботает быстрее, чем интерпретаторПарсинг XML легко перенести на любой языкDSL – простой, понятен для дизайнераМожно сделать графический редакторКод опенсорсный – меняйте как хотите
  29. 29. Что уже сделаноЯзык на базе XML – пример описания состояния<state name="move_to_tower"> <!-- Имя состояния --><usecases> <usecase name="charging"> <!-- описание перехода --> <roole> ((not energyIsLow) and (not needRepairTower)) or (goalIsGetted) </roole> <methods> <!-- методы выполняемые при переходе --> <method name="endMoving"/> </methods> </usecase></usecases><state_methods> <!-- Методы выполняемые --> <methods_before> <method name="beforeMoving"/> <!-- перед входом в состояние --> </methods_before> <methods_after> <!-- перед входом в новое состояние--> <method name="afterMoving"/> </methods_after> <methods_in_process> <!-- На каждый тик, если состояние не изменилось --> <method name="move"/> </methods_in_process> </state_methods></state>
  30. 30. Что уже сделано?Написан код для flashhttps://github.com/vladimirkozhaev/casualintellectЧто в ближайшей перспективе Создание текстового DSL языка - xml не удобен для программирования Портирование на JavaScript Портирование на Android Создание графического редактора на базе визуального языка ДРАКОН(Дружелюбный Русский Алгоритмический язык Который обеспечивает наглядность)
  31. 31. Вопросы, предложения, критика?Email:vkozhaev@gmail.comПишите - буду рад

×