Привет, Хабр!
С радостью и чувством выполненного долга издательство «БХВ» представляет вам одну из флагманских новинок наступившего года. Мы получили из типографии книгу «Game++. Устройство и оптимизация игрового движка».
Как известно, высококлассные AAA-игры — это та территория, на которой сходятся проверенные и экспериментальные алгоритмы, высокая производительность, графика на уровне произведений искусства и проектирование распределённых систем. Главный язык программирования для аса в разработке игр — это C++.
Поскольку сложно объять необъятное, да и участие в разработке The Sims и Age of Empires смотрелось бы в резюме как опыт участия в гонках «Формулы-1», автор, самоотверженно поработав, создал фундаментальную книгу о наилучших практиках высокопроизводительного программирования как в элитном продакшне, так и на очень ограниченных ресурсах. Для автора игры — это полигон, на котором он набрал свой уникальный профессиональный опыт, а C++ — это инструмент, при помощи которого решается любая задача. Отдельно отметим, что в книге уделено внимание не только различным структурам данных и их реализациям, но и стандартной библиотеке шаблонов (STL); этот материал серьёзно повысит профессиональный уровень любого C++-разработчика.
Далее - от автора, Сергея Кушниренко @dalerank.
Писать код намного проще, чем писать книгу о том, как писать код
Иногда книга начинается с одной статьи, опубликованной в нужный момент и в нужном Хабре. В моём случае всё действительно началось с публикации "Game++. Dancing with allocators", которая несмотря на обилие технического материала, кода и схем набрала больше всего плюсо среди моих статей на околоплюсовую и игродев-разработку. А дальше и сам цикл Game++ постепенно вырос из отдельных технических размышлений о C++, архитектуре движков и производительности в связный нарратив.
За фасадом Game++ стоит еще больше узкотехнических статей во внутреннем блоге и вики моей компании и я бы рад ими поделиться, да и делюсь периодически, но сами понимаете выкладывать можно не всё и даже из тех статей, что выложена на Хабре, частенько что-то да вырезали, ибо NDA и секретные технологии-бла-бла-бла.
Статья про аллокаторы стала точкой, когда я увидел, что разрозненные тексты на самом деле образуют скелет будущей книги, нужно лишь перестать относиться к ним как к «постам» и начать воспринимать как главы. Идея написать книгу не пришла просто так, и несколько не связанных между собой людей и пара компаний написали в личку и предложили переписать статьи в виде книги.
Ещё в процессе написания статей я всё чаще стал замечать, что возвращаюсь к одним и тем же вопросам — что такое «хороший» C++ в движке, где проходит граница между философией и prom-кодом. В какой-то момент стало понятно, что формат статьи не всегда подходит и слишком много контекста остаётся за скобками, слишком часто приходится обрывать рассуждение, потому что текст уже и так получился «слишком длинным для Хабра», я смотрю на доскролы и вижу, что обычно статьи не читают дальше 15 минут. Книга стала способом расширить и объём, и примеры, и дать больше философии.
Для меня особенно важно, что это не книга «про игровой движок» в узком смысле, можете взять нетленку Грегори и там будет нужная и важная теория по разработке движка. Да, в ней много примеров из движковой разработки, из работы с памятью, и потоками, и аллокаторами, и строками, и практики оптимизации и архитектурных компромиссов. Но по сути, моя книга — о C++ как о языке инженерных решений и о том, как думать категориями данных, временем жизни, и поведением кода на реальном железе, а движок здесь — среда повышенной сложности, своего рода стресс-тест для языка, в которой хорошо видно, где концепции работают, а где буксуют.
Отдельной частью этой истории стали люди, которые тоже славно потрудились над этой книгой и поучаствовали в её подготовке. Это Анатолий Мамаев (@Serpentine) который подарил книге большую часть рисунков, Олег Сивченко (@OlegSivchenko) который курировал работу с издательством и Леонид Кочин, который мужественно редактировал чистовик и вникал в неукротимый рой плохо переводимых терминов. С Олегом общение постепенно вышло за рамки Хабра и структуры книги, в более общие вопросы инженерной культуры, качества технической литературы, надеюсь, я могу называть их своими друзьями, и наше общение не закончится с выходом книги.
Не менее ценным стало общение с Андреем Карповым (@Andrey2008) c его помощью и компании PVS получилось провести несколько вебинаров, которые оказались своеобразной проверкой на прочность, потому что объяснять свои идеи вслух, в живом формате, где аудитория задаёт вопросы и ловит тебя на неточностях, это нет текст с картинками. Многие фрагменты книги стали лучше именно потому, что до этого были проговорены на таких встречах. А еще они помогают с переводом книги на английский, за что им отдельная благодарность, надеюсь, всё сложится.
Ну и конечно, отдельное спасибо Хабру и читателям, без вас этого бы тоже не случилось. И лично @Boomburum за то, что свёл с нужными людьми.
Напутствие будущим авторам
Из всего процесса работы больше всего запомнилось не написание как таковое, хотя если оглянуться назад, то подбор материала занял около десяти лет, наверное с того момента, как я собственно и стал писать документацию и мелкие статьи. Но редактирование - это совершенно другой вид обработки материла, когда собираешь разрозненные заметки, написанные в разные годы и в разном настроении, и задача не просто выровнять стиль, а найти внутреннюю логику, ту самую «кость», на которой держится текст и которая проходит через всю книгу. И да, книга — это не сборник статей, а последовательность идей, где каждая следующая глава отвечает на вопрос, поставленный предыдущей, и пришлось многое переписать, что-то выкинуть, что-то переосмыслить. Это было сложно. В книге воплотилась уже четвёртая итерация текста, и местами переписано почти полностью.
Я вижу тут параллель с подходом, который позволил написать и издать книгу «Экскурс в неопределённое поведение C++» Дмитрию Свиридкину (@Nekrolm) — также в издательстве «БХВ». Книга Дмитрия — это всесторонний анализ случаев неопределённого поведения в C++.

