Форум программистов, компьютерный форум, киберфорум
Программирование игр
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/254: Рейтинг темы: голосов - 254, средняя оценка - 4.83
Эксперт С++
3183 / 864 / 39
Регистрация: 29.12.2008
Сообщений: 952
1

FAQ по созданию игр

06.10.2009, 20:09. Просмотров 51661. Ответов 0
Метки нет (Все метки)

Область игростроения необычайно обширна. Ответить на все возникающие вопросы невозможно. Более того, невозможно даже составить примерный список возникающих вопросов. Так что данный FAQ носит своего рода методический и понятийный характер. В его рамках я постарался рассмотреть возможные этапы создания игры и по возможности полно раскрыть каждый из них.

Задумка и документирование игры.

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

Получив краткое описание игры, необходимо следующим шагом расписать его подробнее. Для этого создается ещё один документ – дизайн-документ (диздок). В нем детально отражаются все стороны проекта: описание функций и свойств игры, её внешний вид, управление; технические данные (системные требования, платформа, файловая структура и т.д.); графическая составляющая (эскизы, стиль); сюжетная часть (диалоги, предыстория, описания персонажей и т.д.); маркетинговые рассчеты; возможности расширения игры и многое другое. Диздок составляется на начальных этапах, но живет своей жизнью на протяжении всего процесса создания игры – в него все время вносятся изменения, идеи, уточнения.

Настолько ли важно для процесса создание дизайн документа?
Важность дизайн-документа трудно переоценить. Без него, в конечном счете, вряд ли получится что-то внятное. Например, сегодня Вы видите игру так, завтра – иначе. Или вчера Вам пришла в голову идея, но сегодня Вы её забыли. А ещё был какой-то очень важный нюанс, но он уже не учтен… А если созданием занимается команда, то она просто обязана как-то координировать свои действия, иметь какой-то образец перед глазами.

В конечном счете, у нас имеется своего рода игра, написанная на бумаге и ясное представление о том, какой она будет. Можно переходить к следующему этапу.

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

Подбор команды.

Кто занимается созданием игры?
Выделяют следующие роли людей в проекте:
  • Продюсер - (один или несколько) для наблюдения за производством. Отвечает за финансовую и маркетинговую сторону проекта.
  • Гейм-дизайнер (по крайней мере один) - человек, разрабатывающий правила игр. Слово «геймдизайнер» применяется в основном к компьютерным играм. Роль геймдизайнера аналогична роли постановщика задачи в обычном программировании и режиссёра в кино. Основная задача геймдизайнера — разработка дизайн-документа.
  • Сценарист — отвечает за художественную часть: персонажей, диалоги и т. д. Умеет писать художественным языком.
  • Художники. В зависимости от игры это 2D-художники (концепт-художники, художники по текстурам, художники по интерфейсам), 3D-художники (моделлеры, аниматоры) и прочие ребята, ответственные за внешний вид игры.
    Зачастую выделяют главного художника, который отвечает за координацию работ остальных художников и не допускает разнобоя художественных стилей.
  • Программисты. Люди, которые создают механизмы игры.
    Как и при создании обычных программ, выделяют ведущего программиста, который отвечает за техническую часть: распределение задач по программированию, стандарты кода.
  • Дизайнеры уровней.
  • Звукооператоры (композиторы и те, кто работает над звуковыми эффектами).
  • Тестеры.
Некоторые члены команды могут выполнять несколько функций. Например, продюсер также может быть дизайнером или ведущим программистом.

Сколько людей нужно чтобы создать игру?
Важно выбрать оптимальное количество человек в команде. Принцип "чем больше - тем лучше" тут не сработает. Иногда даже может произойти наоборот: набрав большое количество людей, можно получить колоссальный разброд мыслей, что не пойдет на пользу проекту и снизит скорость его разработки. Задумывая новую роль в команде, нужно задумываться - действительно ли она нужна или можно обойтись без нее.
Количество также во многом зависит от масштаба проекта.
Если разрабатывают небольшую игру, то как правило берут связку программист+художник, а остальные роли распределяют между ними. Такой дуэт оптимален и вообще выполняет большую часть работы по созданию игры (если не всю). Кроме того, в любой момент времени можно включать новые роли, совершенствуя и ускоряя разработку.
Для более крупных проектов можно обойтись 5-6 ролями, для больших - большим количеством людей.
Естественно, маленькую игрушку может создать и один человек, выполняющий все роли, особенно на готовых движках или конструкторах.

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

