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