Практика портирования 3D шутера на PlayStation® 3 Пальвелев Артём, Saber Interactive.

Презентация:



Advertisements
Похожие презентации
Технологии создания многоплатформенного игрового движка Максим Строев.
Advertisements

OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Виды памяти компьютера. Внутренняя память – быстродействующая электронная память, расположенная на системной плате компьютера Внешняя (долговременная)
Знакомство с компьютером. Системный блок -Процессор -Материнская плата -Память -Жесткий диск -Видеокарта -Звуковая карта -СD ROM -Монитор -Клавиатура -
*Other names and brands may be claimed as the property of others.. Copyright © 2003 Intel Corporation Технология Hyper-Threading в играх на реальных примерах.
Неограниченный простор для реорганизации БД Киев Подсистема «Дело-DB Реорганизатор» для Системы «ДЕЛО»
УСТРОЙСТВО СИСТЕМНОГО БЛОКА. Системный блок Это сложный и важный компонент ПК. Обеспечивает связь центрального процессора с внешними устройствами, в системном.
Характеристика процессора и внутренней памяти компьютера.
Программное обеспечение компьютера. Совокупность программ, хранящихся в долговременной памяти компьютера, составляют программное обеспечение (ПО) компьютера.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
1. ЧТО ТАКОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? НАБОР ПРОГРАММ В ПАМЯТИ КОМПЬЮТЕРА 2. ИЗ КАКИХ ЧАСТЕЙ СОСТОИТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? КРОССОВЫЕ ТЕСТОВЫЕ СИСТЕМНЫЕ.
Инструментальные средства визуальной коммуникации и прикладной дизайн Лекция 3.
Тема работы Архитектура игровых движков. Компьютерные игры Популярный вид развлечения среди широкой категории людей Появились в середине 40-х годов 20-го.
Операционная система: назначение и состав. Общие сведения На IBM-совместимых персональных компьютерах используются операционные системы корпорации Microsoft.
Артем Шабаршин Артем Шабаршин Что нового в среде Visual Studio 11 beta для программистов.
Компьютерная графика. Технологии 3D графики. DirectX, OpenGL, Glide, PhysX.
Информатика в школе Операционная система Программное обеспечение.
Программное обеспечение компьютера Учитель информатики Лойко О.Х.
Основы современных операционных систем Лекция 7. (C) В.О. Сафонов,
«Устройство компьютера» презентация. Ученики, данная презентация познакомит вас с устройством персонального компьютера, за которым вы будете работать.
Транксрипт:

Практика портирования 3D шутера на PlayStation® 3 Пальвелев Артём, Saber Interactive

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портирование движка 4. Память 5. Профайлинг и оптимизация 6. Сертификация 1. Введение

Введение Целевая аудитория доклада: программисты и их руководители. Тема доклада: специфика портирования на консоли вообще и на PS3 в частности.

TimeShift Доклад основан на опыте параллельной разработки 3D-шутера TimeShift под платформу PS3. Кросс-платформенная игра для Xbox 360, PS3 и PC. Игра была полностью переделана менее, чем за год. Версия PS3 была завершена и выпущена почти одновременно с остальными после всего 10 месяцев разработки.

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портирование движка 4. Память 5. Профайлинг и оптимизация 6. Итоги 2. Ресурсы (движок, инструментарий, люди)

Движок и middleware FMOD Havok Bink GameSpy Собственный движок Saber3D. Кроме того, используются следующее middleware:

Human resources Портирование проекта с Xbox360 заняло менее 10 месяцев. 2 полностью занятых программиста + авторы отдельных подсистем + ещё несколько программистов и художников для финального профайлинга и фиксов перед сертификацией.

Инструментарий Компилятор GCC, ProDG интеграция в Visual Studio от SN Systems. Компилятор SNC тогда был в beta-версии. Внешний отладчик, копирующий фичи VS. Два профайлера для кода. Компилятор Cg от Sony. Специализированные профайлеры и отладчики для графики от Sony.

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портировании движка 4. Память 5. Профайлинг и оптимизация 6. Итоги 3. Портирование движка

Компилятор: проблемы compile-time Компилятор GCC существенно отличается от MSVC (как правило, в сторону строгой поддержки стандарта C++). Портирование готовой игры потребовало примерно 2 недели, чтобы только скомпилировать проект. –~700К строк C++ кода; –1 человек.

Компилятор: проблемы runtime Byte ordering –общее для PowerPC. Выравнивание данных –влияет на совместимость с middleware; –становится требованием при оптимизации. Pointer aliasing –-fno-strict-aliasing, хотя он может испортить производительность. На несовместимости компиляторов проблемы не заканчиваются.

Platform-specific код в движке Syscall wrapper (IO, synchronization) PS3 system calls PS3-specific rendering FMODGameSpy platform-independent код Asynchronous loading Sound Multiplayer logic Save/load Platform-independent rendering impl. platform-specific код

