Приветствую, разработчики! Две недели назад я откопал книгу «Game Programming Patterns».
Внимание! Если вы разрабатываете cash-grab игры однодневки — этот топик не для вас.
Вообще мне не очень нравится читать техническую литературу. Объяснение сухое, примеры требуют долгой рефлексии. Авторам свойственно опускать какие-то темы. Так что, здесь, YouTube-контент, с моей точки зрения, выигрывает.
Но! Но, но. Я же не просто так пишу этот топик?) ![]()
Книга Роберта произвела на меня обратное впечатление. Подумать не мог, что такую сложную вещь, как организация кодовой базы, объяснят в понятной и нескучной форме.
Коротко введу в содержание. Автор — программист с 20-летним стажем в gamedev индустрии. За жизнь он полностью прочувствовал до глубины души (и заднего клапана) боль непродуманной архитектуры. Как она медленно убивает разработку.
Поэтому книга — накопленные знания Роберта. Плюс автор опирается на известную в программистском сообществе “Банду четырёх”. В далёком прошлом, когда парадигма ООП (Объектно-ориентированное программирование) захватила умы айтишников, эти ребята написали культовый сборник паттернов проектирования.
В общем, у автора получилась солянка из базовых вещей и специфических для gamedev-сферы.
ПЛЮСЫ:
Автор не скупился на юмор. В главах Роберт постоянно упоминает, что книга написана в юмористическом жанре. Поверьте, смеяться есть над чем.
Однако есть и трагизм…Дальше спойлерить не буду
Поток информации элегантно разделён на части. В начале мы узнаём базовые вещи, затем постепенно погружаемся в узкоспециализированные шаблоны. Автор не скупился и на ссылки. В каждой главе помимо основного паттерна добавочно упоминаются названия смежных.
К каждому примеру приложены картинки-рисунки. Это не только скучные UML-схемы. Правда, и этого добра хватает. Кхм…Роберт нарисовал и визуализации некоторых процессов. Работа с памятью, зависимости, эм…Деревья в лесу…Водичка…
Материал подаётся на C++. На этом этапе Roblox-программистам грустить не стоит! Автор книги пишет код на базовом уровне без углубления в дебри языка. Единственно, с чем читателю придётся столкнуться, - понимание шаблонов. Тут уж, увы.
А вот, что покажется приятным: упоминание функционального подхода. Тег JavaScript в моём топике не случаен. В некоторых главах Роберт транслирует пример с C++ на JavaScript. Половина главы про паттерн “Прототип” вообще отводится этому чудо языку. Автор книги прекрасно понимает: парадигма ООП — не единственный вариант**. *Функциональные методы — имеют место.
По личному опыту скажу: переводить код с JavaScript в luau гораздо проще ;)*
Роберт думает над оптимизацией и средой применения. Каждая глава даёт не просто рабочий код. В процессе решения переписываются в сторону наибольшей оптимизации. Дополнительно автор развенчивает мифы по некоторым шаблонам.
И самое приятное: даёт ситуации, когда лучше всего применять паттерн.
МИНУСЫ:
- Книга написана не вчера. Публикация состоялась аж в 2014 году. За 12 лет некоторые подходы в gamedev поменялись. Учитывайте этот фактор при чтении. Например, я нашёл мало информации про ECS (Entity-Component system).
- Уходы автора в сторону сбивают с толку. Например, вы читаете объяснение паттерна. Но вдруг. Вдруг. В следующем разделе Роберт начинает обсуждать другую тему. Это сбивает. Особенно, если вы мало читаете технической литературы.
- Не всё найдёт применение на конкретном движке. Например, часть описанных паттернов никогда не реализуется в полной мере при разработке Roblox-проектов. Мы ограничены
В сухом остатке получается понятное и удобное пособие для новичков пособие. Всегда можно вернутся и перечитать конкретный шаблон. Это также тренировка работы с разными парадигмами.
Я крайне советую пользоваться паттернами проектирования при разработке крупных проектов. Делайте это с умом и в будущем они сохранят вам время, а главное — деньги.
