Отзывы читателей о книге «Game++. Устройство и оптимизация игрового движка».
Впервые я оценил писательский талант Сергея, познакомившись с его статьями на Хабре, где они регулярно привлекают множество читателей и получают высокие оценки. Привлекли они и меня разбором интересных ошибок из мира разработки игр на языке C++. Тематика неопределенного поведения (UB) и вообще багов мне близка и интересна. Во-первых, с практической точки зрения: как источник идей для создания новых диагностических правил в PVS-Studio. Во-вторых, Сергей действительно интригующе пишет, и интересно пытаться угадать, к чему приведет его очередная история о том, как что-то работает не так, как задумано.
Истории настолько понравились, что мы даже вместе подготовили развлекательный квиз, где надо угадать, что не так с кодом C++. На самом деле, ответы носят предположительный характер, т. к. никакой точный ответ невозможен, когда речь идет о UB. Однако мы ведь старались не для оценки знаний, а для поднятия настроения программистам, так что получилось хорошо.
Теперь вы держите в руках новый масштабный труд Сергея о разработке игр и их оптимизации. Я далек от тематики игр и не берусь оценить, например, приведенный там обзор игровых движков и специфических подходов для увеличения производительности. Однако как любитель «экстремального использования С++» считаю книгу однозначно достойной внимания. Вы найдете описания многих приемов, которые следует применить при необходимости на практике, а также тех, которые применять не стоит :) Сергей поистине раскрывает бездну «великолепия и ужаса» языка C++.
Желаю всем приятного чтения! И качественного быстрого кода, хотя понимаю, что совместить это непросто. Удачи :)
Прочитала книгу Сергея Кушниренко «Game++. Успеть за 16 мс.» Вы, возможно, читали его статьи на Хабре, где он пишет под ником dalerank. Отличная книга, видно что в неё вложено много времени и сил, рекомендую.
В книге собран уникальный опыт Сергея, который занимается разработкой игр в крупных коммерческих компаниях. Поэтому в ней много примеров из реальных игр. Вы узнаете как в GTA V организована загрузка статических объектов, какие аллокаторы использовали в The Sims, как генерируется планета в No Man's Sky. Какие ошибки разработчиков влияют на производительность и как их исправить.
Всё описанное в книге применимо не только в играх, но и в любых системах, где важна скорость и счет идет на миллисекунды. Я работала и в разработке игр, и с высоконагруженными распределенными системами, и всю эту информацию мне приходилось добывать из статей, блогов, рассказов коллег. В серии книг Game Programming Gems также были отдельные главы про производительность. Здесь же в одной книге собраны самые современные подходы к оптимизации С++ кода, проверенные на практике. Все темы хорошо проработаны. Описано более десятка различных аллокаторов. Есть главы про параллелизм, работу с потоками, неблокирующую синхронизацию. Бонус — небольшой справочник по алгоритмам STL. Есть ссылки на код на гитхабе, то есть все бенчмарки можно запустить, проверить, пощупать.
Если вы никогда не занимались оптимизацией С++ кода, то в Game++ есть вся необходимая информация, чтобы начать этим заниматься. Если вы уже опытный разработчик, вы найдете для себя новые подходы и идеи, которые стоит попробовать. Так что читайте с удовольствием и не забывайте, что преждевременная оптимизация — корень всех зол.
Дополню небольшим инсайтом про работу над черновиком Game++ уже со своей колокольни.
С Сергеем познакомился на Хабре и, когда я летом прошлого года в комментах оффтопнул с наивным вопросом: «а где прочитать разное структурированное про оптимизацию? чтобы не метаться по всему интернету и не тратить много лет, собирая в своей голове всё это воедино», он мне в личке предложил посмотреть черновик будущей книги и позадавать вопросы, если я чего-то не понял из материала. Вопросов я назадавал вдоволь, да и своими комментами буквально заспамил весь черновик.
Там поначалу была только половина (около 250 страниц) материала и ASCII-схемы из статей одноименного цикла. В некоторые схемы я не врубился и вызвался их перевести в вектор (пришлось вспомнить университетские навыки работы с CorelDraw), чтобы было и красивее и понятнее (даже мне). Как результат: два или три месяца работы по вечерам/ночам и около 250 иллюстраций. Они с виду простенькие, но над некоторыми пришлось поработать дольше, почитать доп.литературу, статьи, собрать референсы, чтобы как можно локаничнее, точнее, нагляднее и грамотнее передать суть.
Теперь впечатления непосредственно про книгу — она вдохновляющая, когда я читал о некоторых аллокаторах (их не было в статьях на Хабре, если что), у меня временами взрывался мозг — «а что так можно было? кто такое вообще придумал?». Вот игрушка на первый облыжный взгляд простенькая, ну не крузис же, чего сложного-то? — а под капотом тройной стековый аллокатор, еще и на асме, чтобы на железе тех лет она не то что летала, а вообще работала — вы представляете этот уровень мастерства и любви к искусству?
Про аудиторию. Game++ — это не учебник и не руководство для совсем уж начинающих, т.е. с одной только этой книгой вы движок не напишете, предполагается, что на плюсах писать вы можете и хотите. Более широкие знания / направления можно почерпнуть из GEA Грегори вкупе с Game Programming Patterns Найстрома. Game++ эти книжки хорошо дополнит — можно (или лучше даже) читать их параллельно.
Ну и еще много чего полезного я вынес из Game++, и про архитектуру и обзоры движков (юнити, анрил, дагор, край энжин и т.д.), и про аллокаторы и контейнеры: какие бывают, где их применять, как их разогнать, какие нюансы и подводные камни бывают. И еще вагон с тележкой про многопоточность и паттерны разработки. Сергея и причастных еще раз благодарю и поздравляю с выходом книги. Рад, что удалось внести свою лепту в ее создание.
Отличная книга! Спасибо за ваш труд! Получил в подарок от жены к 23 фев. Заказали как только вышел пост, на следующий день уже привезли.
Легко читается (учитывая техническую сложность вопроса), чувствуется что написана с душой. Радует обилие деталей, личных примеров и тестов, особенно ценен личный опыт автора. Есть некоторые ассоциации с книгой «Паттерны программирования игр» Роберта Нистрема, где автор также делится своими наработками.
Сам пишу на C# (Unity), но всегда интересны подкапотные детали и особенности работы. Если переживаете что не знаете C++ — не волнуйтесь, примеры хорошие, написано доходчиво. Но базовое понимание синтаксиса все же будет плюсом.