Это продолжение статьи с интересными, как мне кажется материалами, которые были собраны за время работы в игровых компаниях, и которые тем или иным образом повлияли на меня. Программисту игр, впрочем как и любому другому программисту, приходится достаточно много читать разной литературы, игровых и околоигровых статей, смотреть записи конференций. Так что, со временем получился список разных по технической направленности статей и видео, что примечательно достаточно много из них были опубликованы в треде на хабре. Особо урожайным выдался 20 год, когда из квартиры то выйти можно было не всегда, тогда наверное коллекционирование разных статей переросло в небольшое хобби.
Но, как справедливо написали в комментариях к прошлой статье, не стоит забывать классическую литературу, поэтому на первое место в этот раз я поставлю «Мертвые души» Гоголя. Произведение рассказывает историю о молодом и амбициозном человеке, который приезжает в провинциальный город с необычным предложением: он собирается купить «мертвые души» — крестьян, умерших или уходящих, но ещё «не снятых с учёта», чтобы заново зарегистрироваться их владельцем и получить на них кредиты и привилегии.
Двести лет роман по праву считается достоянием мировой литературы. Произведение умное и гениальное, ведь изложенная идея не сложна в реализации. Думаю, с некоторыми коррективами, она будет актуальной и через 10, и через 20 лет, оставаясь как бы вне времени. Перечитывая роман, наверное в третий уже, к сожалению, понимаю, что вижу на собственном опыте, как идеи Чичикова живут до сих пор.
Итак, продолжим!
joelonsoftware.com — если кто не в курсе, Joel Spolsky был одним из авторов Stack Overflow, наверное самого популярного ресурса для программистов с вопросам и ответами. Сайт предоставляет возможность программистам обмениваться знаниями, решать проблемы и обсуждать темы, связанные с программированием. Ну и конечно его книга «Joel on Software», сборник самых интересных статей из блога с практическими советы по разработке программного обеспечения и управлению проектами.
Blood, Sweat, and Pixels: The Triumphant, Turbulent Stories Behind How Video Games Are Made («Кровь, пот и пиксели: как делать игры») — это книга, написанная Джейсоном Шрайером (Jason Schreier) и изданная в 2017 году, рассказывает о том, как создаются видеоигры. О трудностях, с которыми сталкиваются разработчики в процессе их создания. Темы которые поднимаются в книге не только об успешном успехе, там есть и про неудачи, конфликты, маленький бюджет, сложности (не только технические) с которыми сталкиваются студии и индигерои. Проекты из книги знаковые «The Witcher 3: Wild Hunt», «Destiny», «Uncharted 4: Путь вора», «Stardew Valley» и много чего еще. В общем мне книга понравилась, наверное в силу того, что с описываемыми событиями приходилось сталкиваться лично, но автор очень многое опускает и не рассказывает или рассказывает не полностью. Чего не отнять, так это легкость изложения и акцент на человеческих аспектах разработки. Читается как хорошая художка о сложных решениях и ситуациях, упорном преодолении проблем. Happy End в комплекте.
https://kotaku.com/the-exceptional-beauty-of-doom-3s-source-code-5975610 исходники третьего Doom как пример качественной и простой для понимания большой кодовой базы. Когда я читал исходники третьего дума, то всегда поражался совсем малому количеству комментариев, но что самое интересное, код от этого не был менее понятным. Всегда раздражало, когда по названию метода не получалось сказать, что он делает. Это как берешь карандаш с красным грифелем, а он рисуем зеленым. Если метод делает слишком много, чтобы описать это во вменяемом имени, то надо уменьшить объем кода внутри метода — это наверное одно из лучших правил, что я вынес из этих исходников. Не сказал бы, что дум перевернул мой мир, но коментариев в коде стало меньше, а функции короче — это точно.
MISRA C++
Это набор стандартов и рекомендаций для разработки безопасного и надежного программного обеспечения на плюсах. Целью MISRA C++ было улучшение качества программного обеспечения, повышение его безопасности и надежности через набор правил, соблюдение которых помогает избегать типичных ошибок и проблем. Во время моей работы над софтом для гидроакустики это было основным руководством для разработки, как вам например отсутствие свободного оператора new/delete в программе? Если программа может выделить память только на старте, или не может выделить, а использовать только выданный объем, то подход к проектированию и разработке становится кардинально другим. Очень многие практики и правила получается применять и в игрострое, хуже точно не становится.
https://technology.riotgames.com/news/profiling-measurement-and-analysis
«Профилирование, измерение и анализ» на сайте Riot Games, от мастеров мультиплеера и создателей League of Legends. В этой статье два мэтра расскажут вам основы профилирования и некоторые примеры кода на плюсах. Статья от 2018 год, но для старта изучения методов и принципов профилирования самое то.
EASTL
https://github.com/electronicarts/EASTL
Одна из трех альтернатив стандартной библиотеки, которую большинство разработчиков игр (со скрипом) признают боле-менее работающей и общей. Появилась еще тогда, когда 98/03 стандарт был в пропозалах, а Folly не было и в помине. Развивается и сейчас, отдельные решения не брезгуют затащить и в стандарт. Не знаете чем заняться на выходных? Загляните к этим ребятам в репо, будет много интересного. Вот с такого вступления начинаются исходники EASTL.
Игровые платформы и дизайн игр накладывают определенные требования на игровое программное обеспечение, которые отличаются от требований других платформ. Прежде всего, игровое программное обеспечение требует больших объемов памяти, но имеет ограниченное количество для работы. Кроме того, игровое программное обеспечение сталкивается с другими ограничениями, такими как слабые кэши процессора, менее мощные центральные процессоры и требования к выравниванию памяти, отличные от установленных по умолчанию. В результате игровое программное обеспечение должно бережно обращаться с памятью и процессором.
Контейнеры, итераторы и алгоритмы стандартной библиотеки C++ потенциально полезны для различных потребностей в игровом программировании. Однако недостатки и пропуски стандартной библиотеки мешают ей быть идеальным выбором для высокопроизводительного игрового программного обеспечения. Прежде всего, среди этих недостатков следует отметить модель аллокаторов.
Расширенная и частично переработанная замена (EASTL) для стандартной библиотеки C++ была реализована в Electronic Arts с целью устранения этих недостатков в переносимом и читаемом виде.
level-design.ru
Блог Михаила Кадикова об играх, интересные статьи с разбором разных механик в играх, написаны простым и понятным языком. Не знаю каким боком попался этот сайт, первые статьи вообще не впечатлили, возможно из-за стремления автора сильно упрощать понятия и по три раз объяснять очевидные вещи. Но с каждой новой статьей они становятся все лучше и интереснее.
blog.joelburgess.com
Joel Burgess — ветеран игростроя, который работал над такими проектами, как «The Elder Scrolls V: Skyrim» и «Fallout 3/4». Много материалов с рассуждениями о дизайне игр и его эволюции, программировании и разработке игр. А по его статьям и выступлениям на GDC можно сделать отдельную книгу по разработке игр (на самом деле только одной игры конечно Fallout 3), столько там интересных моментов и советов.
spiiin.github.io
Познакомился недавно с Сашей Бойко @spiiin, жалею что не нашел его сайт раньше. Много полезной и интересной информации. Как оказалось мы вместе работали некоторое время у Gaijin’ов, но по проектам не пересекались. А еще он сделал классный редактор уровней для игр под Денди и не только. CadEditor — редактор уровней для множества игр под разные платформы (NES, Sega Mega Drive, GBA), лежит тут..
«For the Win» Кевин Вербах и Дэн Хантер
Одна из лучших книг, посвященных геймификации и применению принципов и техник дизайна вне мира разработки игр. Авторы рассказывают, как элементы игры могут быть разложены на составляющие и использованы в различных областях. Много ценных идей как элементы игр и игровые механики могут быть использованы для мотивации, вовлечения пользователей и получения фибдека в образовании, маркетинге и вообще любой области, которая завязана на внимании человека. В общем почитайте, очень забавно подмечать когда тобой пытаются играть.
Может ли скриптовый язык работать быстрее плюсов?
Лекция Антона Юдинцева (Gaijin) по daScript, скриптовый язык — который быстрее С++. Не верите? Почему верю я отдельный вопрос — была возможность покопать изнутри движок Dagor/War Thunder и тулзы, и переносить их на NxSwitch и AppleTV. Запихнуть движок от тундры на 6 iPhone, коим по сути являлся AppleTV 4Gen и заставить его работать было очень и очень непросто.
«The Art of Game Design» by Jesse Schell — хороший материал для тех, кто хочет познакомиться с принципами игрового дизайна на базовом уровне и понять, о чем вообще идет речь. Поможет на пальцах разобраться в том, какие аспекты и механики игр могут вызывать эмоции и впечатления у игроков. Как понимать потребности и интересы игроков, как использовать различные элементы дизайна уровня, объекты и даже построение фраз для достижения желаемого эмоционального отклика. Для опытных дизайнеров врядли будет что-то интересное, да и наработанные временем практики сбиваются достаточно сложно.
https://www.youtube.com/playlist?list=PLokhY9fbx05eq8SvcNOxYRquYMzMjF9Ok
Постоянно пополняющийся список разборов ИИ в разных играх, за 9 лет набралось почти восемь десятков выпусков по реализации ИИ в известных играх, от F.E.A.R до паучка.
Еще ссылки:
Рассказ Виталия Бородовского (WoT) как проектировать топ ммо проекты.
Отличная статья Nicolas Kraj о секретах game дизайнеров, чтобы вы больше верили в игру.
На этом всё, надеюсь было интересно и полезно!