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.
История разработки проекта POSTAL III  Константин Ефимов                программист                     Акелла           a...
О докладчикеКонстантин Ефимов• Закончил Московский Технический  Университет Связи и Информатики• Программист в компании Ак...
Начало•   На дворе был конец 2006-го года•   Заканчиваем текущий проект•   Нужно думать что делать дальше•   Предлагаем Ru...
Под что делать?• Произошла смена поколений игровых  консолей• Принципиально другое железо,  поменялись технологии производ...
На чем делать?• Развивать дальше существующий  движок• Разрабатывать новый с нуля• Купить готовый и не париться
Выбор движка• Движок за миллион• Небольшие движки• Source Engine
Первые ощущения от Source• Очень долгая первоначальная загрузка• Programmer Oriented Engine• Клиент-серверная архитектура ...
Проблема: вид от первого лица• На улице планировался вид от третьего  лица• В помещениях вид от первого лица• Проблема: пр...
Проблема: вид от первого лица (2)
Проблема: большой открытый мир• Надо динамически подгружать части  большого мира• В Source есть подгрузка много чего, но  ...
Проблема: большойоткрытый мир (2)
Проблема: одноэтажная Америка• В дома можно заходить – много  объектов внутри• У домов есть двери и окна – в  результате н...
Проблема: одноэтажная Америка (2)
Проблема: параллельное редактирование уровня• Над уровнем одновременно нужно  работать художнику и дизайнеру• Исходник уро...
Проблема: ролики на движке• В Source нет обычных катсцен, есть  интерактивные• Нет удобного редактора, все делается  в Fac...
Сложно добавлять новые фичи• You can paint it any color, so long as its  black (Henry Ford)• На движке Source можно сделат...
Удобный экспортер из Maya
Скрипты• В Source не было скриптового языка• Может быть он и не нужен?• Для AI точно нужен!
Скрипты (2)behavior                                                         mis_ds_champ                                  ...
Много разных NPC• Есть несколько основных моделей NPC• В модель входит несколько геометрий  головы, тела, причесок (бодигр...
Много разных NPC (2)• В слоты можно одевать внешние  модели: шляпы, часы, сумки и т.п.  (болтоны)• Художники сами задают к...
Много разных NPC (3)
Много разных NPC (4)
Расчлененка• Для конечности создается рэгдолл с  точно такой же моделью• У конечности обнуляются все кости  выше места отр...
Расчлененка (2)
Прятанье за препятствиями• Динамически определяются места где  можно прятаться• Трейсятся 3 бокса на разной высоте и  опре...
Прятанье за препятствиями (2)
Жидкости и огонь• Вся логика на сервере, отрисовка – на  клиенте• На сервере – ячейки регулярной сетки• На клиенте – декал...
Жидкости и огонь (2)
Еще мы добавили•   Сигвеи, танк•   Кошек, собак, носорогов, обезьян•   Навмеш и расхождение толпы•   Поднимание и кидание ...
Сервера1. Основной репозиторий2. Build, Wiki, BugTracker/TaskTracker,   Jabber3. Backup• На многих машинах запущены клиент...
Вопросы?aiven@akella.com          Скачать слайды@const_inthttp://akella.com/forumhttp://postal3.ruhttp://trashmasters.ru@t...
Заголовок 1• Текст 1
Заголовок 2 Заголовок 2• Текст 2
Upcoming SlideShare
Loading in …5
×

Postal 3 Technical Postmortem

1,029 views

Published on

Технический постмортем игры Postal 3. 14 Мая 2011, КРИ 2011

Published in: Entertainment & Humor
  • Be the first to comment

Postal 3 Technical Postmortem

  1. 1. История разработки проекта POSTAL III Константин Ефимов программист Акелла aiven@akella.com
  2. 2. О докладчикеКонстантин Ефимов• Закончил Московский Технический Университет Связи и Информатики• Программист в компании Акелла, где за 7 лет успел поучаствовать в разработке проектов: «Головорезы: корсары XIX века», «Бой с тенью», «Бой с тенью 2», «Меченосец».
  3. 3. Начало• На дворе был конец 2006-го года• Заканчиваем текущий проект• Нужно думать что делать дальше• Предлагаем Running With Scissors совместно делать Postal 3
  4. 4. Под что делать?• Произошла смена поколений игровых консолей• Принципиально другое железо, поменялись технологии производства• Отсутствие опыта производства под “next-gen”• Выбор Xbox 360 как основной платформы
  5. 5. На чем делать?• Развивать дальше существующий движок• Разрабатывать новый с нуля• Купить готовый и не париться
  6. 6. Выбор движка• Движок за миллион• Небольшие движки• Source Engine
  7. 7. Первые ощущения от Source• Очень долгая первоначальная загрузка• Programmer Oriented Engine• Клиент-серверная архитектура в однопользовательской игре• В исходниках Source присутствуют сразу все игры Valve• Олдскульный код. Никаких паттернов• BaseEntity.h: 2500+ строк, 1000+ функций у класса
  8. 8. Проблема: вид от первого лица• На улице планировался вид от третьего лица• В помещениях вид от первого лица• Проблема: предметы и двери выглядят по разному
  9. 9. Проблема: вид от первого лица (2)
  10. 10. Проблема: большой открытый мир• Надо динамически подгружать части большого мира• В Source есть подгрузка много чего, но только не уровней• Решение: разбивать мир на много отдельных уровней
  11. 11. Проблема: большойоткрытый мир (2)
  12. 12. Проблема: одноэтажная Америка• В дома можно заходить – много объектов внутри• У домов есть двери и окна – в результате ничего не отсекается• Решение: “заколотить” дома, поставить заборы, разнести области по высоте
  13. 13. Проблема: одноэтажная Америка (2)
  14. 14. Проблема: параллельное редактирование уровня• Над уровнем одновременно нужно работать художнику и дизайнеру• Исходник уровня хранится в одном большом файле• Сложно разрешать конфликты• Решение: дизайнер создает все объекты в своей отдельной группе
  15. 15. Проблема: ролики на движке• В Source нет обычных катсцен, есть интерактивные• Нет удобного редактора, все делается в FacePoser + Hammer• Решение: записывать видео, монтировать и проигрывать как FMV
  16. 16. Сложно добавлять новые фичи• You can paint it any color, so long as its black (Henry Ford)• На движке Source можно сделать любую игру, если эта игра – Half Life 2 (TM Studios)• Пример: Player == Камера• Пример: трейс сферы, а не боксов
  17. 17. Удобный экспортер из Maya
  18. 18. Скрипты• В Source не было скриптового языка• Может быть он и не нужен?• Для AI точно нужен!
  19. 19. Скрипты (2)behavior mis_ds_champ {{ group Neutral name bh_mexico_citizen patterns inherited bh_citizen { states pt_default { { actions st_init { { Block begin,execute group Neutral IfAttr "npc_startup == 1 CallState ut_startup" patterns TargetPlayer 1 TargetToMem msLEADER { State an_friend pt_default Block end { } actions } { } } TargetEntByName mexico_logic TargetToMem msGP ExecutePattern bh_citizen:st_init_male.pt_default SetAreaGroup AG_DEFAULT:walkable,AG_town } } } }
  20. 20. Много разных NPC• Есть несколько основных моделей NPC• В модель входит несколько геометрий головы, тела, причесок (бодигруппы)• На все эти геометрии накладываются разные текстурные наборы (скины)
  21. 21. Много разных NPC (2)• В слоты можно одевать внешние модели: шляпы, часы, сумки и т.п. (болтоны)• Художники сами задают комбинации бодигрупп, скинов и болтонов (префаб)• Пример: #prefab1 = #head1 #body5 #skin2 #glasses1 #watches3 #hair4
  22. 22. Много разных NPC (3)
  23. 23. Много разных NPC (4)
  24. 24. Расчлененка• Для конечности создается рэгдолл с точно такой же моделью• У конечности обнуляются все кости выше места отрыва, чтобы скрыть• У персонажа обнуляются все кости ниже места отрыва• Места отрыва прикрываются моделями мяса и эффектами крови
  25. 25. Расчлененка (2)
  26. 26. Прятанье за препятствиями• Динамически определяются места где можно прятаться• Трейсятся 3 бокса на разной высоте и определяется можно ли туда спрятаться• Для NPC пришлось сделать генерацию точек на углах• Анимации за препятствием для левой стороны отзеркалены с правой
  27. 27. Прятанье за препятствиями (2)
  28. 28. Жидкости и огонь• Вся логика на сервере, отрисовка – на клиенте• На сервере – ячейки регулярной сетки• На клиенте – декали• Синхронизация сервера и клиента с помощью событий
  29. 29. Жидкости и огонь (2)
  30. 30. Еще мы добавили• Сигвеи, танк• Кошек, собак, носорогов, обезьян• Навмеш и расхождение толпы• Поднимание и кидание предметов• Много экзотических видов оружия• Разные разрушаемые объекты• Деревья, гирлянды и т.п.• Ткани (NVIDIA APEX)
  31. 31. Сервера1. Основной репозиторий2. Build, Wiki, BugTracker/TaskTracker, Jabber3. Backup• На многих машинах запущены клиенты для распределенной компиляции уровней и шейдеров
  32. 32. Вопросы?aiven@akella.com Скачать слайды@const_inthttp://akella.com/forumhttp://postal3.ruhttp://trashmasters.ru@trashmasterzzz http://bit.ly/mr9Xgr
  33. 33. Заголовок 1• Текст 1
  34. 34. Заголовок 2 Заголовок 2• Текст 2

×