Программирование игры.

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

Шаг 1. Выбор инструментария.

С помощью каких программ нужно создавать игру?
Игра включает в себя различные аспекты. Инструментарий для её создания разнообразнейший и в нем легко запутаться.
Чтобы было проще выбирать, я условно разбил всё существующее ПО, связанное с созданием игр на три группы, о которых постараюсь вкратце рассказать.
  • Конструкторы игр и прочие инструменты, позволяющие создавать игры без программирования.
    Конструктор – это набор сопрягаемых деталей. Так и программы данной группы – всего лишь готовый набор объектов, которые Вы можете настроить, указать как они будут взаимодействовать, выбрать их расположение, тем самым составив игру.
    Минусы очевидны – Вы полностью ограничены возможностями конструктора. Игры получаются однообразными, довольно простенькими и убогими. Если Вы придумали интересный трюк, то не факт что Вы его сможете реализовать.
    Плюсы также очевидны – разобраться с программой-конструктором очень просто, большинство имеет интуитивно понятный интерфейс и, кроме того, довольно большую аудиторию игроделов, а следовательно, множество примеров и мануалов, написанных понятным языком. Важным также является то, что для создания своей игры не потребуется навыков программирования и знания теории, а сам процесс займет малое количество времени. А начинающие игроделы научатся понимать саму логику и механизмы игры на этих упрощенных моделях.
    В общем, если целью стоит создание простенькой игрушки, на забаву себе и друзьям в короткие сроки, то конструктор игры – вещь как минимум заслуживающая интереса.
  • Готовые движки.
    • Игрово́й движок — это центральный программный компонент компьютерных и видео игр или других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows. Основную функциональность обычно обеспечивает игровой движок, включающий движок рендеринга («визуализатор») для 2D или 3D графики, физический движок или обнаружение столкновений (и реакцию на столкновение), звук, скриптинг, анимацию, искусственный интеллект, сетевой код, streaming, управление памятью, threading и граф сцены. Часто на процессе разработки можно сэкономить за счет повторного использования одного игрового движка для создания множества различных игр.
    • Графический движок (англ. graphics engine; иногда «рендерер» или «визуализатор») – подпрограммное обеспечение (англ. middleware), программный движок, основной задачей которого является визуализация (рендеринг) двухмерной или трёхмерной компьютерной графики. Может существовать как отдельный продукт или в составе игрового движка. Может использоваться для визуализации отдельных изображений или компьютерного видео. Графические движки, использующееся в программах по работе с компьютерной графикой (таких, как 3ds Max, Maya, Cinema 4D, Zbrush, Blender), обычно называются «рендерерами», «отрисовщиками» или «визуализаторами». Само название «графический движок» используется, как правило, в компьютерных играх. Основное и важнейшее отличие «игровых» графических движков от программных рендереров состоит в том, что первые должны обязательно работать в режиме реального времени, тогда как вторые могут тратить по несколько десятков часов на вывод одного изображения. Вторым существенным отличием является то, что начиная приблизительно с 1995-1997 года, графические движки производят рендеринг с помощью графических процессоров (англ. GPU), которые установлены на отдельных платах — видеокартах. Программные рендереры используют только центральные процессоры (англ. CPU).
    Как правило, графические движки не распространяются отдельно от игровых. Единственного графического движка без дополнительных компонентов и инструментария недостаточно для создания игры, поэтому разработчики движков продают лишь игровые движки с полным набором инструментов и компонентов. Однако это правило не относится к свободному программному обеспечению. Энтузиасты создают свободные графические движки и свободно их распространяют. Впоследствии разработчики игр могут объединить свободный графический движок с физическим, звуковым и другими компонентами и создать на основе их полноценный игровой движок.
    • Физический движок — подсистема в компьютерных играх и некоторых других приложениях, отвечающая за симуляцию физики абсолютно твёрдого тела (с появлением PhysX - и за поведение "тряпичных" и мягких тел, так же). В силу специфики области применения, основными требованиями, предъявляемыми к физическим движкам, являются высокая производительность и реалистичность. Однако требование «реалистичности» не всегда совпадает с требованием физической точности симуляции, и предполагает только субъективную достоверность поведения твёрдых тел, а иногда — даже всего лишь красоту и зрелищность (тогда это называют «кинематографичной физикой») В августе 2009 года англоязычный журнал Game Developer (англ.), посвящённый разработке компьютерных игр, опубликовал статью о современных игровых движках и их использовании. Согласно данным журнала, наиболее популярным среди разработчиков является движок nVidia PhysX, который занимает 26,8% рынка. На втором месте находится Havok, который занимает 22,7% рынка. Третье место принадлежит движку Bullet Physics Library (10,3%), а четвёртое — Open Dynamics Engine (4,1%).
    • Звуковой движок (англ. sound/audio engine) — программный компонент игрового движка, отвечающий за воспроизведение звука (голосов персонажей, шумовое и музыкальное оформление) в компьютерной игре или другом приложении. Звуковой движок часто отвечает также за имитацию определенных акустических условий, воспроизведение звука согласно местоположению, эхо и т.д. Примеры известных звуковых интерфейсов программирования приложений (англ. API) и программных библиотек, которые используются в звуковых движках — Environmental Audio Extensions (EAX), OpenAL, FMOD, DirectSound3D и др.
    • Игровой искусственный интеллект (англ. Game artificial intelligence) — набор программных методик, которые используются в компьютерных играх для создания иллюзии интеллекта в поведении персонажей, управляемых компьютером. Игровой ИИ, помимо методов традиционного искусственного интеллекта, включает также алгоритмы теории управления, робототехники, компьютерной графики и информатики в целом. Реализация ИИ сильно влияет на геймплей, системные требования и бюджет игры, и разработчики балансируют между этими требованиями, стараясь сделать интересный и нетребовательный к ресурсам ИИ малой ценой. Поэтому подход к игровому ИИ серьёзно отличается от подхода к традиционному ИИ — широко применяются разного рода упрощения, обманы и эмуляции. Например: с одной стороны, в шутерах от первого лица безошибочное движение и мгновенное прицеливание, присущее ботам, не оставляет ни единого шанса человеку, так что эти способности искусственно снижаются. С другой — боты должны делать засады, действовать командой и т. д., для этого применяются «костыли» в виде контрольных точек, расставленных на уровне.
  • Средства разработки и среды программирования.
    Эта группа предназначена для написания собственного движка.
    В контексте данной темы фраза «написать движок» будет означать написание механизмов нашей отдельно взятой игры. Не нужно пытаться писать универсальный движок для множества игр, не нужно усложнять свою программу. Ограничьтесь минимально возможным набором объектов и наиболее простой системой для функционирования Вашей игры.

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

    Какой язык выбрать для программирования игры?
    По поводу выбора языка вряд ли кто возьмется дать какой-либо конкретный ответ. Да, самый распространенный – это C++. Но также это может быть и C#, и Delphi и Basic и любой другой
    (полезная ссылка по вопросу: Кто чем пользуется для написания игр?)
    Какие графические API обычно используются?
    Из графических API традиционно выделяют DirectX и OpenGl, но существуют и другие.

    DirectX — это набор API функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. Зачастую свежие версии DirectX поставляются вместе с игровыми приложениями, так как DirectX API обновляется достаточно часто, и версия, включённая в ОС Windows, обычно является далеко не самой новой.

    Вообще говоря, DirectX – это не только API для графики.
    В целом, DirectX подразделяется на:
    • DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на:
      • DirectDraw: интерфейс вывода растровой графики. (Его разработка давно прекращена)
      • Direct3D (D3D): интерфейс вывода трёхмерных примитивов.
    • DirectInput: интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров.
    • DirectPlay: интерфейс сетевой коммуникации игр.
    • DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave)
    • DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft.
    • DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных.
    • DirectSetup: часть, ответственная за установку DirectX.
    • DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики)
    • Direct2D : интерфейс вывода двумерной графики.
    Практически все части DirectX API представляют собой наборы COM-совместимых объектов.

    OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
    Включает более 250-ти функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.
    Существует ряд библиотек, созданных поверх или в дополнение к OpenGL. Например, библиотека GLU, являющаяся практически стандартным дополнением OpenGL и всегда её сопровождающая, построена поверх последней, то есть использует её функции для реализации своих возможностей. Другие библиотеки, как, например, GLUT и SDL, созданы для реализации возможностей, недоступных в OpenGL.
