Как читать и изучать код в больших кодовых базах.
Tips for Navigating Large Game Code Bases - как начать, если устроился разработчиком игр.
- разобраться, как собрать проект и запустить игру
- спросить, есть ли инструкция, документация, или туториалы
- узнать, нет ли простой демки, показывающей возможности движка
- найти часть кода, которая связана с первой задачей
(поиск связанных слов по всему коду, отладчик, спросить тим-лида или кого-нибудь) - воспользоваться редактором игры или тулзами
- почитать историю коммитов
- поискать, какие средства есть для решения задачи в движке, не решать с нуля
- найти и изучить документ, описывающий Coding Style
- разобраться с процессом добавления своего кода в репозиторий
Позже:
- попробовать найти основной игровой цикл
- изучить иерархию базовых игровых классов
- изучить основные используемые в работе классы и модули
- понять принцип разделения движка и игры на подсистемы/модули/etc
- изучить пайплайн добавления ассетов
- разобраться с используемыми скриптовыми языками
- попробовать разобрать рендер игровой сцены
- изучить используемые средства профилирования
- изучить способы сборки игры под различные платформы
Random Things About Code
Раздел Navigating large codebases
Смириться с тем, что большие кодовые базы:
- содежат много legacy кода
- плохо документированы
- содержат места, про которые никто не знает как/зачем/почему они были добавлены
(но большая часть кода всё же была добавлена с определенной целью, и выбросить/переделать - часто плохая идея)
Если что-то выглядит странно/непонятно/неправильно:
- 30% что есть причина (неочевидная) почему сделано так
- 30% что когда-то БЫЛА причина
- 30% что причины нет, и код просто кривой
- 10% что Ктулху Рльех Фтагн
Reviewing ALL THE CODE - как следить за всем, что происходит в кодовой базе, Aras Pranckevičius (Unity)
Средства, упрощающие изучение всех изменений в кодовой базе
Что изучать:Unity
Unreal Engine
Godot
Doom 3
Cocos2d-x
Возможно:
(что-то не поддерживается, что-то сложно получить)MonoGame
CryEngine
Unigine
Defold
GameMaker
Код в Doom 3
The Exceptional Beauty of Doom 3’s Source Code
Doom 3 source code review
Интервью с одним из лид-программистов Unreal
Как Делают Игры 172. Unreal Engine
Как Делают Игры 289. Unreal Engine 5
Про пайплайны:
HANA C++ Development Environment and Processes - не относится к играм, но есть ссылки на пару интересных тулзов для работы с тяжёлой кодовой базой.
Hobby engine to game engine - отличия в пайплайне небольших движков и больших, на примере Unity.