В сентябре выходят «Паттерны программирования игр»: новейший завет для всех, кто погряз в фигурных скобках

Свершилось, друзья: под буквальным лозунгом «Данные > Код» у нас готовится к релизу обласканная отзывами книга Роберта Нистрема «Паттерны программирования игр». И если кто-то скажет, мол, она научит вас кодить — не верьте: эта работа от подобного, скорее, отваживает. Но обо всем по порядку.

Сам автор десять из двадцати лет, посвященных программированию, отдал разработке игр. А восемь из них вовсе провел в стенах Electronic Arts, где приобрел ярко выраженную профдеформацию под названием «сроки разработки». Бобу они показались настолько ужатыми, что эта больная тема сквозной нитью проходит через всю его книгу. В результате автор называет скорость одним из трех важнейших факторов создания проекта наряду с оптимизацией и архитектурой кода.

Генеральной идеей работы Нистрема, однако, остается как раз архитектура: эта книга вовсе не о написании кода, она методах его организации, причем именно с прицелом на разработку игр. Вот почему мы говорим, что «Паттерны программирования игр» отучивают писать код: книга готовит к тому, как минимизировать процесс написания и изначально построить свой код, чтобы не пришлось потом его переделывать.

«Мера хорошо спроектированного кода — то, насколько легко в него вносить изменения».

Давно известно, что внесение поверхностных изменений не должно вынуждать заново класть фундамент, и автор хорошо показывает это на примере управления персонажем в игре. Программно на кнопки геймпада привязаны определенные действия, однако игрок может пожелать изменить управление. И такие вариации как раз задаются паттернами, в частности паттерном Command, ведь не лезть же игроку самому переписывать код — да и кто пустит?

Другой пример: представьте, вы с командой создаете игру, погрязли в коде, вроде что-то получается, и тут вы решаете добавить в сюжет дракона. Просто чтобы был. Идете с предложением к ведущему программисту, а он берет и падает в обморок. Оказывается, для внесения в игру какой-то жалкой огнедышащей ящерицы придется перелопачивать вообще все. Как подобного избежать, но при том получить своего дракона, как раз и пытается объяснить Роберт Нистрем.

Если резюмировать его посыл, то гибкая архитектура облегчает и в итоге ускоряет работу программиста, а в будущем позволяет вовсе не требовать его привлечения для внесения правок. Но, что особенно заметно при разработке игр, она же негативно влияет на производительность. Автор рассказывает, как приходится балансировать и идти на компромиссы, не давая коду превратиться в Гималаи, но и не перенося на него слишком много ресурсов. И все это с соблюдением сроков.

Именно подгон под такой баланс связывает воедино довольно дискретные главы книги, посвященные описанию того или иного паттерна. Поймите правильно, это не рассказ о буднях программиста, не свод общих поверхностных знаний. Основной массив книги — воспроизведение паттернов, один за другим, глава за главой. Что делает конкретный паттерн, где применяется, его реальные кейсы, примеры кода (на C++) и указание особенностей взаимодействия с другими паттернами. Все сделано так, чтобы вы могли буквально переписать каждый указанный прием в собственный проект.

Это очень структурированная книга (а чего еще ждать от программиста?), где автор не просто делится известными данными, но и показывает найденные им самим нетривиальные решения для разработки. Роберта при этом никак не обвинишь в чересчур сухом изложении, посмотрите хотя бы на эти его милые иллюстрации:

Но чтобы вы не расслаблялись, есть там и такое: «Числовые константы просто равняются своим значениям. Сложение и умножение немного более сложные, так как включают вложенные выражения. Прежде чем их вычислить, надо рекурсивно вычислить вложенные выражения. Примерно так».

Вот здесь можно оформить предзаказ «Паттернов программирования игр» (на сайте Book24, а позднее во всех интернет-магазинах) и больше никогда не писать лишние куски кода.

 

Источник

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