SlideShare a Scribd company logo
1 of 58
Разработка технологической платформы в условиях временного прессинга Автор:  Кирилл Лебедев Компания:  The Web Production Email:  [email_address]
О себе ,[object Object],[object Object],[object Object]
Типовые ошибки
Типовая ошибка № 1 Пропуск системного уровня (разработка игры без технологической платформы)
Всё равно, что попросить  каменщика  построить  небоскрёб
Проблемы ,[object Object],[object Object],[object Object]
Рутина ,[object Object],[object Object],[object Object],[object Object]
Посторонний код
Дублирование кода Каждый программист начинает изобретать свои контейнеры и свою оконную систему ( три  реаллоцируемых массива и  три  оконные системы)
Типовая ошибка № 2 Разработка в отрыве от   игры
Особо тяжёлые случаи ,[object Object],[object Object]
Главное – –  это  игра , а не движок
Рекомендация Платформа должна быть заточена под  игру  или определённый  класс игр
Некоторые разработчики начинают с абстрагирования: ,[object Object],[object Object],[object Object],[object Object]
Опыт портирования Замена функции  fopen   на функцию  OpenFile   – дело  нескольких минут
Вывод Абстрагирование без конкретной цели НЕ принесёт  результат (если только результатом не является  объём  кода)
Что общего между Ничего  – вне условий  конкретной  задачи И ?
Если цель - платформа ,[object Object],[object Object]
Из жизни Система загрузки скинов == всей  остальной  программе  * * по объёму кода
В условиях временного прессинга ,[object Object],[object Object],[object Object]
Для чего нужна технологическая платформа?
Назначение № 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],Освободить программиста от рутины:
Важно Сконцентрировать внимание программиста  на самой игре
Назначение № 2 Предоставить  технологию *  для разработки игры *  – под технологией я понимаю готовый  технологический процесс
Некоторые задачи
Задача № 1 Загрузка ассетов, чтение и сохранение игровых данных
Требования ,[object Object],[object Object],[object Object]
Решения 1  2 3 4 Группируем  длительные  операции (загрузка, сохранение) в  "пачки"
Решения 1  2  3 4 ,[object Object],[object Object],[object Object]
Решения 1 2  3  4 Делегируем  "пачку"  операций отдельному  потоку
Решения 1 2 3  4 Организуем работу с потоком при помощи  асинхронного  обмена сообщениями
Игровой цикл
Преимущества 1  2 3 Не возникает взаимных  блокировок   * * - синхронизирующий объект захватывается на  короткое  время
Преимущества 1  2  3 Сообщения обрабатываются в  заданном  порядке  * * - Очередь задаёт  порядок  выполнения операций
Преимущества 1 2  3 Игра не будет  "тупить"  * * - Количество потоков  не зависит  от количестива сообщений
Задача № 2 Как описывать  игровую логику ?
"Хардкодить" в  C++ -  коде –  не лучший  вариант
Модели
Событийная модель Игра – набор обработчиков различных  событий
Вывод Событийная модель порождает проблему   "узников" оператора   if   * *  http://www.triz-ri.ru/themes/method/creative/creative57.asp   *  http://www.triz-ri.ru/themes/method/creative/creative57.asp
Вопрос Что делать, если операцию нужно выполнить при наступлении  нескольких  событий?
Конвейерная модель Игра – фиксированная последовательность элементарных  операций  * * Каждой операции соответствует свой  набор условий
Конвейерная модель Игровая логика представляется в виде  таблицы правил
Алгоритм Построение конвейерной модели
1  2 3 Выявляем  элементарные  операции
1  2  3 Выстраиваем из них определённую  последовательность
1 2  3 Задаём  условия  выполнения для каждой операции
Пример Описание игровой логики для мини-игры  "Нарезка"  игры "Подготовка Стола" * * аналог  Cooking Mama
Сценарий нарезки картофеля Автоматически Отправка 8 Взмах Шинкование 7 Автоматически Поворот Y-90 6 Движение курсора Разрезание 5 Автоматически Поворот Z-90 4 Автоматически Убирание половинки 3 Движение курсора Разрезание 2 Автоматически Доставка 1 Событие Действие №
Запись сценария в  CSV- файле     YES Potato_dispatch Anim YES     Potato_slice Anim     YES Potato_rotate_Y_90 Anim   YES   Potato_cut Anim     YES Potato_rotate_Z_90 Anim     YES Potato_remove_half Anim   YES   Potato_cut_half Anim     YES Potato_delivery Anim       Potato Model Stroke Arrow Auto Name Type
Отличие от таблицы переходов
Таблица переходов ориентирована на состояния Действие 3     Состояние 3   Действие 2   Состояние 2     Действие 1 Соятояние 1 Условие 3 Условие 2 Условие 1  
Конвейерная модель ориентирована на операции Да     Состояние 3 Действие 3   Да   Состояние 2 Действие 2     Да Состояние 1 Действие 1 Условие 3 Условие 2 Условие 1 Состояние  
Пример Логика поведения мыши в Комнате Переодевания
Задача ,[object Object],[object Object]
Сценарий поведения мыши   В конце Нет Приходит   В конце Да Меняет   В начале Да Уходит Да В начале Нет Хвалит Нет В начале Нет Стоит Примерена одежда? Где находится? Игрок хочет поменять одежду? Операция
 