Что лучше - DirectX или OpenGL?
У каждого из этих продуктов свои особенности, достоинства и недостатки.
Полезная ссылка по вопросу: DirectX vs. OpenGL.

Шаг 2. Изучение теории.
Следующим логичным шагом будет изучение теории по выбранному инструментарию.

Какие книги можно почитать по ... ?
Я собрал возможную полезную литературу в отдельном разделе: Литература по программированию игр. Надеюсь, это поможет.

Шаг 3. Непосредственное программирование\создание игры.
Самый трудоемкий и вместе с тем интересный процесс. Естественно, его рассмотрение не поместится в рамки ни одного FAQ, поэтому все возникающие проблемы можно обсуждать здесь.

Тестирование.

Как происходит процесс тестирования игры?
Как каждый конечный программный продукт, игра нуждается в проверке и тестировании. Этот этап зависит от размера проекта. Естественно, что в простенький тетрис можно и самому поиграть и посмотреть, всё ли учтено и нет ли грубых ошибок. Кроме того, можно просто позабавить друзей и выслушать от них порцию пожеланий и критики.
А вот компании, разрабатывая крупные игры, нанимают целый штат специальных тестеров. Тестеры подключаются к игре, когда появляется что-то играбельное. Это может быть один уровень или подмножество игры, которое может использоваться в любых разумных пределах. На раннем этапе тестирование игры отнимает у одного тестера относительно малую долю времени; в любое время тестеры могут быть ответственны сразу за несколько игр. По мере приближения разработки к концу, одна игра может начать отнимать у тестера всё его время — и даже сверхурочно — поскольку они стараются протестировать новые возможности, для которых существуют тесты регрессии. Сегодня тестирование является жизненно важным для игр, поскольку, в силу сложности большинства из них, одно единственное изменение может привести к катастрофическим последствиям.
80
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2009, 20:09
Ответы с готовыми решениями:

Видеокурс по созданию игр
я использовал этот http://*******/LZlMl слабенькая гта получилась) рекомендую)

Требуются советы по созданию игр
Здравствуйте, уважаемые киберофорумчане.)) С прошлого года решил изучать самостоятельно...

Поработал в конторе по созданию игр
- офис расположен на двух квартирах. Занимаются - созданием Казино. Одного из тех самых - которых...

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2009, 20:09

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

Посоветуйте литературу по созданию игр от начала до конца
Посоветуйте литературу по созданию игр от начала до конца. С всема елементами, на с++ можна. Толька...

FAQ по созданию сателлитов
<b>Терминология:</b> Сателлит – (в переводе с англ. – «спутник»). В Интернете сателлит – это...

FAQ по созданию загрузочной флешки
"Создание загрузочной USB-флешки проходит в два этапа. Этап 1: Подготовка USB-флешки: Вы должны...

FAQ: Запуск игр в оконном режиме
На форуме уже не однократно всплывал вопрос о том, как запустить игру в оконном режиме. Но ничего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.