воскресенье, января 13, 2008

Хорошие книги по программированию игр

Порадовать вас тут мне нечем, прямо скажем. Книги по программированию игр переводятся на русский редко. А на английском они стоят немеряно, ну и читать на английском не каждый будет. Однако чем богаты тем и рады.

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

Переходим к основной части нашего развеселого повествования.

Программирование игр как дисциплина - очень размытое понятие. Туда входят программирование графики, программирование физики, искусственный интеллект, программирование сетевого взаимодействия (это для многопользовательских игр) и программирование звука и наверняка я еще что-то забыла. Короче, если в названии нет ключевых слов "программирование игр" это не значит, что к программированию игр книга не имеет никакого отношения.

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

Для начала те книги, которые есть в русском переводе.

Книги Андре Ламота (Andre LaMothe).
Удивительно плодовитый товарищ. Написал кучу книжек по программированию игр. Книги, на мой взгляд, средненькие.

Но он реально разрабатывал игры и довольно много. То есть человек знает то, о чем пишет, ерундой не занимается. Для начала его книг хватит.

В русском переводе есть две его книги.

Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации

Название оригинала: Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization

Не пугайтесь слова Advanced в названии. Она ни разу не advanced. Полное введение в программирование трехмерных игр с использованием DirectX. Обьем книги серьезный - почти полторы тысячи страниц.

"Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации" есть на Ozon.ru

"Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization" есть на Ozon.ru

"Tricks of the 3D Game Programming Gurus: Advanced 3D Graphics and Rasterization" есть на Amazon.com

Программирование игр для Windows. Советы профессионала

Название оригинала:
Tricks of the Windows Game Programming Gurus

Отзывы об этой книги хорошие, но она в основном посвящена 2D программированию с помощью DirectX, то есть DirectDraw. Это работа со спрайтами. Со спрайтами со времен восьмого DirectX особенно никто не работает. Все делается в 3D и двумерный паззл - это скорее всего трехмерная сцена, отрендеренная в ортогональной проекции. Короче, смысла покупать эту книгу я не вижу.

"Программирование игр для Windows. Советы профессионала" есть на Ozon.ru

"Tricks of the Windows Game Programming Gurus" есть на Amazon.com

DirectX: продвинутая анимация

Название оригинала: Advanced Animation With DirectX

Никакая она не продвинутая. Хорошее введение в анимацию. Включая скелетную и лицевую анимации. Интересное несовпадение. На Озоне ее рейтинг очень высокий, а на Амазоне - низкий. На Амазоне ее ругают за глюкавый код в примерах.

"DirectX: продвинутая анимация" есть на Ozon.ru

"Advanced Animation with DirectX"
есть на Ozon.ru. На момент написания поста продавалась там со скидкой 50%.

"Advanced Animation with DirectX" есть на Amazon.com

Искусственный интеллект. Современный подход

Название оригинала: Artificial Intelligence: A Modern Approach

Классическая обзорная книга по искусственному интеллекту. Качество - отличное, авторы - признанные специалисты в области искусственного интеллекта. Один из авторов - сам Питер Норвиг. Ее обязательно надо прочесть, если вы собираетесь программировать искусственный интеллект в играх. Популярностью особенной у людей не пользуется - я видела кучку слипшихся томов где-то на нижней полке в Библио-Глобусе.

"Искусственный интеллект. Современный подход" есть на Ozon.ru

"Artificial Intelligence: A Modern Approach" есть на Ozon.ru

"Artificial Intelligence: A Modern Approach" есть на Amazon.com

Создание 3D-ландшафтов в реальном времени с использованием C++ и DirectX 9

Название оригинала: Real-Time 3D Terrain Engines Using C++ and DirectX 9

Я смотрела ее наискосок, читала отзывы по ней. Это полное введение в программирование ландшафтов, включая воду и освещенность. Но на Амазоне ее ругают за неудачные примеры кода.

"Создание 3D-ландшафтов в реальном времени с использованием C++ и DirectX 9" есть на Ozon.ru

