Почему движок, такой как Unity3D, подчеркивается над нативной библиотекой, такой как OpenGL, для начинающих? [закрыто]

25

Я только начинающий в 3D играх, моя любимая платформа - Android. Я отправил вопрос на другом форуме о том, что использовать: OpenGL или Unity3d? Все они подчеркивали Unity3D и использовали его встроенные функции и инструменты, которые я должен был бы написать сам, если бы использовал OpenGL. Но потом кто-то говорит, что большинство сложных игр требуют пользовательских движков. Зачем мне использовать движок, такой как Unity3D, а не OpenGL?

Аман Гровер
источник
15
Два слова: мгновенное удовлетворение. Вы можете сделать что-то «полезное» с помощью единства, не зная многого, в то время как для запуска приложения OpenGL требуется довольно много строк кода и понимание широкого спектра концепций.
Яри ​​Комппа
5
Возможно, мы можем просто объяснить это в этой теме, и все вопросы «какие технологии мне следует использовать» исчезнут навсегда. также я хочу единорога
jhocking
8
«Для большинства сложных игр требуются собственные движки» - на самом деле, удивительно большое количество очень успешных игр ААА построено на стандартных движках, таких как движок Unreal .
Филипп
2
Кроме того, новичок не сможет сделать игру настолько сложной, что в любом случае ему понадобится собственный движок.
Кристиан
Это только что появилось на Gamasutra, и хотя это не является прямым ответом на этот вопрос, оно актуально: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - в частности, это будет очень сложно для проекта, из которого вы строите основание с OpenGL, чтобы быть «скромным» первым проектом.
Стивен Стадницки

Ответы:

30

Я думаю, что вы уже ответили на этот вопрос сами. Вы сказали: «Я всего лишь новичок в 3D играх» . Далее вы сказали: «... Unity3D и использование его встроенных функций и инструментов, которые я должен был бы написать сам, если бы использовал OpenGL» .

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

Посмотрите на этот связанный вопрос: в чем разница между библиотекой и движком и этим? Что такое игровой каркас по сравнению с игровым движком?

MichaelHouse
источник
так что OpenGL предназначен только для графики, а unity3d - это полноценный фреймворк, в котором есть требования к графике и физике для моей игры?
Аман Гровер
1
Единство намного больше, чем это, но да, это большая разница.
jhocking
3
@AmanGrover: также осознайте, что с GL «просто для графики» действительно «просто для отправки команд в GPU». Программисту по-прежнему предстоит выполнить всю тяжелую графическую работу, в то время как в Unity есть все важные графические функции и алгоритмы, которые включены и готовы к использованию.
Шон Мидлдич
2
Не пишите Двигатели, пишите игры. Это то, что мне сказали подойти. Что я имею в виду, когда кто-то создает игровой движок, пока вы создаете настоящую игру. Так что в этом я не согласен с байтом.
LaVolpe
28

Потому что новички по определению не знают, что делают .

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

Предполагается, что большинство людей спрашивают: «Я хочу сделать игру, что мне использовать?» Вопрос на самом деле действительно хотят создать игру (иначе они бы задали другой вопрос, конечно?). Таким образом, ответ адаптирован к этому вопросу, и использование уже существующего инструментария, фреймворка или движка - один из способов помочь им достичь этой цели. не отвлекаясь на агонию из-за того, что вызовы UBO или glUniform предпочтительнее для обновления одной матрицы.

Все дело в том, чтобы делать шаг за шагом, облегчать процесс обучения и давать вам что-то полезное в конце. Попытка научиться создавать игру и правильно использовать зрелый и мощный 3D API в то же время , вероятно, слишком много для новичка. Это похоже на эффект Даннинга-Крюгера за вычетом негативных коннотаций. Вы не знаете, чего не знаете, поэтому у вас нет реалистичной картины того, что вы собираетесь делать.

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

Максимус Минимус
источник
22

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

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