Многопоточность в движке 2 аппаратных нити на PPU + 6 SPU. Мы уже имели кросс-платформенную систему шедулинга job-ов для произвольного числа процессоров. Она использовала 2 нити PPU. Эта система имела две «тяжёлые нити»: Render() и Update(), и несколько «лёгких» (анимация). FMOD работает на 2х SPU. Havok тоже поддерживает SPU, но у нас не было времени на внедрение.

Графика Cg, почти совместим с HLSL. Мы имели один исходный код шейдеров на все три платформы; для каждой платформы был свой #define. Низкоуровневое API, напрямую помещающее токены в комманд-буфер. Весь менеджмент памяти и ресурсов выполняется вручную.

Файловая система и паки Пак – это зиппованный файл, который мы читаем/разжимаем асинхронно. 1 пак на уровень + несколько initial. Требования асинхронности и минимизации трафика довольно важны: –синхронное чтение очень медленное; –seek-и очень дорогие.

Что не попало в паки Файлы видео и звуков, которые стримились. Поэтому: для звуков авторами FMOD-а была написана довольно хорошая асинхронная подгрузка; мы дописали кеширование звуков на PS3 HDD.

Встроенный HDD На ранних стадиях разработки мы использовали встроенный HDD для кеширования данных. Позднее, мы использовали HDD для кеширования стримящихся данных. На PS3 можно использовать 1 Гб системного кеша и 7 Гб инсталлируемых данных. PSN installable demos обязаны работать на HDD.

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портирование движка 4. Память 5. Профайлинг и оптимизация 6. Итоги 4. Память

Память У нас было 209 Мб системной памяти и 224 Мб видеопамяти. За вычетом exe и статических библиотек, получаем ~170 Мб системной памяти. Мы уже имели статистику памяти с бюджетом для каждой подсистемы. Портирование с Xbox360 не потребовало сильных изменений этих бюджетов, кроме...

Память: тюнинг Дополнительный баланс: Звуковые банки хранятся в видеопамяти. Часть вертексных данных хранится только в видеопамяти. Художники тюнят разрешение текстур, чтобы поместиться в видеопамять.

Память: mallocs Мы используем dlmalloc. Мы можем делать до 0.5 миллиона malloc() за загрузку уровня, это стоит ~0.5 сек. Фрагментация всё же остаётся проблемой – мы должны иметь пул свободной памяти. Per-frame аллокации не проблема, хотя нужно соблюдать осторожность.

Память: статистика В non-retail билдах мы жертвуем 16 Мб памяти под детальную статистику памяти. Для каждого аллоцированного блока хранится __FILE__, __LINE__. Классы контейнеров получают параметры в конструкторе. В консоли по нажатию кнопки можно сохранить дамп карты памяти.

Память: результаты Автоматическое получается разделение по подсистемам. Легко отслеживать потребление памяти каждой подсистемой. Есть тул, который позволяет сравнить два дампа статистики и определяет memory leaks.

Видеопамять Аллокация видеопамяти: top += block_size Дефрагментация на выгрузке уровня. Часть данных персистентна (текстуры оружия, UI), остальное загружается/удаляется вместе с уровнем. Звуковые банки кладутся в видеопамять на старте игры Управление видеопамятью простое и эффективное:

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портирование движка 4. Память 5. Профайлинг и оптимизация 6. Итоги 5. Профайлинг и оптимизация

Профайлинг У нас были профайлеры от Sony и SN Systems. А также собственные тулзы для сбора статистики (per-frame и loading time). Эти тулзы были кросс- платформенными и использовались везде. Большинство оптимизаций также были кросс-платформенными.

Профайлинг: тулзы Консоль, работающая через TCP/IP. Позволяет выбирать интересующие счётчики. Текстовая и графическая визуализация.

Профайлинг: тулзы-2

Содержание 1. Введение 2. Ресурсы (движок, инструментарий, люди) 3. Портирование движка 4. Память 5. Профайлинг и оптимизация 6. Сертификация 6. Итоги

Sony developer support Техподдержка довольно быстро отвечает. На багрепорты оперативно выдаётся либо поправленный билд, либо workaround. Фиче-риквесты реализуются!

Сертификация, TRC Основные проблемы: - время загрузки не более 30 секунд; - обработка disk eject (в новых SDK упрощено); - обработка PS button во время загрузки. TRC – Technical Requirements Checklist. Мы прошли сертификацию SCEA с первого раза и SCEE со второго.

Итоги и будущее движка Работа по TimeShift была успешно завершена за 10 месяцев. Сейчас наш движок дорабатывается. Делаются platform-specific оптимизации, в том числе: –стримминг с использованием SPU; –куллинг треугольников на SPU; –и это только начало!

Напоследок: практика отладки Меньше дебагера, больше printf()! Хороший логгинг неоценим. Во многих ситуациях не доступны символы. printf() –единственный способ отлаживаться на SPU (хотя отладчики совершенствуются). Иногда printf() меняет тайминги кода :) В целом, отладка не сложнее, чем на PC.

Узнать больше о TimeShift и Saber Interactive вы можете на Ярмарке Проектов.

Were hiring Если вы считаете себя экстремально талантливым, напишите нам об этом:

Вопросы ?