Если вы годами пишете заметки, статьи, доклады, если у вас накапливается материал, который уже прошёл проверку читателями и обсуждениями, не относитесь к нему как к архиву. Возможно, это не черновики, а главы, просто пока не собранные вместе. Книга не обязательно начинается с чистого листа, иногда она начинается с обработки на уже проделанную работу и вопроса «что если это не просто так?» и, может быть, вы вдруг обнаружите, что у вас уже есть не просто тексты, а позиция, не просто статьи, а взгляд на профессию.
Комментарии (10)

alexeytaranov0
20.02.2026 06:50А скоро ли можно ожидать электронную версию?

OlegSivchenko
20.02.2026 06:50Через 6-7 месяцев. Такая политика для борьбы с пиратством

maisvendoo
20.02.2026 06:50Можно подумать так сложно бумажную отсканировать и выложить
Имхо, это просто желание побольше заработать на бумажной версии. Борьба с пиратством... смешно...

Serpentine
20.02.2026 06:50Я с комментом для поста-анонса немного запоздал, но как человек, который активно тормозил процесс и в первые же недели заспамил черновик своими комментариями и вопросами, не могу не поделиться своими личными впечатлениями от знакомства с книгой Сергея.
В первую очередь, Game++ — вдохновляющая книга, когда я читал о некоторых аллокаторах (их не было, в статьях на Хабре, если что), у меня временами взрывался мозг — "а что так можно было? кто такое вообще придумал?".
Порадовала часть про STL и вредные советы по алгоритмам (а-ля "Вредные советы для C++ программистов" Андрея Карпова — тоже классная книга), потому что там
мне иллюстрации не надо было рисоватья познакомился с очень сильной аргументацией и дельными замечаниями от практикующего С++ разработчика, а не теоретика. Она на меня сильное влияние оказала.И это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома, да и у них идет столько отсылок на источники, что лет за 50 всё не перечитать. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
А еще у меня, как у начинающего, эта книга развеяла иллюзии про оптимизацию кода, в голове раньше была какая-то радужная картинка, мол, вот крестами/матаном/CS овладею, паттерны повторю, где-то алгоритм со SO подрежу и буду вторым Кармаком — авотфиг! — тонну кода перечитай / сам напиши, инструментом овладей, матчасть прочитай, мозг включи, опыта / насмотренности наберись, вот тогда будет счастье (но не долго, т.к. эта музыка будет вечной, и придется повторять процедуру раз за разом).
Ну и еще много чего полезного я вынес из Game++, и рад, что удалось внести свою лепту в ее создание.
@dalerank, тебе и причастным большое спасибо за этот труд :)

mgis
Мое почтение тем кто в 2026 еще читает техническую литературу.
Всяко лучше чем, "ээээ ууу клод, давай добавь еще дерево на этой сцене.."
dalerank
Чтобы не прийти через некоторое время к "ээээ ууу гугл, давай добавь еще что-нить на этой как, его.. вот сюда вообщем" приходится не только читать, но и слушать. На удивление я сейчас читаю больше разных техматериалов, чем лет десять назад, когда не было клода, чатика и иже с ними