Как миллениал, я был ребенком, который рос, возможно, в золотой век консольных игр. Мне посчастливилось испытать выпуск первых Xbox, Playstation, Gameboy, Sega Genesis и подобных. По мере роста систем росла и я. Одним нажатием кнопки я был полностью перенесен в другое место.

Однако я отчетливо помню тот день, когда эта парадигма изменилась для меня. День, когда игры стали больше, чем интерактивными изображениями на компакт-диске / картридже.

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

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

Я все еще учился в 3-м классе; мое воображение и любопытство по-прежнему были основными движущими силами моих действий. Так что реализация этого процесса никогда не была пассивным опытом, когда я понимал причины каждого шага, а скорее совершенно осознанным приключением, в котором я создавал миры для исследования.

По сути, я создавал свои игры.

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

Тем не менее, любопытство осталось, и у меня на уме был вопрос:

«Что происходило на этих компакт-дисках, как все это работает?»

В этой статье я надеюсь:

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

[1] Роли, которые программисты играют в процессе разработки игры:

Искусственный интеллект (AI)

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

Кроме того, игрок часто может выбрать сложность в начале игры, чтобы все это масштабирование, описанное выше, существовало внутри.

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

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

Графика

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

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

«Нажмите« x », чтобы открыть дверь». Что происходит, когда вы нажимаете «x»? Что ж, вы должны это запрограммировать.

Физика

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

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

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

Сеть

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

Пользовательский интерфейс (UI)

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

Кто отвечает за то меню паузы на экране? И все настройки?

Это все ответственность разработчика пользовательского интерфейса. Они реализуют все меню, настройки и экраны загрузки.

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

Хорошие новости есть. Игровой движок.

[2] Игровой движок - программный фреймворк для разработки игр. Он связывает вместе обязанности по разработке и задачи программирования, так что большинство инструментов и стандартов находятся в одном пакете. Типичный игровой движок часто содержит такие вещи, как шаблоны для общей игровой логики, AI, анимацию, физический движок и даже способы включения звуковой логики в вашу игру. Использование игрового движка - самый эффективный способ для команды разработчиков создавать игры. Иногда студии даже заходят так далеко, что создают свои проприетарные игровые движки в начале нового проекта и повторно используют эти движки для сиквелов.

Вот некоторые игровые движки, которые используются в настоящее время, и связанные с ними языки программирования:

  • [3] Unreal Engine - C ++
  • [4] Unity - C #
  • [5] Panda3D Engine - C ++ / Python
  • [6] Годо - C ++
  • [7] Appgamekit - Java / C # / Python
  • [8] Cryengine - C ++ / C # / Lua
  • [9] Uniengine - C ++ / C #
  • [10] Marmalade SDK - C # / C ++
  • [11] LIBGDX - Java
  • [12] URHO3D - C ++

Итак, теперь, когда мы знаем об обязанностях программиста игр, с чего начать?

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

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

Что делает язык функционального программирования для разработки игр?

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

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

[13] В C ++ у вас есть полный контроль над тем, как вы хотите разрабатывать свой код, где реализуются задачи и как они реализуются. Возможность точно контролировать, сколько вычислительной мощности использует каждая часть вашей системы.

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

Другими словами, C ++ в дизайне позволяет вашей команде развиваться свободно, учитывая все вышеперечисленные аргументы в пользу языка.

Надеюсь, вы нашли эту статью информативной, ознакомьтесь с ресурсами, которые я использовал в своем исследовании, чтобы узнать больше:

[1] (Какую роль играет программирование в создании игры? ИИ, физика, графика, сетевое программирование, пользовательский интерфейс)

Https://work.chron.com/description-game-programmer-30762.html#:~:text=Major%20Job%20Duties&text=They%20use%20computer%20code%20to,particular%20aspects%20within%20the% 20game.

[2] (Как программирование включается в игру? Игровые движки. Пять компонентов игрового движка.)

Https://interestingengineering.com/how-game-engines-work

[3] (Unreal Game Engine)

Https://www.unrealengine.com/en-US/features

[4] (игровой движок Unity)

Https://docs.unity3d.com/Manual/JobSystem.html

[5] (Игровой движок Panda 3D)

Https://docs.panda3d.org/1.10/python/programming/using-cpp/index

[6] (игровой движок Godot)

Https://godotengine.org/features

[7] (Игровой движок App Game Kit)

Https://www.appgamekit.com/technology

[8] (игровой движок Cryengine)

Https://docs.cryengine.com/display/CEPROG/CRYENGINE+Programming

[9] (Unigine Game Engine)

Https://unigine.com/

[10] (Движок Marmalade Game Engine)

Https://www.marmaladegamestudio.com/careers/programmer/

[11] (Игровой движок LIBGDX)

Https://libgdx.badlogicgames.com/documentation/gettingstarted/Setting%20Up.html

[12] (движок Urho 3D Game Engine)

Https://urho3d.github.io/documentation/1.7.1/index.html

[13] (Саймон, Stack Overflow, Почему C ++ популярен в разработке игр)

Https://stackoverflow.com/questions/3318898/why-is-c-that-powerful-concerning-game-development#:~:text=The%20strength%20of%20C%2B%2B%20when,and% 20большинство% 20разработано% 20программировано% 20язык.