Литература для игрового программиста: что стоит прочитать?

Объём специфичных знаний, которые требуются рядовому программисту игр, даже если он только начал свою карьеру, вызывает у меня “лёгкую” тоску. Это одна из причин, почему большая часть людей, которые “горят делать игры”, отсеивается на этапе технических собеседований (обычно их больше одного). Это нормально и грустно. Добавьте сюда, что нефундаментальные знания, вроде инструментов, библиотек и движков, приходится обновлять где-то раз в 5-7 лет. Не вижу тут, что игрострой сильно отличается от других областей разработки. Если бы лет 15 назад “добрый я” скинул на почту список книг, которые придется прочитать и осмыслить, армия собранных граблей не была бы стой большой и разнообразной, и без ручек половинной длины. Осторожно, в конце статьи будет супердлинная картинка (взята с github отсюда, с разрешения автора)


Все книги и ресурсы, которые здесь будут приведены, можно разделить на несколько типов (это личное мнение, можно пообсуждать).

Документация и примеры

Тут советовать только портить, никто не напишет документацию лучше создателей инструмента. Так что моя практика читать мануал и сэмплы до того, как начинать кодить. Многие это начинают делать сильно позже, когда уже полезли баги или что-то не работает.

Best practices

Из моря книг по программированию(в основном на плюсах) и разработке вообще, на моем столе осталось не так уж и много.

Code Complete: A Practical Handbook of Software Construction (Стив Макконнел. “Совершенный код”)

Все чаще я возвращаюсь к этой книге, чтобы найти аргументацию и нужные слова и отговорить коллег не втаскивать новый модный фреймворк в движок, пока срабатывает. В книге описываются основные принципы разработки софта, такие как модульность, читаемость кода, повторное использование, а также различные аспекты, влияющие на качество получаемого “продукта” – проектирование, тестирование, отладку, анализ и т. д. Вроде написано все просто и понятно, но как же сложно писать простой и чистый код в реальном проекте.

Effective C++ (“Эффективное использование C++”, Скотт Мейерс).

Всю трилогию (есть еще Эффективный и современный С++/Наиболее эффективное использование С++) Мейерса о том, как “хорошо” писать сферических коней в вакууме, я бы давал на первых курсах универа, параллельно с изучением самого языка. В книге предоставлены практические советы и рекомендации по использованию плюсов с целью написания эффективного, производительного и чистого кода. Понятно, что книги довольно старые и не соответствуют современным стандартам, но хуже от этого они не стали.

