Какую 3D графическую платформу я должен использовать для игрового механизма реального мира? [закрытый]

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

14
задан Thomas Bonini 14 March 2010 в 18:44
поделиться

5 ответов

Я понимаю, что вы уже приняли ответ, но я думаю, что это заслуживает еще нескольких комментариев. Извините, что цитирую вас не по порядку, я отвечаю тем, что считаю важным.

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

Однако я хотел сосредоточиться на реальном движке 3D и рендеринга, а не на интерфейсе, поэтому не думаю, что буду использовать его [lua] для этого проекта.

Из этих двух фрагментов я могу сказать вам, что вы не пытаетесь имитировать игровой движок. Просто серверная часть 3D-рендеринга . Это не одно и то же, и внутренняя часть рендеринга - очень маленькая часть по сравнению с полным движком игры.

Это, кстати, может помочь ответить на один из ваших вопросов:

Похоже, что World of Warcraft использует оба! Фактически, обычно он использует DirectX, но вы можете использовать opengl, запустив его с помощью переключателя «-opengl» в командной строке.

Да, они реализовали оба. Объем работы, которую необходимо сделать, нельзя не отметить, но, по моему опыту, внутренняя часть рендеринга составляет не более 10% от общего кода, обычно меньше. Так что реализовать несколько из них не так уж и возмутительно.

Если говорить более конкретно, программная часть игрового движка сегодня не самая большая часть. Основная часть (и это включает в себя большую часть игрового программирования. Большинство lua-скриптов рассматриваются с этой стороны, например)

Для WoW поддержка OSX означала OpenGL. Так они и сделали. Они тоже хотели поддерживать старое оборудование ... Итак, они поддерживают оборудование уровня DX8. Это уже 3 бэкенда. Я' Я не знаю, сколько они на самом деле внедряют, но все сводится к тому, какой клиентской базы они хотят достичь.

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

Хорошо, это было длинное предисловие. Теперь мой главный вопрос заключается в следующем: следует ли мне использовать DirectX, OpenGL, библиотеки-оболочки, такие как sdl, или что-то еще?

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

  • DirectX9
  • DirectX10
  • DirectX11
  • OpenGL <3.1 (до удаления устаревшего API)
  • OpenGL> = 3.1
  • OpenGL ES 1 . 1 (только если вам нужен . Он не программируется)
  • OpenGL ES 2.0

Да, эти API достаточно разные, и вам нужно решить, с какими из них вы хотите работать.

Если вы хотите изучить основы 3D-рендеринга, подойдет любой из них. OpenGL <3.1 имеет тенденцию скрывать многие вещи, которые в конечном итоге должны происходить в пользовательском коде для других (например, манипуляции с матрицами, см. этот плагин ).

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

С другой стороны, в большинстве руководств по GL обычно используются функции, которые практически не работают на современном оборудовании (например, glBegin / glEnd, selection / picking, ... см. список вещей, которые были удалены из GL 3.1 или этого другого плагина ) и имеют тенденцию вносить неправильные концепции во многие вещи.

Какая из них наиболее часто используется в реальном мире?

Для игр DirectX9 является сегодня стандартом в мире ПК. С большим отрывом.

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

В любом случае никто не использует OpenGL (очень немногие люди вообще знают о секретном переключателе).

Спросите владельцев Mac, что они думают.

Дополнительный вопрос, вы действительно думаете поставщики оборудования потратили бы любую энергию на драйверы OpenGL, если бы это было действительно так (я понимаю, что обобщаю ваш комментарий, извините)? его можно использовать в реальном мире. Хотя в играх не так много. И Apple делает OpenGL более актуальным через iphone (ну, OpenGL ES, на самом деле).

Если это что-то обычно делается, программисты обычно создают свою собственную «оболочку» 3D-движка,

Обычно это полная часть конструкции движка. . Имейте в виду, это не абстрагирование API на том же уровне, это обычно больше похоже на «нарисуйте это со всеми его прибамбасами». Какой алгоритм рендеринга применить к этому розыгрышу, обычно зависит от серверной части.

Это, однако, очень зависит от игрового движка. Если вы хотите лучше понять, вы можете взглянуть на UE3, он только что получил бесплатно (пиво) для некоммерческого использования (я еще не смотрел на него, поэтому я не знаю, раскрыли ли они бэкэнды, но посмотреть стоит). Обычно программисты создают свою собственную «оболочку» для 3D-движка

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