"Real-Time 3D Terrain Engines Using C++ and DirectX 9" есть на Ozon.ru. На момент написания поста продавалась там со скидкой 50%.

"Real-Time 3D Terrain Engines Using C++ and DirectX 9" есть на Amazon.com



На этом книги, переведнные на русский язык закончились. Те, которые не переведены.

Real-Time Rendering

Классическая книга по компьютерной графике. Нужна для глубокого понимания предмета. Теория в основном.

"Real-Time Rendering"
есть на Ozon.ru
"Real-Time Rendering" есть на Amazon.com







Game Programming Gems

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

На Ozon.ru ссылки приводить не будут. Там часть из этой серии есть, но цены запредельные. Дешевле заказать из Амазона. Так что ссылки на Amazon.

Game Programming Gems
Game Programming Gems 2
Game Programming Gems 3
Game Programming Gems 4
Game Programming Gems 5
Game Programming Gems 6
Game Programming Gems 7 - пока не вышла, но можно предзаказать

GPU Gems

Серия книг по программированию GPU, в том числе GPGPU. Подборка инициирована NVidia, так что все заточено под GeForce. Ну опять же не для начинающих.

GPU Gems: Programming Techniques, Tips and Tricks for Real-Time Graphics.
Updated 06.04.2008: Эту книгу NVidia официально выложила в онлайн: GPU Gems.

GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation


GPU Gems 3

Networking and Online Games: Understanding and Engineering Multiplayer Internet Games

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

"Networking and Online Games: Understanding and Engineering Multiplayer Internet Games" есть на Amazon.com




Physics for Game Developers

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

"Physics for Game Developers" есть на Amazon.com









Mathematics for 3D Game Programming and Computer Graphics
Книга для тех, кто прогуливал математику в вузе :-). Для тех, кто не прогуливал, тоже может оказаться полезной, потому что все необходимое аккуратно собрано и разложено по темам. Но все в ней изложенное - классическая математика, которую без труда можно найти Гуглом по ключевым словам.

"Mathematics for 3D Game Programming and Computer Graphics" есть на Ozon.ru

"Mathematics for 3D Game Programming and Computer Graphics" есть на Amazon.com



На Амазоне еще очень много книг по программированию игр. Можно побродить по ссылкам, начав с любой из приведенных мною книг. Почитать отзывы, посмотреть рейтинг, он обычно соответствует действительности.

Информацию по DirectX, как это ни странно, можно найти DirectX SDK. Этот SDK - это не только справочник. Там есть реально хорошие статьи по общим принципам работы DirectX.

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

Ссылки по теме:
Книги с рейтингом есть на gamedev.net.
Еще список книг по программированию игр
Хорошие книги по C++
Хорошие книги по организации кода

25 коммент.:

CyberZX комментирует...

Могу посоветовать автора David H. Eberly.
3D Game Engine Design, я считаю, должна быть настольной книгой разработчика игр.
Game Physics хорошая книга, для желающих разобраться в физическом моделировании.

Мне нравится, что он активно использует математику, давая программисту более глубокое понимания техник разработки игр, а не пишет как пользоваться тем или иным API, чем грешит Ламот.
Хотя это и накладывает определённые ограничения в математической подготовке программиста, но это только плюс.

digited комментирует...

На русском по анимации издавалась неплохая книга Рика Пэрента "Компьютерная анимация. Теория и алгоритмы". Несмотря на 2002ой год издания оригинальной английской книги и потому устаревший материал, обзор алгоритмов и принципов довольно широкий.

Alex Ott комментирует...

Книга Норвига, кстати, очень хорошо переведена

Анонимный комментирует...

Из серии Gems еще есть AI Game Programming Wisdom, там уже тоже четвертый том выходит. Они, правда, довольно неровные, это вам не Норвиг.

AI:MA действительно можно и по-русски читать.

Анонимный комментирует...