Ссылки http://www.triz-ri.ru/authors/lebedev_art.asp

More Related Content

Similar to КРИ 2010. Разработка технологической платформы в условиях временного прессинга

SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаAndrey Karpov
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Андрей Бростовский
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++Andrey Karpov
 
Convertor
ConvertorConvertor
Convertoraaa
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийAndrei Pugachev
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложенийMichael Karpov
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...corehard_by
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИСYandex
 
Некриптографическое исследование носителей православной криптографии
Некриптографическое исследование носителей  православной криптографииНекриптографическое исследование носителей  православной криптографии
Некриптографическое исследование носителей православной криптографииSergey Soldatov
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаSergey Platonov
 
Mobile testing. Tips and tricks
Mobile testing. Tips and tricksMobile testing. Tips and tricks
Mobile testing. Tips and tricksSQALab
 
5 oleg nikiforov - automating routine tasks for mobile apps testing
5   oleg nikiforov - automating routine tasks for mobile apps testing5   oleg nikiforov - automating routine tasks for mobile apps testing
5 oleg nikiforov - automating routine tasks for mobile apps testingIevgenii Katsan
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...DevGAMM Conference
 
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)Ontico
 

Similar to КРИ 2010. Разработка технологической платформы в условиях временного прессинга (20)

SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
ADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кодаADD 2011: Статический анализ Си++ кода
ADD 2011: Статический анализ Си++ кода
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»
 
Эффективный C++
Эффективный C++Эффективный C++
Эффективный C++
 
Convertor
ConvertorConvertor
Convertor
 
Автоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложенийАвтоматизация тестирования iOS и Android приложений
Автоматизация тестирования iOS и Android приложений
 
отладка Mpi приложений
отладка Mpi приложенийотладка Mpi приложений
отладка Mpi приложений
 
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...Windbg: когда у нас не воспроизводится. Александр Головач ➠  CoreHard Autumn ...
Windbg: когда у нас не воспроизводится. Александр Головач ➠ CoreHard Autumn ...
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
Некриптографическое исследование носителей православной криптографии
Некриптографическое исследование носителей  православной криптографииНекриптографическое исследование носителей  православной криптографии
Некриптографическое исследование носителей православной криптографии
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Mobile testing. Tips and tricks
Mobile testing. Tips and tricksMobile testing. Tips and tricks
Mobile testing. Tips and tricks
 
5 oleg nikiforov - automating routine tasks for mobile apps testing
5   oleg nikiforov - automating routine tasks for mobile apps testing5   oleg nikiforov - automating routine tasks for mobile apps testing
5 oleg nikiforov - automating routine tasks for mobile apps testing
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
Продуктивность и производительность в новых скриптовых языках / Антон Юдинцев...
 
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)
Оптимизация производительности фронтенда / Игорь Алексеенко (HTML Academy)
 

КРИ 2010. Разработка технологической платформы в условиях временного прессинга