Это, однако, очень зависит от игрового движка. Если вы хотите лучше понять, вы можете взглянуть на UE3, он только что получил бесплатно (пиво) для некоммерческого использования (я еще не смотрел на него, поэтому я не знаю, раскрыли ли они бэкэнды, но посмотреть стоит). Обычно программисты создают свою собственную «оболочку» для 3D-движка

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

Это, однако, очень зависит от игрового движка. Если вы хотите лучше понять, вы можете взглянуть на UE3, он только что получил бесплатно (пиво) для некоммерческого использования (я еще не смотрел на него, поэтому я не знаю, раскрыли ли они бэкэнды, но на это стоит посмотреть). Это не абстрагирование API на том же уровне, обычно это больше похоже на «нарисуйте это со всеми его прибамбасами». Какой алгоритм рендеринга применить к этому розыгрышу, обычно зависит от серверной части.

Это, однако, очень зависит от игрового движка. Если вы хотите лучше понять, вы можете взглянуть на UE3, он только что получил бесплатно (пиво) для некоммерческого использования (я еще не смотрел на него, поэтому я не знаю, раскрыли ли они бэкэнды, но посмотреть стоит). Это не абстрагирование API на том же уровне, обычно это больше похоже на «нарисуйте это со всеми его прибамбасами». Какой алгоритм рендеринга применить к этому розыгрышу, обычно зависит от серверной части.

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

32
ответ дан 1 December 2019 в 07:27
поделиться

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

1
ответ дан 1 December 2019 в 07:27
поделиться

Я думаю, что основное преимущество использования OpenGL перед DirectX - это переносимость. DirectX работает только в Windows. Однако часто это не проблема (многие игры работают только в Windows).

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

Если вы собираетесь работать с окнами с помощью DirectX и желаете / заинтересованы в изучении C # и управляемого кода, я обнаружил, что XNA - это чрезвычайно простая платформа для изучения. Это позволяет вам изучить большинство концепций, не разбираясь с множеством действительно сложных деталей DirectX (или OpenGL). Вы по-прежнему можете использовать код шейдера и пользоваться всеми возможностями DirectX, но в гораздо более дружественной среде. Это было бы моей рекомендацией, но, опять же, вам придется перейти на C # (заметьте, вы также можете указать это в своем резюме).

3
ответ дан 1 December 2019 в 07:27
поделиться

Я сейчас немного поработаю с OpenGL (как для Windows, так и для Mac).

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

Unity3D работает на всем (Mac , ПК и iPhone, веб-плеер и т. Д.) И позволяет сосредоточиться на том, что делает игру игрой. В довершение всего, это быстрее, чем я мог бы написать. Вы кодируете его на C #, Java (РЕДАКТИРОВАТЬ: сделайте это JavaScript ) или Boo . (РЕДАКТИРОВАТЬ: поддержка Boo была прекращена)

Я просто использовал Unity, чтобы смоделировать демонстрацию для клиента, который хочет, чтобы что-то было сделано в OpenGL, чтобы оно также использовалось в реальном мире.

-Chris

PS: Версия Unity Indie недавно стала бесплатной.

0
ответ дан 1 December 2019 в 07:27
поделиться

если вас действительно интересует только часть рендеринга, я могу предложить ogre3d. он чистый, c ++, протестированный и кроссплатформенный. Я использовал его в двух проектах, и по сравнению с другим опытом (например, Torque3d) мне понравилась хорошая поддержка (учебные пособия / вики / форум) и не такая крутая кривая обучения. Я думаю, что кто-то также может многому научиться, просмотрев исходный код и концепции, которые они использовали в дизайне. есть также сопроводительная книга, которая немного устарела, но для начала хороша

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

Так что, если вы действительно хотите сначала коснуться 3D-рендеринга, я бы взял несколько книг по компьютерной графике ( gpu gems, shaderx), просмотрите несколько учебных пособий и демонстраций в Интернете и начните создавать свою собственную базовую структуру. это для опыта, и я думаю, что вы извлечете максимум пользы из этого подхода. по крайней мере, я ...

0
ответ дан 1 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: