Top Banner
Разработка технологической платформы в условиях временного прессинга Автор: Кирилл Лебедев Компания: The Web Production Email: [email protected]
58

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

Aug 06, 2015

Download

Documents

Kirill Lebedev
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: КРИ 2010. Разработка технологической платформы в условиях временного прессинга

Разработка технологической

платформы в условиях временного прессинга

Автор: Кирилл ЛебедевКомпания: The Web Production

Email: [email protected]

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

О себе

Разработчик ПО (стаж – 14 лет)

Работаю в компании The Web Production

Отвечаю за разработку 3D игр

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

Типовые ошибки

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

Типовая ошибка № 1

Пропуск системного уровня

(разработка игры без технологической платформы)

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

Всё равно, что попросить каменщика построить небоскрёб

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

Проблемы

1. Рутина2. Посторонний код3. Дублирование кода

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

Рутина

Загрузка ассетов Сохранение игры Загрузочный экран Сообщения об ошибках

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

Посторонний код

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

Дублирование кода

Каждый программист начинает изобретать свои контейнеры и свою

оконную систему

(три реаллоцируемых массива и три оконные системы)

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

Типовая ошибка № 2

Разработка в отрыве от игры

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

Особо тяжёлые случаи

1. Разработка платформы ради самой платформы

2. Разработка платформы на все случаи жизни

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

– это игра, а не движок

Главное –

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

Платформа должна быть заточена под игру или определённый класс игр

Рекомендация

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

Некоторые разработчики начинают с абстрагирования:

от файловой системы;от устройств ввода;от системы управления памятью;от ....................................................

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

Опыт портирования

Замена функции fopen на функцию OpenFile – дело нескольких минут

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

Абстрагирование без конкретной цели НЕ принесёт результат

(если только результатом не является объём кода)

Вывод

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

Что общего между

Ничего – вне условий конкретной задачи

И ?

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

Если цель - платформа

разработчики "полируют" фичи, а не создают продукт

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

Из жизни

Система загрузки скинов == всей остальной программе *

* по объёму кода

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

В условиях временного прессинга

Концентрируемся на задаче, а не на красивостях

Разрабатываем платформу, под конкретную игру или серию игр

По-максимуму используем стандартные библиотеки

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

Для чего нужна технологическая платформа?

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

Назначение № 1

загрузки и выгрузки ассетов; чтения и сохраненияч игровых данных; отображения loading screen'а; обработки ошибок; и т.д.

Освободить программиста от рутины:

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

Важно

Сконцентрировать внимание программиста на самой игре

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

Назначение № 2

Предоставить технологию* для разработки игры

* – под технологией я понимаю готовый технологический процесс

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

Некоторые задачи

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

Задача № 1

Загрузка ассетов, чтение и сохранение игровых данных

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

Требования

не должна "тормозить" игру;должна сопровождаться

анимированной картинкой;должно выдаваться сообщение в

случае ошибки

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

Решения 1 2 3 4

Группируем длительные операции (загрузка, сохранение) в "пачки"

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

Решения 1 2 3 4

Исполняем "пачку" в определённый момент времени:

1. при переходе в другую локацию;2. при запуске мини-игры

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

Решения 1 2 3 4

Делегируем "пачку" операций отдельному потоку

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

Решения 1 2 3 4

Организуем работу с потоком при помощи асинхронного обмена сообщениями

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

Игровой цикл

Начало

Играем?

Получить сообщения

...

Отправить сообщения

Конец

Да

Нет

Получаем сообщения от загрузочного потока

Отправляем сообщения загрузочному потоку

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

Преимущества 1 2 3

Не возникает взаимных блокировок *

* - синхронизирующий объект захватывается на короткое время

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

Преимущества 1 2 3

Сообщения обрабатываются в заданном порядке *

* - Очередь задаёт порядок выполнения операций

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

Преимущества 1 2 3

Игра не будет "тупить" *

* - Количество потоков не зависит от количестива сообщений

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

Задача № 2

Как описывать игровую логику?

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

"Хардкодить" в C++ - коде – не лучший вариант

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

Модели

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

Событийная модель

Игра – набор обработчиков различных событий

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

Событийная модель порождает проблему "узников" оператора if *

* http://www.triz-ri.ru/themes/method/creative/creative57.asp * http://www.triz-ri.ru/themes/method/creative/creative57.asp

Вывод

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

Что делать, если операцию нужно выполнить при наступлении

нескольких событий?

Вопрос

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

Конвейерная модель

Игра – фиксированная последовательность элементарных операций *

* Каждой операции соответствует свой набор условий

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

Игровая логика представляется в виде таблицы правил

Конвейерная модель

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

Алгоритм

Построение конвейерной модели

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

1 2 3

Выявляем элементарные операции

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

1 2 3

Выстраиваем из них определённую последовательность

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

1 2 3

Задаём условия выполнения для каждой операции

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

Пример

Описание игровой логики для мини-игры "Нарезка" игры "Подготовка Стола" *

* аналог Cooking Mama

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

Сценарий нарезки картофеля

№ Действие Событие

1 Доставка Автоматически

2 Разрезание Движение курсора

3 Убирание половинки Автоматически

4 Поворот Z-90 Автоматически

5 Разрезание Движение курсора

6 Поворот Y-90 Автоматически

7 Шинкование Взмах

8 Отправка Автоматически

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

Запись сценария в 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. Разработка технологической платформы в условиях временного прессинга

Отличие

от таблицы переходов

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

Таблица переходов

  Условие 1 Условие 2 Условие 3

Соятояние 1 Действие 1    

Состояние 2   Действие 2  

Состояние 3     Действие 3

ориентирована на состояния

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

Конвейерная модель

  Состояние Условие 1 Условие 2 Условие 3

Действие 1 Состояние 1 Да    

Действие 2 Состояние 2   Да  

Действие 3 Состояние 3     Да

ориентирована на операции

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

Пример

Логика поведения мыши в Комнате Переодевания

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

Задача

Игрок выбирает одежду или обувь, которую хочет примерить

Мышь привозит соответствующую тележку

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

Сценарий поведения мыши

ОперацияИгрок хочет

поменять одежду?

Где находится?Примерена

одежда?

Стоит Нет В начале Нет

Хвалит Нет В начале Да

Уходит Да В начале  

Меняет Да В конце  

Приходит Нет В конце  

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

Ссылки

http://www.triz-ri.ru/authors/lebedev_art.asp