Есть ли книга (гайд) по введению в разработку 3D игр для бывалых в других сферах программистов?
Товарищ, могу сказать как человек, который чего только не попробовал разрабатывая игру. Началось всё с чистого Си, был и C# (банальная формочка с кучей кнопочек), был и С++ (чистый opengl и box2d для физики), потом XNA - мощный фреймворк для C#, правда умер к сожалению. Был pygame, правда ничего дальше пары хэлоу ворлдов не продвинулось. Вот сейчас ковыряюсь в юнити. Нередко организуюсь с другом на хакатоны - надо заметить, что с каждым разом продвигаемся всё дальше и дальше. Правда каждый раз и начинаем заново.
В общем, заметил несколько вещей. Во-первых, нужен не программист, а скриптер, по рангу он недалеко ушёл от кодера. То есть он и есть кодер, с тем лишь отличием, что скриптует сцены. Ну и да, было бы не плохо обзавестись другим скриптером, который напишет текст. Сегодня, для разработки игр программисты нужны лишь для ААА-проектов, когда требуется сварганить целый фреймворк и почти с нуля сотворить движок, ну или адаптировать старый к новому железу, что по сути одно и то же. Во-вторых, надо вообще много всякой шпаны - художники, дизайнеры, тестеры, звуковики. В общем, полный набор требуется. Конечно, можно совмещать все должности в одной, но это обычно плохо кончается.
Алсо, выбрав путь не стоит с него сворачивать. Это я говорю как опытный сворачиватель с путей - код переписывать не стоит, иначе как только он более менее разрастётся только и будете, что переписывать. Рефакторинг тоже делать надо очень осторожно. Чем модульнее тем лучше. И так далее.
По поводу манов - их дофига. Разной степени упоротости. Например, есть такой неплохой движок, как OGRE, у него на странице куча ссылок на демки, вики, книги, доки. Но это скорее для любителей хардкора. Для любителей велосипедов есть openal + opengl, ну или sdl + opengl. По opengl тоже много литературы, очень много. К тому же есть Unity3D, но программистам с ним, имхо, делать особо нечего - лишь ограничивает, да и по удобству он далеко не самый лучший, а производительность - ужс какой-то, хотя в большинстве задач хватает с головой.
И ещё раз постараюсь донести мысль - программист не главный. Более того, обычно он даже последний. Игра начинается с геймплея, который создаёт геймдизайнер. И обычно программисты хотят быть именно геймдизайнерами. Плохой путь, мы испорченные, если честно. Для нас есть очевидные вещи, что не очевидны для других, которые ломают игры. И нам сложно доступны некоторые вещи, что делают игры гуд. Потом идут артисты - те самые художники, звуковики, дизайнеры уровней, авторы текстов. И только потом программисты - современные машины очень быстры и перелопачивают даже быдлокод за микросекунды - дольше всего рисуется сцена. А на архитектуру игрокам вообще плевать - баги нередко могут стать фичами, да и при использовании движка основная архитектура уже есть, осталось только ей придерживаться.
В любом случае, удачи в начинаниях!
В качестве ознакомления, можно почитать отличную статью:
habrahabr.ru/post/131931