Рыно
источник
Спасибо, и да, я ищу работу в этой области, и поэтому я пойду с OpenGL.
Аман Гровер
9
Я категорически не согласен с тем, что работа с «голым» OpenGL будет более ценной для тех, кто проникнет в игровую индустрию. Unity является отличным примером современного, относительно зрелого игрового движка; Понимание функциональности, которую он предоставляет (с целью изучения того, как вы можете предоставить аналогичную функциональность самостоятельно), является отличным способом понимания самого процесса разработки игры, тогда как OpenGL далеко не является специфичным для игры в каком-либо значимом смысле.
Стивен Стадницкий,
Это просто показывает, как на самом деле нет правил об этих вещах, просто мнения. Все зависит от того, что вам нужно / хотите.
jhocking
5
@ AmanGrover - тогда не создавайте игру! Вам будет легче учить одну вещь за один раз. Сделать симулятор солнечной системы. Узнайте, как рисовать базовые примитивы, научитесь переводить и вращать их, помещайте планеты в VBO, чтобы рисовать их быстрее, используйте некоторые шейдеры, чтобы создавать на них анимированные облака, и вы хорошо разбираетесь в основах.
Максимус Минимус
3
@KamikazeSoctsman Опять не согласен здесь. Я не говорю, что OGL бесполезен - это далеко не так! - но в последнее десятилетие я использовал свои знания OpenGL лишь несколько раз в коротких схватках и началах. Напротив, поскольку игровые графические движки, как правило, очень чувствительны к производительности, по моему опыту, они являются одним из наименее распространенных мест для начинающего программиста. Вы должны знать трехмерную математику, и вы должны понимать принципы рендеринга, но это совсем не то же самое, что изучение OGL.
Стивен Стадницки,
6

Разница проста. Unity - это коляска с четырьмя круглыми колесами, которая поможет вам добраться. OpenGL - это опилки, которые вы можете создать в магазине и использовать для изготовления улучшенной и более современной каретки и колес. То есть, если вы потратите много часов своего времени на то, чтобы узнать, что люди делали раньше, чем вы.

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

imho, шаги начинающего разработчика игр:

  1. Освойте современный фреймворк / движок и получите его глубокое понимание (это также поможет вам узнать о различных аспектах игрового дизайна, графики и OpenGL - это еще не все).
  2. Сделайте с ним небольшую игру и узнайте больше в процессе.
  3. Органично сталкиваюсь с препятствиями и ограничениями в двигателе.
  4. Узнайте больше о предмете.
  5. Работайте над улучшением тех областей, которые, по вашему мнению, нуждаются в улучшении.

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

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

Итак, подведем итоги. Подчеркнем Engine, потому что вы можете сделать что-то с помощью Engine, и у вас гораздо больше шансов на успех. Даже великие создатели игр полагались на чужую предыдущую работу, и такова природа прогресса. Вам нужно понять общую картину и уметь играть с кусочками Lego, предоставленными другими, прежде чем создавать свои собственные кусочки Lego.

wolfdawn
источник
4

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

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

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

Имейте в виду, что некоторые из самых инновационных современных игр, таких как Portal и Antichamber, были созданы с использованием существующих движков. Некоторые довольно сложные онлайн-игры, такие как Aion и TERA, были созданы с использованием существующих движков. Некоторые из самых визуально красивых игр, такие как Bioshock Infinite и Thief, были созданы с использованием существующих движков. И, конечно, некоторые не были. Но дело в том, что ничего, что я когда-либо видел, на самом деле не требовало специального движка

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

TC
источник
1
-1. Довольно большие утверждения об игровой индустрии. Большинство из них неточные. Я хотел бы посыпать твой пост примерно дюжиной citation neededс
Панда Пижама
1
@PandaPajama В моем ответе есть только одно утверждение об игровой индустрии. Если это вас сильно беспокоит, вы можете исправить это или даже полностью удалить.
TC
Мой (ограниченный) опыт показал мне, что если есть что-то, что нельзя обобщать, это игровая индустрия. У каждой компании свой взгляд на вещи, даже у разных команд внутри компании могут быть совершенно разные политики во всем. В этом конкретном случае внутренние двигатели действительно генерируют затраты и имеют некоторые преимущества и недостатки. Сложно определить, является ли чистый результат экономией или расходами, и будет зависеть от проекта. Кроме того, бюджет, хотя и важен, не является единственным элементом, принимаемым во внимание при создании игр.
Панда Пижама
@PandaPajama Конечно, смотрите мои изменения. Я просто сказал, что для них это может иметь больше смысла для бизнеса в целом, что включает в себя фактор бюджета и все остальное, что помогает формировать их решение, подчеркивая, что это может вообще не быть техническим ограничением существующих двигателей.
TC