Какие технологии используются для разработки игр в наши дни? [закрыто]

14

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

Однако, глядя на такие игры, как God of War 3, мне трудно поверить, что эти игры могут быть разработаны с использованием методов такого низкого уровня.

Абсолютная удивительность таких игр не поддается любой понятной (для меня) методологии программирования.

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

Какая новейшая методология разработки в игровой индустрии? Как получается, что команда из 30-35 разработчиков (из которых большинство менеджеров и маркетологов) способны создавать такие ошеломляющие игры?

Если вопрос кажется слишком общим, не могли бы вы объяснить архитектуру God of War 3? Или как вы будете производить клон? Это, я думаю, должно быть объективно ответственно.

Моника Майкл
источник
2
Кто-нибудь захочет объяснить отрицательный голос?
Моника Майкл
2
Падение голосов связано с тем, что вопрос не является «конструктивным». Процитируем: «этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или конкретными знаниями, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение» . То есть на вопрос нельзя ответить с какой-либо точностью. Я все еще думаю, что ваш вопрос имеет свои достоинства, но нуждается в переформулировании.
9000
2
@ 9000 А как этот вопрос квалифицировать как неконструктивный?
1
@delnan: вероятно, downvoters не были довольны фразами типа «Какова последняя методология разработки в игровой индустрии?» , Для меня, "как бы вы пошли о создании клона" гораздо лучше.
9000
4
Разве это не имеет больше смысла на gamedev.stackexchange.com ?
Дэн возится с огнем

Ответы:

12

Отказ от ответственности: я не разработчик видеоигр. Но у меня есть интерес к этому.


Большинство игр ААА, которые вы видите, сделаны с использованием двигателей. Они не написаны с нуля. Думайте о двигателе как о каркасе. У вас есть .NET Framework, Java SDK, набор инструментов Cocoa.

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

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

Например, в Unreal Engine 4 есть потрясающий набор разработчика и студия:

http://www.youtube.com/watch?v=MOvfn1p92_8

введите описание изображения здесь

Есть много разных двигателей. Кто-то платил, кто-то платил, кто-то платил за металл, другие предлагали более высокую абстракцию.

Например:

  • OGRE
  • Нереальный Двигатель
  • Единство
  • Источник
  • и многое другое ...
sergserg
источник
5

Что касается комментария gbjbaanb, то, что делает игровое программирование увлекательным, - это ограниченный срок службы базы кода и отсутствие точности. Например, если вы разрабатываете FPS-игру, а ваш алгоритм движения иногда отодвигает вашего игрового персонажа на несколько пикселей, это не имеет большого значения и шансов никто не заметит. Если вы разрабатываете программное обеспечение для бизнеса и иногда ваша функция суммирования отнимает у вас несколько долларов, это гораздо более серьезная ошибка. Таким образом, при разработке игр некоторые аспекты могут быть гораздо менее точными (и должны проходить только человеческое тестирование, а не автоматизированный набор тестов, который проверяет, что ответы точно).

Мой опыт показывает, что игровое программирование, особенно для игр в реальном времени, сильно отличается от ... почти любой другой разработки программного обеспечения, которую я делал, возможно, за исключением работы с графическим интерфейсом. Это то, что вы должны попробовать!

Иван
источник
4

Ответ - «двигатели». Многие игры построены поверх различных графических и игровых движков, которые в основном представляют собой большие библиотеки или фреймворки.

В мире OSS, посмотрите на Ogre для примера, для коммерческих игр у вас есть такие вещи, как Source.

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

gbjbaanb
источник
Конечно, эти движки являются просто обычными (хотя и высоко оптимизированными) абстракциями для построения кода на C / C ++ поверх API более низкого уровня (например, DX или OpenGL для графики).
Но было бы неплохо иметь опыт создания очень простой игры с использованием C или C ++, чтобы дать автору представление о том, на что похожа разработка игры.
KyelJmD
4

Unity3D действительно хорош. Вот некоторые моменты, которые мне нравятся:

  • он позволяет создавать игры независимо от платформы, а затем автоматически создает развертываемые файлы для Windows, Mac OS X, Android, IOS. Это верно для текущей версии (3.x). По-видимому, версия 4 позволит вам развернуть и на Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

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

http://unity3d.com/unity/licenses

  • Работает с большинством программ для 3D-моделирования (я предпочитаю 3d Studio Max, но поддерживает и другие):

http://unity3d.com/unity/editor/importing (прокрутите немного вниз)

  • Кодирование (скриптинг) может быть сделано на C #, который является хорошим языком, с хорошим API и проверками времени компиляции. Поставляется с хорошей средой разработки (IDE и все). Если вы хотите что-то другое, он также поддерживает Javascript.

  • Имеет очень хорошую физическую поддержку (столкновения, гравитация, силы и т. Д.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Имеет магазин активов, который позволяет вам покупать различные модели, скрипты, анимацию и т. Д., И в зависимости от вашего навыка (и кошелька) вы можете получить / изменить их, чтобы быстро получить достойные ресурсы для вашей игры.

  • Последнее, но не менее важное, это прилично быстро. Посмотрите мобильные демо-версии, ИМХО они движутся довольно хорошо и имеют очень приличную графику:

http://unity3d.com/gallery/made-with-unity/game-list

Вот один хороший проект Unity, который я сейчас жду:

Пустошь Брайана Фарго 2

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

Дракон Шиван
источник
3

ID Software - один из поставщиков, который обычно публикует самые современные игры. Несколько лет спустя они часто выпускают их как открытый исходный код. На http://fabiensanglard.net/quake3/index.php вы можете найти анализ исходного кода Quake3. Это довольно подробное описание, и хотя Quake3 довольно стар, в то время как концепции должны быть актуальны для современных игр.

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

Johannes
источник
Судя по результатам этого анализа, Quake 3 предшествует довольно многим жизненно важным методам «низкого уровня» современной разработки игр. Для начала, (OpenGL-поставляются) шейдеры.
Quake 3 был выпущен в 1999 году. Да, это давно. Но это показывает, как работают люди, которые пытаются достичь предела того, что было тогда возможно. Большинство других доступных движков больше склоняются к повторному использованию, «чистому» коду и т. Д. Вместо максимальной производительности. (Это не означает, что другие движки плохие и медленные, но я думаю, что все же стоит взглянуть на это, если вы хотите узнать об архитектуре и реализации движка 3D-игр)
Йоханнес
Другая связанная статья о двоичной математике низкого уровня в 3D-играх, на примере Quake: blog.quenta.org/2012/09/0x5f3759df.html
johannes
1

Как отмечают многие ответы, большую роль играют игровые движки и библиотеки. Тем не менее, обратите внимание, что это относится к средне-крупным коммерческим играм больше, чем к маленьким «инди-играм».

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

zxcdw
источник