Слайд 1Профессия GAMEPLAY ПРОГРАММИСТА
ОСОБЕННОСТИ РАБОТЫ НА aaa ПРОЕКТЕ
Слайд 2ABOUT ME: ALEXANDER BALAKSHIN
Старший инженер программист в компании Sperasoft, a
Keywords studio
В игровой индустрии с 2014 года
Имеется опыт работы со
следующими технологиями: Unity, Unreal engine, Anvil, Havok, Wwise
С мая 2016 года по июль 2018 оказывал значительный вклад в сезонные обновления Rainbow six: siege сначала в качестве геймплей программиста, а в последствии как лида геймплей команды.
Слайд 3О компании
14 лет на рынке gamedev
Основана в 2004 году: 5
офисов в 3 странах
400+
Профессионалов в команде
60+
Проектов, включая ААА игры
Слайд 4Sperasoft является частью Keywords Studios
Международного поставщика технических услуг для индустрии
глобальных видеоигр
Слайд 6Современная ААА игра это труд сотен специалистов из самых различных
направлений
Слайд 7Кто делает игру
Production:
Game designers
Level designers
Art:
Concept artists
Level and environment artists
Character artists
Technical
artists
Animators
etc
Audio designers
Community managers
Analytics
Management
Project managers
Team leads
Technical, art and game directors
Слайд 8Кто делает игру: engineering
System engineers
Render engineer
Network engineers
Physics programmers
Animation programmers
Tools engineers
UI
engineers
QA engineer
….
Gameplay engineer
Слайд 9Gameplay engineer
Обязанность геймплей-инженера – связать все созданные системы и ресурсы
воедино, чтобы получить игру.
Слайд 10GAMEPLAY ENGINEER: WHAT HE/SHE is Actually doing
Enemies and NPC (AI)
Quest
systems
Mini-games
….
Everything that makes game a game
Player control and movement
Weapons
(hitscan, projectiles)
Various buffs and debuffs
Traps
Vehicles
Слайд 12Какие навыки нужны: АНГЛИЙСКИЙ ЯЗЫК
Большинство книг, ресурсов и документации доступны
только на английском.
Большие проекты делаются усилиями многонациональных команд, где данный
язык — универсальное и порой единственное средство коммуникации.
Слайд 13Какие навыки нужны: Фундаментальные науки
Как правило игра — это в
той или иной степени математическая модель
Линейная алгебра — необходимо для
определения положения и ориентации в пространстве
Физика — когда встроенного физического движка недостаточно
Теория вероятности
Прочие разделы: численные методы, теория сигналов и т.д. как также могут оказать полезными.
Слайд 14Какие навыки нужны: ЛИНЕЙНАЯ АЛГЕБРА (ПРИМЕР)
O – сопло огнемета
d –
направление
L – максимальная дальность
α – угол раствора «раструба»
A1, A2, …
AN – координаты врагов
Слайд 15Какие навыки нужны: ЯЗЫКИ программирования
Производительность – близость к «железу», контроль
доступа к ресурсам
Открытость стандарта, наличие различных компиляторов, в том числе
и под главные целевые платформы (PC, XONE, PS4)
Мультипарадигмальность (ООП, обобщенное программирование, функционально программирование)
Большое количество библиотек и различных фреймворков
Де-факто стандарт в индустрии
Слайд 16Какие навыки нужны: COMPUTER ARCHITECTURE
При разработке ААА игр большое внимание
уделяется производительности.
Будет хорошо, если вы будете в курсе про
data и instruction cache, а также cache misses
Будет прекрасно, если вы сможете в assembly.
НО вам как минимум стоит иметь представление о том сколько «инструкций» стоит за той или иной операцией
Слайд 17Какие навыки нужны: COMPUTER ARCHITECTURE (Пример)
Слайд 18Какие навыки нужны: game engines
Познакомьтесь хотя бы с одним из
доступных игровых движков…
Слайд 19Какие навыки нужны: game engines
…и попутно прочтите эту книгу
Всеобъемлющий труд
затрагивающий каждый аспект разработки игр, начиная с основ.
Автор – один
из участников разработки серии игра Uncharted и Last Of Us
Является хорошим подспорьем при работе с проприетарными движками
Позволяет посмотреть на различные подходы к разработке
Слайд 20Какие навыки нужны: Communication is the key
Всегда старайтесь максимально четко
понимать требования.
Ищите разные подходы к решению задачи — не
только со стороны кода, но и посредством изменения различных данных (анимаций, эффектов, и т.д.)
Не стесняйтесь задавать вопросы коллегам.
Слайд 22{
3П
Прототипирование
Производство
Полировка
Особенности ааа проекта: 3П
Слайд 23Особенности ааа проекта: ПроТОТИПИРОВАНИЕ
Главная цель – доказать работоспособность и играбельность
идеи и снизить риски переделок во время следующих фаз
Проверка на
производительность
Максимально короткие итерации
Block out или placeholder’s в качестве ассетов
Как правило все сделанное во время прототипа выбрасывается
В конце фазы можно задуматься об архитектуре
Слайд 24Особенности ааа проекта: ПроТОТИПИРОВАНИЕ (ПРИМЕР)
Допустим вы делаете ловушку-приманку, которая дублирует
игрока в PvP игре
Идея доказывает свою играбельность при простом подходе
(скопировать игрока), но есть проблемы с производительностью (анимации, тени)
Нужно найти баланс между достоверностью и перфомансом
Слайд 25Особенности ааа проекта: ПРОИЗВОДСТВО
Реализация утвержденного функционала. Всех основных и support
механик.
Качество кода и архитектура имеет значение
Появляются финальные ассеты
Major bugs fixing
Возможны
изменения. Порой весьма серьезные
Слайд 26Особенности ааа проекта: ПОЛИРОВКА
Сервисный функционал (аналитика)
Major and minor bugs fixing
Слайд 27Особенности ааа проекта: готовность к изменениям
Требования к задаче или фиче
могут меняться радикально в том числе и прямо накануне релиза
Не
переусложняйте (Don’t overengineer)
Старайтесь проектировать свои изменения так, чтобы их можно было максимально быстро и безболезненно убрать из проекта
Не принимайте все близко к сердцу.
Слайд 28Особенности ааа проекта: DATA DRIVEN DEVELOPMENT
В типичном AAA проекте гигантский
объем данных.
Из этих данных как из конструктора собирается готовая
игра
Многие фичи можно реализовать путем копирования, изменения и комбинирования уже существующих данных.
Иногда лучше реализовывать не конченую фичу, а своего рода конструктор, который дизайнер может настроить под себя
Слайд 29Особенности ааа проекта: ПРОПРИЕТАРНЫЕ ТЕХНОЛОГИИ
В AAA проектах используются свои проприетарные
игровые движки и технологии
Иногда они становятся доступны массовому рынку
(Unreal engine, CryEngine)
Минусы:
Стабильность и удобство могут отставать от рыночных аналогов
Плюсы
Можно докопаться до самых корней
Слайд 30Особенности ааа проекта: THIRD PARTY РЕШЕНИЯ
Несмотря на максимальное количество внутристудийных
технологий, иногда весьма активно используются сторонние решения и инструменты
Havoc, PhysX
WWISE
Scaleform
Это
позволяет сгладить кривую обучения у опытных специалистов, когда они приходят на новый проект
Слайд 31Особенности ааа проекта: ЦЕЛЕВЫЕ ПЛАТФОРМЫ
Основными платформами являются консоли текущего поколения
и ПК
Большую часть выручки дают консоли (PS4 – 50%, XONE
– 40%)
Оптимизация идет прежде всего под эти платформы
Это накладывает серьезные ограничения (бюджеты по памяти, ресурсам и прочее)
Слайд 32Особенности ааа проекта: coding
Следуйте code conventions (иногда, к сожалению, не
формализованным)
Не бойтесь работать с большой кодовой базой. Используйте IntelliSense, VAssistX
и полнотекстовый поиск.
Не будьте перфекционистом – найдите баланс между «красотой» реализации и ее сроками, а также сложностью поддержки
Отмечайте технический долг в коде (//TODO)
Слайд 33Особенности ааа проекта: LEGACY
Как правило вам предстоит работать с уже
существующей кодовой базой
Это накладывает некоторые ограничения на возможные решения (в
особенности в live проекте)
При работе с ней, постарайтесь связаться с авторами
При внесении изменений, согласуйте предварительно архитектуру
Слайд 34Особенности ааа проекта: code review
Используйте специализированные решения: SWARM, Code collaborator,
Crucible
Пишите развернутое описание измений.
Старайтесь, чтобы в ревью было минимум
2 человека. Не стесняйтесь добавлять больше людей при необходимости
Слайд 35Особенности ааа проекта: работа с qa engineers
Просите проверять не только
реализованный функционал, но и потенциально задетые системы
Не стесняйтесь запрашивать повторное
тестирование — например, в случае значительных изменений в процессе ревью.
На стесняйтесь привлекать большее количество людей к тестам
Если код зависит от данных, старайтесь проверять его стабильность равно как с этими данными, равно так и без.
Слайд 36Особенности ааа проекта: LOG your work
Работайте над задачами, требования по
которым оформлены письменно (mail, documentation, sharepoint, etc.)
Используйте таск треккер (JIRA,
redmine, etc.) Фиксируйте свой прогресс и оставляйте при необходимости комментарии в задачах.
Старайтесь поддерживать документацию
Слайд 37Особенности ааа проекта: нетоКсичность
Уважайте труд ваших коллег. Равно как текущих,
равно так и предшествующих
Критика должна быть конструктивной
Помните, игра делается не
одним человеком. Стремитесь сохранить благоприятную атмосферу в коллективе.
Слайд 38Особенности ааа проекта: HAVE FUN!