Robert Nystrom “Game programming patters” (https://gameprogrammingpatterns.com)
Единственная нормальная книга (и портал) посвященная практическим шаблонам и примерам программирования, которые применяются или применялись в разработке компьютерных игр. Автор долгое время был игровым разработчиком, но потом ушел на темную сторону и стал пилить Dart.

Фундаментальные для разработки книги

“Game Engine Architecture” (“Архитектура игровых движков”) – книга написана Джейсоном Грегори и представляет собой исчерпывающий обзор принципов, концепций и практик, связанных с разработкой игровых движков. Описывается теория и различные аспекты архитектуры игровых движков, начиная с основных принципов проектирования и заканчивая реальными примерам. Эта книга о том как надо делать игровые движки, как они сделаны в реальности вы можете увидеть на массе примеров на гитхабе. “Архитектура игровых движков” является обязательным чтением для разработчиков игр, дизайнеров и инженеров. Вряд ли вы найдете более исчерпывающее описание, собранное в одном месте и доступным языком.

Jeannie Novak. Game Development Essentials

В отличие от многих других книг о процессе создания игры, Game Development Essentials показывает сложности, которые могут возникнуть при разработке. На протяжении всей книги до читателя доносится основная идея, что для создания игры вашей мечты нужна не только хорошая идея, а программировании игры — это тяжелый труд, а не развлечение. Советую прочитать и тем, кто собрался в игрострой вообще, и тем, кто подумывает “вайти в айти”. Игрострой – это лишь частный случай индустрии создания ПО, где максимизированы определенные черты её черты.

Eric Lengyel. Mathematics for 3D Game Programming and Computer Graphics

Эрик Ленгел — основатель Terathon Software и создатель C4 Engine, в прошлом — разработчик в компаниях Naughty Dog, Sierra Studios и Apple. Предназначена, в основном, для программистов, которые хотят более глубоко понимать процессы внутри игры и математику, которая стоит за всем этим. Однако, в большинстве случаев книга слишком техническая и сложная для новичков, особенно в области трехмерной графики. Базовыми знаниями в математике тут не обойтись, и требуется понимание математических концепций на уровне 2-3 курсов универа. Кроме того, книга фокусируется в основном на математических аспектах разработки, без примеров как оно может влиять на общую архитектуру, дизайн, механики и т. д..

Библиотека разработчика игрового ИИ (прогер + дизайнер)

Game AI Pro (Steven Rabin) – это серия книг, редактируемая Стивеном Рабином (Steven Rabin), посвященная ИИ в компьютерных играх. Каждая книга в этой серии представляет собой сборник статей и материалов от реальных разработчиков, которые делятся своим опытом и знаниями..

Making Deep Games (Doris C. Rusch) – книга написана Дорис С. Руш (Doris C. Rusch), автор продвигает концепцию “deep game” и дает практические рекомендации по их созданию. Очень мало технических подробностей, автор больше рассуждает о концепциях и механиках, которые могут вызывать у игроков эмоциональные изменения, переживания и поддержания атмосферы. Не очень интересная книга, как по мне, очень много воды, чтобы вытянуть на объем 200стр, но местами бывает полезно, и некоторые практики я замечал в разных проектах.

Game Engine Gems – серия книг по особенностям, уже вышедших игр, что-то вроде бумажного подкаста ценных советов, техник и лучших практик от опытных разработчиков. Формат представляет собой короткие рассказы от спецов индустрии разработки игр. Интересное чтиво в качестве ретроспективы ошибок и как делать “надо”, и особенно “не надо”. Не смотрите на название, здесь не только про игровые движки, со временем выпуски стали обо всем понемногу.

The Pyramid of Game Design (Nicholas Lovell) – в книге описывается концептуальная модель дизайна компьютерных игр. Описанная модель должна помочь разработчикам игр связать различные аспекты игрового дизайна, опять же модель теоретическая, практических примеров её использования за годы разработки я не видел. В качестве теории выглядит довольно неплохо, в качестве практики, я бы не стал давать волю таким идеям в реальном проекте в силу их большой ориентированности на эмоции.

Dev blogs

Кроме книг, чтобы быть в курсе происходящего в индустрии я время от времени поглядываю, что нового появилось у людей, которые двигают индустрию вперед. На первом месте конечно же будет GDC и видео за все время проведения конференции, а также конференции размером поменьше. Дальше список личных блогов, где периодически появляются интересные статьи и разборы игры.

gdcvault.com
fabiensanglard.net
simonschreibt.de
oddtales.net/blog
blog.thomaspoulet.fr
froyok.fr
adriancourreges.com
elopezr.com
gen-graphics.blogspot.com
astralcode.blogspot.com
morad.in
alain.xyz
kosmonautblog.wordpress.com
cookieplmonster.github.io
factorio.com/blog
aschrein.github.io
mamoniem.com
simoncoenen.com/blog
acko.net
bartwronski.com

Github\Assetstore

Знаниям, статьям и разработкам в целом, свойственно перетекать на специализированные площадки. Ассетсторы в этом плане стали хорошей возможностью выкатить прототип или MVP, чтобы быстро посмотреть реакцию людей на ту или иную идею. То что раньше было прерогативой больших компаний и показывалось на GDC как выстраданный опыт и ноу-хау, сейчас тоннами лежит в виде плагинов за бакс, а то и вообще бесплатно. Обратной стороной такого подхода стало сильное снижение качества решений, 80% библиотек и плагинов забрасываются уже после года разработки, так что надо подходить с осторожностью к любой либе, которую вы тащите с гитхаба или магазина. Даже 1к звезд не гарантирует, что либу и проект будут сапортить долгое время.

github.com/fffaraz/awesome-cpp – репо может быть полезным для всех, кто интересуется программированием вообще и на плюсах в частности, обновляется достаточно часто. Ссылок много, на все случаи жизни, но не все проекты живы.

github.com/Caerind/AwesomeCppGameDev – очень много ссылок на движки и околоигровые тулы, опять же не все живые. Но подборка обширная и просто быть в курсе что есть, а чего нет, очень показательная. Даже пробежаться по ссылкам и посмотреть, что и как может быть реализовано тоже полезно.

github.com/skywind3000/awesome-gamedev – всякое разное околоигрово.

Вместо выводов

Сейчас люди относятся к книгам с большой долей скепсиса, предпочитая им более интерактивные средства обучения, вроде видекурсов или менторства. Видеокурсы и онлайн-туториалы из-за своего формата сильно упрощают подачу информации, они могут быть полезными для визуализации сложных концепций, но книга дает возможность подумать, между вами и книгой больше никого нет. Книги лучше читать в оригинале, потому что переводы не всегда полностью передают оценку автора, или замещают на адаптированные варианты, что не всегда идет переводу на пользу.

И конечно, теория без практики мертва. Чтобы научиться делать игры, нужно делать их постоянно..

Та самая картинка

Информация из двух третей книг отсюда мне никак не понадобилась за все время разработки, но возможно это просто последствия “прогрессивного дифференцирования” индустрии.

 

Источник

для, игрового, литература, программиста, прочитать, стоит, Что

Читайте также