Всякий раз, когда я задаю вопрос о разработке игры на онлайн-форуме, я всегда получаю предложения, такие как изучение алгоритмов рисования линий, манипулирование изображениями на битовом уровне, декомпрессия видео и т. Д.
Однако, глядя на такие игры, как God of War 3, мне трудно поверить, что эти игры могут быть разработаны с использованием методов такого низкого уровня.
Абсолютная удивительность таких игр не поддается любой понятной (для меня) методологии программирования.
Кроме того, игровое оборудование сейчас действительно чудовище. Поэтому вполне понятно, что разработчики будут работать на более высоком уровне абстракции.
Какая новейшая методология разработки в игровой индустрии? Как получается, что команда из 30-35 разработчиков (из которых большинство менеджеров и маркетологов) способны создавать такие ошеломляющие игры?
Если вопрос кажется слишком общим, не могли бы вы объяснить архитектуру God of War 3? Или как вы будете производить клон? Это, я думаю, должно быть объективно ответственно.
Ответы:
Отказ от ответственности: я не разработчик видеоигр. Но у меня есть интерес к этому.
Большинство игр ААА, которые вы видите, сделаны с использованием двигателей. Они не написаны с нуля. Думайте о двигателе как о каркасе. У вас есть .NET Framework, Java SDK, набор инструментов Cocoa.
Все для того, чтобы упростить работу по созданию программного обеспечения и абстрагированию от кода кухонной раковины. Это необходимо, но писать это каждый раз очень непродуктивно.
Используя эти движки, разработчик может создавать свою игру и не беспокоиться о каком-либо основном коде. ( Не заблуждайтесь, разработка игр - одна из самых сложных ветвей разработки программного обеспечения. )
Например, в Unreal Engine 4 есть потрясающий набор разработчика и студия:
http://www.youtube.com/watch?v=MOvfn1p92_8
Есть много разных двигателей. Кто-то платил, кто-то платил, кто-то платил за металл, другие предлагали более высокую абстракцию.
Например:
источник
Что касается комментария gbjbaanb, то, что делает игровое программирование увлекательным, - это ограниченный срок службы базы кода и отсутствие точности. Например, если вы разрабатываете FPS-игру, а ваш алгоритм движения иногда отодвигает вашего игрового персонажа на несколько пикселей, это не имеет большого значения и шансов никто не заметит. Если вы разрабатываете программное обеспечение для бизнеса и иногда ваша функция суммирования отнимает у вас несколько долларов, это гораздо более серьезная ошибка. Таким образом, при разработке игр некоторые аспекты могут быть гораздо менее точными (и должны проходить только человеческое тестирование, а не автоматизированный набор тестов, который проверяет, что ответы точно).
Мой опыт показывает, что игровое программирование, особенно для игр в реальном времени, сильно отличается от ... почти любой другой разработки программного обеспечения, которую я делал, возможно, за исключением работы с графическим интерфейсом. Это то, что вы должны попробовать!
источник
Ответ - «двигатели». Многие игры построены поверх различных графических и игровых движков, которые в основном представляют собой большие библиотеки или фреймворки.
В мире OSS, посмотрите на Ogre для примера, для коммерческих игр у вас есть такие вещи, как Source.
Существуют и другие факторы, например, большая часть кода является одноразовой и не пройдет проверку в бизнес-среде, но это потому, что ограниченный срок службы игры и ускоренные сроки разработки означают, что код (почти) разработан просто работать, а не поддерживать.
источник
Unity3D действительно хорош. Вот некоторые моменты, которые мне нравятся:
http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features
http://unity3d.com/unity/licenses
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 , а также другие обсуждают, как работает с ним .
источник
ID Software - один из поставщиков, который обычно публикует самые современные игры. Несколько лет спустя они часто выпускают их как открытый исходный код. На http://fabiensanglard.net/quake3/index.php вы можете найти анализ исходного кода Quake3. Это довольно подробное описание, и хотя Quake3 довольно стар, в то время как концепции должны быть актуальны для современных игр.
И да, если вы хотите создать современный, быстрый, конкурентоспособный игровой движок, вы должны знать все эти низкоуровневые части. Если вы не хотите заботиться о них: есть разные движки (движок quake3 или из других ответов), но хорошо, тогда вы не создаете новую революционную игру ;-)
источник
Как отмечают многие ответы, большую роль играют игровые движки и библиотеки. Тем не менее, обратите внимание, что это относится к средне-крупным коммерческим играм больше, чем к маленьким «инди-играм».
Например, на мобильных платформах большинство игр написаны с использованием только набора относительно примитивных библиотек, а не с использованием полнофункциональных игровых движков и фреймворков. Они существуют, но по большей части речь идет о повторном использовании вашего собственного кода из более ранних проектов.
источник