книги прекрасны, нет сомнений.
Только непонятно вот что, Алена: движимый на досуге ознакомиться с программированием игр, я вряд ли захочу отдавать столько денег за этот свой досуг. Не могли бы вы привести ссылки и на бесплатные книги-ресурсы того же качества (Ла Мота не берем, ибо известен и читан-перечитан).
Нет, я все понимаю, интелектуальная собственность -
это есть ога - но .. может.. науку в массы, а?

Спасибо :)

Alex Ott комментирует...

2sse: http://ebdb.ru/ или http://gigapedia.org/

Alena комментирует...

2sse:
http://ebdb.ru/ или http://gigapedia.org/

Ну и Google is your friend, как обычно.

CyberZX комментирует...

2sse, могу скинуть архивчик гиговый с геймдевоскими книгами в электронном варианте. там все эти есть и сотни других.

Anton комментирует...

http://netlib.narod.ru/ Энтузиаст переводит книги по геймдеву и не только...

Анонимный комментирует...

2cyberzx:
спасибо, принимаю ваше предложение =) адрес: sse.void (сцабака) gmail (дот) com.

только гиг - это, наверное, перебор :) для меня, как минимум. если вас не затруднит, ужмите его, пожалуйста, выбросив бинарии и все неактуальное (DOS, DX ver < 7 и т.д.).

2Alena: прошу прощения, что пост не в кассу. больше не повторится.

Анонимный комментирует...

По-поводу "книг для ознакомления" можно, наверное, посоветовать pdfchm.com (к каждой книге есть аннотация и ссылки на то что, еще читают вместе с данной).

Anton комментирует...

Вот еще ссылочка,очень порадовала http://www.eknigu.com/lib/Cs_Computer%20science/CsCg_Computational%20geometry/

digited комментирует...

БХВ-Петербург выпустил крошечным тиражом книгу Алексея Попова "DirectX 10 - это просто. Программируем графику на С++" с диском в комплекте.

Господин Жарков написал еще одно чудо и продает его, как обычно, по запредельно-космической цене. Интересно, ЭТО реально кто-то покупает и использует по назначению?

Alena комментирует...

2Евгений Железников:
БХВ-Петербург выпустил крошечным тиражом книгу Алексея Попова "DirectX 10 - это просто. Программируем графику на С++" с диском в комплекте.

В смысле - ты читал и рекомендуешь?

Да, ссылка на книгу получилась битой, я так понимаю вот это оно.

Господин Жарков написал еще одно чудо и продает его, как обычно, по запредельно-космической цене. Интересно, ЭТО реально кто-то покупает и использует по назначению?

Покупать наверняка покупают, иначе бы он не стал писать дальше. А вот насчет использования по назначению... Я видела по его книгам только отрицательные отзывы. Сама, правда, не читала, поэтому осуждать не берусь.

digited комментирует...

2алёна
Прочитал, рекомендую для освоения десятого директа. Не Graphic Gems, конечно, но перейти с 9 на 10 и освоить - самое то.

(хм... Извиняюсь за ссылку. Вроде проверял при просмотре перед постингом...)

Alena комментирует...

Господин Жарков написал еще одно чудо и продает его, как обычно, по запредельно-космической цене

Книги Жаркова обсуждают тут.

digited комментирует...

Кстати, и здесь...

Анонимный комментирует...

Здравствуйте. Люди, а кто, что может сказать о книге Михаила Фленова "Искусство программирования игр на С++", звучит заманчиво :) но вот сомневаюсь, покупать или нет :)

Анонимный комментирует...

http://www.netlib.narod.ru/category.htm?1275

вот здесь еще кое что есть + к вашему обзору
по программированию игр

Анонимный комментирует...

Здравствуйте можете посоветовать книги по программированию жидкости.
например как ода огибает препятствия или же в частности заполнение стакана водой
если вам конечно не трудно.
saint.spirit88@gmail.com

Viacheslav Borisov комментирует...

Могу порекомендовать Game Coding Complete.

Книга уже пережила третье издание и на сегодня является неким аналогом "Совершенного кода" (Code complete) для разработчиков игр.

