Шесть книг на пути настоящего разработчика

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

Язык программирования С++ Лекции и упражнения 6-ое издание

Начать стоит именно с этой книги, написанной бывшим преподавателем астрономии, физики и программирования Стивеном Праттом. Она пригодится не только начинающим разработчикам, но и тем, кто программирует на других языках. Это не просто книга, это настоящий учебник, содержащий строгое и ясное введение в C++, описанное простыми и доступными словами. Тут нет привязок к конфигурациям компьютеров или операционным системам, только фундаментальные концепции программирования и подробные сведения о языке. Шестое издание интересно тем, что дополнено информацией о новых тенденциях на C++ и детальным описанием C++11. Читатели единодушно сходятся во мнении, что книга содержательна и весьма полезна, но может отпугнуть немалым объемом тех, кто хочет быстрее погрузиться в изучение языка. Так же читатели ругают русский перевод, который содержит много неточностей, и советуют знакомиться с книгой на языке оригинала.

NB: Для профессионала нет разницы на каком языке программирования создавать программы. Поэтому начинать можно с любого языка, переключаясь затем на тот, который необходим для работы. Однако лучше выбрать наиболее популярный в индустрии язык, который может быть использован для создания большего количества классов программ. C++ - то, что вам нужно. На нем написано большинство игр, целиком или наиболее важные и сложные их части.

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих

Второй шаг на пути постижения программистского мастерства. По словам  Адитьи Бхаргавы, главная «фишка» его книги — простота объяснений и легкость прочтения. Судя по отзывам, читатели согласны с автором. Материал подается в доступной форме и будет понятен даже людям без подготовки. А для наглядности главы дополнены большим количеством иллюстраций, из-за чего книга становится больше похожей на учебник для учащихся младших классов. Но это не отменяет ее ценности, а наоборот, приумножает. Так же книга содержит задания и упражнения, чтобы вы могли проверить полученные знания. Описание обещает, что алгоритмы — это просто, а грокать их — веселое и увлекательное занятие. Заверяем вас, это правда. Однако и тут не обошлось без минусов. Как и в предыдущем пункте нашего списка, читатели ругают книгу за неточности в русском переводе.

NB: Одного знания языка программирования недостаточно. Надо хорошо понимать, как компьютер решает задачи, и как применить этот язык для описания решений. Алгоритмы – строительные блоки для решения любых задач. Любой программист должен знать простейшие из них и уметь составлять свои. Эта книга поможет познакомиться с элементарными алгоритмами и в доступной форме расскажет о них.

Алгоритмы на C++

Эта книга познакомит вас с фундаментальными алгоритмами, которые будут востребованы еще много лет, а может и никогда не утратят своей актуальности. Роберт Седжвик подробно описал более 10 важнейших для современного программирования тем. В первую очередь книга ориентирована на студентов, но будет полезна всем, кто уже ознакомился с азами программирования. На сегодняшний день вышло уже три издания, последнее из которых содержит самое современное, исчерпывающее описание важных алгоритмов и структур данных. Читатели называют «Алгоритмы на C++» классикой в своем жанре. Так же они отмечают, что изучение представленных тем не терпит спешки и предполагает проработку каждого алгоритма. К тому же, эта книга не зря стоит третьей по счету в нашем списке. Приступать к ее изучению следует только подготовленным читателям.

NB: Чем сложнее задачи, чем больше требований и ограничений к их решениям (скорость вычислений, объемы памяти и т.д.), тем сложнее алгоритмы и математический аппарат, которым необходимо владеть. Эта книга поможет углубить знания, и научит методам и подходам, применяемым при решении больших и сложных задач.

Game Engine Architecture 2nd edition

Первое издание многие зарубежные рецензенты наградили званием “must have textbook”. Книга Джейсона Грегори представляет собой наиболее полный гайд по современному геймдеву. Второе издание содержит целый ворох новейших сведений об архитектуре игровых движков. К сожалению, ни одно из изданий не было переведено на великий и могучий. Так что материал поддастся только тем, кто не понаслышке знаком с английским языком. Но продравшись сквозь множество иноязычных слов и терминов, вы узнаете об архитектуре восьмого поколения консолей, технологиях в современных ААА-проектах и многих других новшествах игровых разработок. Как сказано в описании: «Эта книга поможет вам в путешествии по увлекательному и многогранному миру геймдева».

NB: Предыдущие книги учили основам программирования «в общем», безотносительно к игровой разработке. После овладения основами можно приступать к изучению специфических вопросов, связанных именно с разработкой игр. Эта книга подробно описывает все части игрового приложения и основные вопросы, связанные с созданием игровых подсистем.

Язык программирования С# 6.0 и платформа .NET 4.6

Буквально два года назад вышло седьмое, самое новое издание книги Эндрю Троелсена и Филиппа Джепикса. Оно содержит всю информацию об изменения в спецификации языка C# и о новых достижениях платформы .NET Framework. Рассчитана книга на достаточно опытных программистов. К тому же она отличается солидным объемом в почти полторы тысячи страниц. Однако это обусловлено исчерпывающей информацией о языке C#, а также о Windows Form, MVC, WCF, ADO.NET и ASP.NET. По словам «прошаренных» в данных вопросах читателей, этот учебник заменяет собой сразу несколько книг о программировании, благодаря чему является настоящей находкой. Кстати, информация подается в доступной и понятной форме. Она призвана помочь читателю в решении специфических задач программирования.

NB: Большинство компаний создают игры не «с нуля». Они используют игровые движки, которые представляют собой уже готовые реализации многих игровых подсистем (чаще всего игровые движки написаны на C++). Разработчику остается только проработать игровую логику – основной геймплей. Одним из популярных игровых движков является Unity, в котором для создания игровой логики используется язык программирования C#. Эта книга познакомит со многими аспектами использования C#, достаточными не только для использования его в Unity, но и для создания любых приложений.

Introduction to 3D Game Programming with Direct X 12 (Computer Science)

Трудно представить, что столь специфичное чтиво может стать бестселлером. Но у книги Фрэнка Луны это получилось, благодаря своей актуальности в вопросах разработки компьютерной графики с использованием DirectX 12. Она в полной мере раскрывает три темы: основные математические инструменты, фундаментальные задачи в Direct3D, методы и специальные эффекты. Увы, но эта книга тоже не переведена на русский язык. Так что от читателя потребуются не только познания в программировании, но и владение английским.

NB: Графическая подсистема – одна из самых важных в игре. Сейчас большинство игр использует DirectX для вывода графики. Как при создании своего игрового движка, так и при использовании готового, необходимо хорошо знать 3D-математику, понимать, как функционирует графический адаптер, и как можно использовать его возможности для получения наиболее реалистичной и привлекательной картинки. Эта книга познакомит не только с основами программирования графики, но и раскроет многие тонкости графических алгоритмов.

Текст: Александр Ростовский, QA, Bytex