КРИ 2010. Разработка технологической платформы в...
TRANSCRIPT
![Page 1: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/1.jpg)
Разработка технологической
платформы в условиях временного прессинга
Автор: Кирилл ЛебедевКомпания: The Web Production
Email: [email protected]
![Page 2: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/2.jpg)
О себе
Разработчик ПО (стаж – 14 лет)
Работаю в компании The Web Production
Отвечаю за разработку 3D игр
![Page 3: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/3.jpg)
Типовые ошибки
![Page 4: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/4.jpg)
Типовая ошибка № 1
Пропуск системного уровня
(разработка игры без технологической платформы)
![Page 5: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/5.jpg)
Всё равно, что попросить каменщика построить небоскрёб
![Page 6: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/6.jpg)
Проблемы
1. Рутина2. Посторонний код3. Дублирование кода
![Page 7: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/7.jpg)
Рутина
Загрузка ассетов Сохранение игры Загрузочный экран Сообщения об ошибках
![Page 8: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/8.jpg)
Посторонний код
![Page 9: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/9.jpg)
Дублирование кода
Каждый программист начинает изобретать свои контейнеры и свою
оконную систему
(три реаллоцируемых массива и три оконные системы)
![Page 10: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/10.jpg)
Типовая ошибка № 2
Разработка в отрыве от игры
![Page 11: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/11.jpg)
Особо тяжёлые случаи
1. Разработка платформы ради самой платформы
2. Разработка платформы на все случаи жизни
![Page 12: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/12.jpg)
– это игра, а не движок
Главное –
![Page 13: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/13.jpg)
Платформа должна быть заточена под игру или определённый класс игр
Рекомендация
![Page 14: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/14.jpg)
Некоторые разработчики начинают с абстрагирования:
от файловой системы;от устройств ввода;от системы управления памятью;от ....................................................
![Page 15: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/15.jpg)
Опыт портирования
Замена функции fopen на функцию OpenFile – дело нескольких минут
![Page 16: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/16.jpg)
Абстрагирование без конкретной цели НЕ принесёт результат
(если только результатом не является объём кода)
Вывод
![Page 17: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/17.jpg)
Что общего между
Ничего – вне условий конкретной задачи
И ?
![Page 18: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/18.jpg)
Если цель - платформа
разработчики "полируют" фичи, а не создают продукт
![Page 19: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/19.jpg)
Из жизни
Система загрузки скинов == всей остальной программе *
* по объёму кода
![Page 20: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/20.jpg)
В условиях временного прессинга
Концентрируемся на задаче, а не на красивостях
Разрабатываем платформу, под конкретную игру или серию игр
По-максимуму используем стандартные библиотеки
![Page 21: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/21.jpg)
Для чего нужна технологическая платформа?
![Page 22: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/22.jpg)
Назначение № 1
загрузки и выгрузки ассетов; чтения и сохраненияч игровых данных; отображения loading screen'а; обработки ошибок; и т.д.
Освободить программиста от рутины:
![Page 23: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/23.jpg)
Важно
Сконцентрировать внимание программиста на самой игре
![Page 24: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/24.jpg)
Назначение № 2
Предоставить технологию* для разработки игры
* – под технологией я понимаю готовый технологический процесс
![Page 25: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/25.jpg)
Некоторые задачи
![Page 26: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/26.jpg)
Задача № 1
Загрузка ассетов, чтение и сохранение игровых данных
![Page 27: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/27.jpg)
Требования
не должна "тормозить" игру;должна сопровождаться
анимированной картинкой;должно выдаваться сообщение в
случае ошибки
![Page 28: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/28.jpg)
Решения 1 2 3 4
Группируем длительные операции (загрузка, сохранение) в "пачки"
![Page 29: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/29.jpg)
Решения 1 2 3 4
Исполняем "пачку" в определённый момент времени:
1. при переходе в другую локацию;2. при запуске мини-игры
![Page 30: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/30.jpg)
Решения 1 2 3 4
Делегируем "пачку" операций отдельному потоку
![Page 31: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/31.jpg)
Решения 1 2 3 4
Организуем работу с потоком при помощи асинхронного обмена сообщениями
![Page 32: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/32.jpg)
Игровой цикл
Начало
Играем?
Получить сообщения
...
Отправить сообщения
Конец
Да
Нет
Получаем сообщения от загрузочного потока
Отправляем сообщения загрузочному потоку
![Page 33: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/33.jpg)
Преимущества 1 2 3
Не возникает взаимных блокировок *
* - синхронизирующий объект захватывается на короткое время
![Page 34: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/34.jpg)
Преимущества 1 2 3
Сообщения обрабатываются в заданном порядке *
* - Очередь задаёт порядок выполнения операций
![Page 35: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/35.jpg)
Преимущества 1 2 3
Игра не будет "тупить" *
* - Количество потоков не зависит от количестива сообщений
![Page 36: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/36.jpg)
Задача № 2
Как описывать игровую логику?
![Page 37: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/37.jpg)
"Хардкодить" в C++ - коде – не лучший вариант
![Page 38: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/38.jpg)
Модели
![Page 39: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/39.jpg)
Событийная модель
Игра – набор обработчиков различных событий
![Page 40: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/40.jpg)
Событийная модель порождает проблему "узников" оператора if *
* http://www.triz-ri.ru/themes/method/creative/creative57.asp * http://www.triz-ri.ru/themes/method/creative/creative57.asp
Вывод
![Page 41: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/41.jpg)
Что делать, если операцию нужно выполнить при наступлении
нескольких событий?
Вопрос
![Page 42: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/42.jpg)
Конвейерная модель
Игра – фиксированная последовательность элементарных операций *
* Каждой операции соответствует свой набор условий
![Page 43: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/43.jpg)
Игровая логика представляется в виде таблицы правил
Конвейерная модель
![Page 44: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/44.jpg)
Алгоритм
Построение конвейерной модели
![Page 45: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/45.jpg)
1 2 3
Выявляем элементарные операции
![Page 46: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/46.jpg)
1 2 3
Выстраиваем из них определённую последовательность
![Page 47: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/47.jpg)
1 2 3
Задаём условия выполнения для каждой операции
![Page 48: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/48.jpg)
Пример
Описание игровой логики для мини-игры "Нарезка" игры "Подготовка Стола" *
* аналог Cooking Mama
![Page 49: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/49.jpg)
Сценарий нарезки картофеля
№ Действие Событие
1 Доставка Автоматически
2 Разрезание Движение курсора
3 Убирание половинки Автоматически
4 Поворот Z-90 Автоматически
5 Разрезание Движение курсора
6 Поворот Y-90 Автоматически
7 Шинкование Взмах
8 Отправка Автоматически
![Page 50: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/50.jpg)
Запись сценария в CSV-файле
Type Name Auto Arrow Stroke
Model Potato
Anim Potato_delivery YES
Anim Potato_cut_half YES
Anim Potato_remove_half YES
Anim Potato_rotate_Z_90 YES
Anim Potato_cut YES
Anim Potato_rotate_Y_90 YES
Anim Potato_slice YES
Anim Potato_dispatch YES
![Page 51: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/51.jpg)
Отличие
от таблицы переходов
![Page 52: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/52.jpg)
Таблица переходов
Условие 1 Условие 2 Условие 3
Соятояние 1 Действие 1
Состояние 2 Действие 2
Состояние 3 Действие 3
ориентирована на состояния
![Page 53: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/53.jpg)
Конвейерная модель
Состояние Условие 1 Условие 2 Условие 3
Действие 1 Состояние 1 Да
Действие 2 Состояние 2 Да
Действие 3 Состояние 3 Да
ориентирована на операции
![Page 54: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/54.jpg)
Пример
Логика поведения мыши в Комнате Переодевания
![Page 55: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/55.jpg)
Задача
Игрок выбирает одежду или обувь, которую хочет примерить
Мышь привозит соответствующую тележку
![Page 56: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/56.jpg)
Сценарий поведения мыши
ОперацияИгрок хочет
поменять одежду?
Где находится?Примерена
одежда?
Стоит Нет В начале Нет
Хвалит Нет В начале Да
Уходит Да В начале
Меняет Да В конце
Приходит Нет В конце
![Page 57: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/57.jpg)
![Page 58: КРИ 2010. Разработка технологической платформы в условиях временного прессинга](https://reader036.vdocuments.site/reader036/viewer/2022062515/55c2706bbb61ebed138b47a5/html5/thumbnails/58.jpg)
Ссылки
http://www.triz-ri.ru/authors/lebedev_art.asp