Подтвердить что ты не робот

Почему С++ является мощным в плане разработки игр?

Мне просто интересно, почему С++ это мощный и мощный инструмент для разработки игр. Я написал много игр в С# и delphi, всегда используя компонент таймера, чтобы объекты "двигались". Другим вариантом для движения были петли, но они определенно не являются результативными.

Итак, какой метод использует С++, чтобы пользователи могли разрабатывать игровые игры?

4b9b3361

Ответ 1

С++ дает вам более тонкий контроль над фактическим оборудованием и нажатием бит. Для обычных бизнес-потребностей язык третьего поколения, такой как Java или С#, быстрее программируется и берет на себя заботы, такие как указатели и сбор мусора от рук разработчика. Это связано с отсутствием возможности оптимизировать и точно настроить как память и структуры данных.

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

Ответ 2

В значительной степени это основано на двух вещах:

  • История
  • Текущая структура

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

Даже сегодня большинство фреймворков для игр написаны на С++. XNA разрешает С#, но даже Microsoft продолжает настаивать на С++ как на своем языке выбора.

* да, это субъективно...

Ответ 3

Итак, какой метод использует С++, пользователи могут разрабатывать игровые игры?

Нет, которые не найдены (также) на других языках.

Преимущество С++ над другими языками (субъективно до степени) не в используемых методах.

Это сочетание нескольких факторов, что делает его достаточно низким и достаточно высокого уровня для того, что необходимо:

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

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

  • он предлагает достаточно абстракции для более высокого уровня, чем другие быстрые языки (например, C).

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

Ответ 4

С++ обладает сочетанием эффективности и абстракции, что делает его единственным практическим выбором для крупномасштабных систем, требующих эффективных ответов [1].

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

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

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

[1] Ada или Delphi также могут быть использованы в этой области, но их уровень популярности означает, что это не так прагматично, чтобы выбирать их, если у вас нет потребности в нише.

Ответ 5

Из того, что я всегда понимал, и это правило относится и к спорту.

Speed kills.

Все о скорости.

Ответ 6

Для игр существует твердая кодовая база, и в основном это на С++. Большинство игровых движков реализованы на С++, и потому, поскольку кто-то ранее упоминал, что OpenGL и DirectX реализованы на С++. Кроме того, игры всегда подталкивают пределы аппаратного обеспечения и поэтому код должен быть максимально быстрым и оптимальным.

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

Ответ 7

OpenGL и DirectX очень совместимы с С++. Добавьте в то, что у вас есть более мелкозернистый контроль над памятью, выделение памяти, и вы можете использовать только достаточные возможности С++, чтобы сделать разработку "проще", чем прямой C, чтобы получить некоторые из причин.

Ответ 8

Здесь есть несколько причин.

  • Портативность
    Действительно ли кто-то думает, что Sony будет использовать С# в одной из своих консолей? Будет ли Nintendo развертывать JVM на Wii2?

    Нет.

    Что делать, если Microsoft отправляется на С# со следующим Xbox? Угадайте, что, они не будут. Это удвоит Codebase для всех сторонних разработчиков, предоставляя новую консоль Microsoft, гораздо менее привлекательную для разработки.

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

  • Производительность
    Кроме того, ядро ​​3D-движков, скорее всего, всегда будет написано на C/С++ с его частью в ASM, просто из-за того, что вы хотите выжать каждый бит производительности на консолях, где ваша среда в основном забита камнем.

  • Время разработки
    Прежде чем все лицензированные двигатели подошли, было время, когда первое поколение титулов программного обеспечения заняло очень много времени, так как вам нужно было написать совершенно новый движок для своей игры на новой платформе, что требует времени. С учетом того, что разработка большой игры уже требует много лет, это требует больших денег. Поэтому всегда было проще взять существующий код и "обновить" его для следующего поколения. Затем со временем вы постепенно улучшаете его. Учитывая это, легко заметить, что ни один из производителей консоли не хотел, чтобы их разработчики сталкивались с еще большим временем разработки, переключая свою консоль на нечто иное, чем C/С++.

Итак, чтобы все это обернуть. Переносимость, производительность и устаревшие базы кода - вот причины, по которым C/С++ по-прежнему является основным игроком в разработке игр.

Ответ 10

Игры - это высокопроизводительное программное обеспечение, которое требует 100% использования аппаратного пользователя, а С++ - это только популярный язык, который дает вам такие возможности:

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

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

Ответ 11

Некоторые другие аспекты, о которых я думаю, не упоминались:

  • С++ не использует сбор мусора (в отличие от, например, С#) - может быть неудачно, если игра на мгновение остановится для сбора мусора. Для консольной игры, рассчитанной на 30 или 60 кадров в секунду, это может быть проблемой.
  • Разработчики игр часто посвящают время оптимизации кода. Правильные инструменты существуют для этого с С++. Например. большинство компиляторов поддерживают встроенные функции, поэтому можно напрямую использовать инструкции SSE. Другое дело, что программисты часто делают это, проверяя сгенерированную сборку и соответствующим образом настраивая код C, например. для устранения динамических ветвей. Избегание виртуальных функций также может принести преимущества скорости (например, на многих других языках есть только методы с динамическим полиморфизмом - с их связанной стоимостью).
  • Это на самом деле более кросс-платформенный, чем С# или Java, с точки зрения многих разработчиков игр. Можете ли вы запустить Java или С#, например. PS3? (edit: Mono используется, по крайней мере, одним популярным кросс-платформенным игровым движком, поэтому С# возможен, но включение Mono может быть барьером, если не использовать этот движок).

Ответ 12

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

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

Ответ 13

По мере того как машины становятся более мощными, а большая часть рабочей нагрузки сдвигается на аппаратное обеспечение (графика и даже физика, в некоторых случаях), для выполнения других задач доступно больше системных ресурсов. Таким образом, несмотря на то, что С++ по-прежнему является отраслевым стандартом, оптимизация "вниз к металлу", которую он позволяет, больше не является основной причиной его использования. Основная причина, по которой он используется, заключается в том, что большинство API для разработки игр - это С++ API. Вы редко хотите написать свой собственный движок, и даже если вы напишете свой собственный движок, вы, вероятно, повторно используете стандартные низкоуровневые компоненты, такие как NVidia PhysX, DirectX, OpenGL и т.д. Некоторые из них теперь имеют интерфейсы управляемых кодов, но ядро API для С++, так как оно обычно используется.

Еще одна тенденция, которую стоит отметить, заключается в том, что в настоящее время многие игры используют языки сценариев, такие как Python или Lua, для управления большей частью логики игры. Это дает разработчикам контента и моддерам гибкость для обеспечения богатого поведения без необходимости кода на С++ или сборки. Сценарий не является супер-высокопроизводительным, но он чрезвычайно удобен, и современные ПК имеют достаточную мощность для обработки сценариев.

Ответ 14

Единственный метод, который С++ имеет на большинстве других языков высокого уровня, заключается в том, что "вы не платите за то, что не используете". Язык не имеет функций за кулисами, таких как сбор мусора, подсчет ссылок, синхронизация, отражение, интроспекция, проверка границ, проверка времени выполнения, метаклассы и т.д., Каждый из которых может налагать затраты на общие операции.

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

Ответ 15

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

Теперь имейте в виду, что это для существующих игровых студий, инди-сцена - небольшая разница, и я думаю, что здесь XNA фактически набирает скорость. Во-первых, это дает вам доступ к трем устройствам (pc, xbox, zune based) и даже не включая mono xna. Различия в скорости почти никогда не стоит беспокоиться об этом уровне, и это просто более продуктивно.

Надеюсь, я вам кое-что подумал.