cplus-plus.ru logo
Мы переехали на cplus-plus.ru
Главная страница В закладкиО сайтеКарта сайта
Хостинг от uCoz
Добавить в закладки

Меню сайта

Полезные ссылки

Наша рассылка
Подписаться на рассылку
"C++ : cplus-plus.ru :
Рассылка статей C++"


Друзья сайта
alsproject.ru Выбор выходного разделительного конденсатора

Приветствую Вас, Гость · rss 29-Мар-2024, 17:29
Главная » 2010 » Декабрь » 14 » Я хочу программировать игры! Что мне делать?
11:52
Я хочу программировать игры! Что мне делать?

Я хочу программировать игры! Что мне делать?
Вопросы от людей, которые хотят программировать игры, приходят все чаще, а это значит, что пора писать пост. Не то, чтобы у меня был грандиозный опыт разработки игр, но вполне себе неплохой опыт есть. Ну и толпы желающих помочь новичкам не наблюдается.

Итак, для начала нам надо понять, как именно происходит разработка игр. И познакомиться с общей ситуацией в индустрии...

-Алёна, давай ближе к делу! Лесом ситуацию в индустрии, программить уже давай!

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

-Я поставил себе Visual C++ 2010? Я все правильно сделал?

Если вы работаетет с Windows, то да, лучше Visual C++ и лучше версию поновее. Про разработку игр под Линукс я не в курсе...

-DirectX или OpenGL?

Это зависит... На Windows в основном используется DirectX. Но это вовсе не значит, что OpenGL никому не нужен. На консолях встречаются графические API, сильно похожие на OpenGL, ну и под Линуксом никакого DirectX нет.

-Так все-таки, DirectX или OpenGL?

Ставьте DirectX. :-)
Только DirectDraw смотреть не нужно, им никто не пользуется.
В DirectX есть очень хорошие хелпы и примеры, не игнорируйте их.

-У меня ничего не работает, ничего не компиляется!

Вы не одиноки. Поищите ваши ошибки Гуглом, наверняка найдете таких же несчастных.

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

-Да ну, там все по-английски...

Надо учить английский. На русский переведено мало и для работы этого недостаточно.
Как обычно, Google is your friend. Вот что выдает нам поиск по запросу game programming lectures.
Game Programming 2007
CSE 191: Video Game Programming Seminar
Обзор книг по программированию игр я делала здесь. И вот еще открытые исходники игр.

-Правда, что все игры разрабоатываются на С++?

Игры разрабатываются не только на С++. Активно используются также:
Python, Lua - Для скриптования игровых движков. Также для скриптования могут использоваться языки, специфичные для данного движка. Например, UnrealScript.
C# - утилиты. Очень любим, потому что С++ программистам с ним легко разобраться.
C#, Java - серверная часть MMO.
Java - используется на мобильных платформах
HLSL - используется для программирования шейдеров

Знание С++ не то чтобы обязательно, но он в разработке игр используется очень активно и с ним жизнь упрощается.

-Что такое игровой движок? У меня уже есть DirectX. Это что, не движок?

DirectX работает на уровне "нарисовать треугольник". Игровой движок поднимает вас на уровень выше, здесь будут "объект с трехмерной моделью и поведением", "вода" и т.п.

Игровые движки бывают разные. Например, может быть только графический движок, но без физики. Вы тогда можете писать физику сами или подключить какой-нибудь движок физики. Также отдельно может идти AI движок.

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

Примеры бесплатных движков:
OGRE, Irrlicht - игровые движки, графика там в основном, насколько я помню
ODE - движок физики

Игра - это не только DirectX, не только графика. Если вас интересует устройство на работу в качестве разработчика игр, то посмотрите вакансии игровых контор, посмотрите чего они хотят и вам станет понятнее чего учить (Epic games, id Software).

Вот примеры специализаций игровых программистов, с описанием чего надо знать по каждой специализации. Это роли могут различаться, всё-таки всё сильно зависит от конкретной платформы и компании.

Graphics programmer - программист графики. Здесь нужно знание математики (векторы, матрицы, кватернионы). Понимание того, как работают видеокарты, шейдеры.
Physics programmer - программист физики. Нужны довольно специфичные знания физики, ну и математика тоже.
AI programmer - программист искусственного интеллекта. Алгоритмы на графах (A*, Дийкстра), конечные автоматы...
Gameplay programmer, game mechanics programmers - программист игровой механики. Эта роль вызывает больше всего непонимания. Это те программисты, которые пишут в игре всё остальное. Изменение параметров при попадании одного юнита в другого, отображение этого всего в интерфейсе, подгрузка следующего уровня. Куча вот таких мелочей.
Interface programmer - разработчик интерфейсов.
Network programmer - сетевой программист. Нужны стандартные знания по разработке сетевого кода.
Tools Programmer - разработчик утилит. При разработке игры используют дополнительные программы, которые иногда пишутся самостоятельно, иногда покупаются вместе с движком. Пример игровой утилиты - редактор уровней.

Также бывают нужны инженеры для поддержка автосборки, программисты аудио, специалисты для работы с базами данных.

Для начала не пытайтесь написать игру с нуля. Модифицируйте чужой код, пишите моды.

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

-Да, у меня есть отличная идея MMORPG!

Возьмите любую MMORPG, откройте кредитсы и посмотрите на список людей, которые работали над этим проектом. Далеко не все они страдали там фигней, уверяю вас. Разработка MMORPG - многомиллионный проект с количеством людей, несколько больше одного.Для начала напишите паззл небольшой, напишите арканоид.

-Алён, ты что, шутишь?

ОК, пусть это будет RPG, без MMO. Один, маленький уровень, как можно меньше деталей. Попробуйте получить минимальную играбельную версию.

-Алёна, у меня еще куча вопросов!

Постараюсь ответить. Но не могу обещать, что отвечу на все :-).
Ахинею про то, о чем не знаю, писать не буду. Спрашивайте в комментариях.

Ссылки по теме:
AIGameDev
Вопросы по программированию ИИ в играх

Источник: alenacpp.blogspot.com
Источник: Я хочу программировать игры! Что мне делать?
Категория: Новости | Просмотров: 675 | Добавил: FazaNaka | Рейтинг: 0.0/0
Всего комментариев: 1
1 FazaNaka  
0
Интересная статья, в ее официальном блоге опубликованы доклады, советую посмотреть alenacpp.blogspot.com

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]