Автор книги человек из индустрии, работавший над сериями Ultima и Thief 3: Deadly shadows. Соответственно не по наслышке знает всю кухню разработки многопользовательских ММО-игр и игр для консолей.

В отличие от серии Game Programming Gems это не сборник рецептов а учебник, со связанными главами, посвященных построению типового игрового движка. То есть вначале рассматриваеться общая архитектура игрового движка, а затем последовательно каждый из его компонентов (ресурсы, обработка ввода, менеджер событий, скрипты и т.д.) Причем основное внимание уделено темам которые как правило упускаются из вида в том же Ламоте. Материал не зацикливается на графике, DirectX, вместо этого рассматривая фундаментальные подсистемы любого игрового движка такие как менеджер памяти или программирование интерфейса и drag&drop.

Наконец автор показывает пример создания игры на базе созданного движка, и редактора уровней.

В целом книга полезна как вводный курс по программированию игр, дающий общую картину, как устроены современные кросплатформенные игровые движки (то есть такие, которые используются в играх трехлетней давности, вроде Oblivion).

Из недостатков, могу отметить низкое качество программного кода. Мешанина разных стилей и концепций. В коде часто перемешаны вызовы функций стандартной библиотеки и Win32 API. Для построения визуальных виджетов в игре напрямую используется DirectX Sample Framework.
Примеры кода приведенные в книге часто содержат опечатки, поэтому исходный код для изучения лучше скачивать по ссылкам приведенным в книге. Автор переодически вносит исправления в исходный код, и последнюю версию можно скачать через SVN-клиент.
Второй недостаток - жаргон. Книга написана на "техасском сленге". Некоторые словечек нет даже в словаре Google. Хотя написано с юмором. Есть например целая глава о серых буднях американских разработчиков игр.

Анонимный комментирует...

В качестве вводного курса Jonathan S. Harbour - Advanced 2D Game Development
http://www.amazon.com/gp/product/1598633422?ie=UTF8&tag=jharbourcom-20&link_code=as3&camp=211189&creative=373489&creativeASIN=1598633422
Основная заслуга состоит в том что книга легко читается (прочитал менее чем за месяц). Рассматриваются два коллижн метода(прямоугольников и радиусов). Закладываются базовое представление о конструкции движка. По сути вся книга проводит читателя по шаг за шагом добавляя классы в движок, хоть сам автор говорит что очень сложно составить список изменений от урока к уроку (интересно почему он так говорит, вроде с системой контроля версий работает, возможно на момент написания книги ещё не был знаком). Рассказывается роль скриптов в играх (автор остановился на Lua).

Ну, а так книга конечно слабовато (пришлось делать рефактор кода, иногда напечатанный в книге код не совпадал с тем что на СД, и с тем что автор выложил на сайте), для совсем уж новичков может увести в сторону.
Моя рекомендация, самостоятельно перенабирать исходники, только так можно убрать все грабли в коде (может так и задумывалось?).
Таким спсобом удалось добавить поддержку Юникода исходникам, перейти от std::string к массивам строк ;) (кроме одного класса - Console).
Последнее может было и зря, но после Си хотелось с чем-то близким поработать.

solon-press комментирует...

Привет, друзья!
На сайте издательства Солон-Пресс доступен предзаказ книги о разработке игр: «Волшебство момента вращения: Искусство разработки игр на движке Torque 2D» (https://clck.ru/9vitX)

codernet комментирует...

Могу посоветовать сайт http://codernet.ru возможно подчерпнёте для себя много новой литературы , я как то тоже делал подобную статью этот сайт меня выручил. А так подборка конечно просто отличная

Ростислав комментирует...

Ну, те, кто пишет, что Ламот использует API DirectX, скорее всего не читали его книгу, которая по программированию трехмерных игр. DirectX он использует только лишь для вывода точки. В остальном он пишет полностью свой графический API, не используя средства ни DirectX, ни OpenGL. В этом ценность этой книги. Поэтому с этой точки зрения она advanced.