Какие преимущества предоставляет OpenGL по сравнению с фреймворками / движками для небольших разработчиков? [закрыто]


16

Я заметил тенденцию инди-разработчиков, отвлекающихся от фреймворков и движков, и переходящих к использованию открытого OpenGL или его использованию в сочетании с SDL / SFML2. Как инди-разработчик, я не вижу, что может предложить низкоуровневый OpenGL для отдельных движков или фреймворков.

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

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

Не могли бы вы объяснить причины создания игр с нуля с использованием OpenGL?


Как аспирант в игровом и графическом программировании, я могу засвидетельствовать сложности обучения OpenGL с нуля. Если бы я сегодня делал инди-игру, я бы использовал SDL или какую-то другую библиотеку. Но я также понимаю гораздо больше о графике сегодня, чем когда я начал учиться, изучение API помогло мне понять, как работают графические процессоры в целом, и как взаимодействуют аппаратное и программное обеспечение. Но чтобы сделать коммерческий продукт, на данном этапе я бы использовал стороннюю библиотеку.
Филипп

Ответы:


23

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

Почему нет фреймворка / движка как инди? Вот мои два цента:

  • Недостаток бюджета: это, пожалуй, самый важный момент для большинства маленьких / независимых разработчиков. Многие фреймворки или движки не позволят вам публиковать ваш продукт, не покупая более дорогую версию (при условии, что вообще доступна дешевая или бесплатная версия) и / или выплачивая лицензионные отчисления, что вы всегда должны учитывать при небольших проектах. Иногда вам даже приходится платить один раз за платформу.
  • Сложность: Большинство двигателей или каркасов попадают в одну из двух категорий:
    • Они либо очень ограничены для одного специального жанра ( типичный пример - RPG Maker ).
    • Или вы просто слишком универсальны со множеством вещей, которые вы, скорее всего, не будете использовать в любом случае (например, Unity ).
  • Собственный код: большинство движков не имеют открытого исходного кода, и чтобы получить реальный источник, вам придется заплатить еще больше (если вообще доступно). Без реального исходного кода перенос на другие платформы может быть трудным или даже невозможным (опять же, RPG Maker был бы прекрасным примером).
  • Неуклюжесть: Это мое личное мнение, но, по крайней мере, для меня это часто довольно серьезное разочарование, учитывая готовые движки и фреймворки, особенно когда вы создаете небольшую игру. Кто хочет поиграть в небольшую перерывную игру размером около 200 КБ, но при этом иметь время выполнения 50 МБ?
  • Выбор языка: некоторые движки и фреймворки не предоставляют библиотеки для использования в вашем собственном коде. Вместо этого они предоставляют платформу или среду выполнения, которые будут использовать свой собственный язык сценариев или некоторый установленный язык (например, Javascript или C #). Если вы пишете свой собственный движок, вы можете использовать любой выбранный вами язык.
  • Защита вашей работы: если вы используете готовый движок или фреймворк, высоки шансы, что другим будет гораздо проще изменить или декомпилировать ваш код или ресурсы, чего вы, возможно, захотите избежать (даже если это просто сохранить рекорд) чистый). Пользовательский код и обработка ресурсов создают гораздо большие препятствия, особенно при компиляции в собственный код.
  • Брендинг: для многих это может быть незначительным, но некоторые движки и фреймворки вынуждают вас показывать их логотип или, возможно, даже рекламу, по сути принимая ваши свободы, чтобы выбирать, кого / что продвигать. Конечно, это часто зависит от фактической лицензии, лицензионных сборов и т. Д.
  • Несовместимость с лицензиями: это то, что многие даже не учитывают при выборе движка, но в зависимости от того, что вы хотите сделать, это может быть основным фактором. Даже если вы купите какой-нибудь двигатель, вам может быть запрещено разглашать какие-либо источники или связанные материалы. Нечто подобное может сделать моддинг невозможным, даже если вы хотите, чтобы пользователи могли это делать. Возьмем в качестве примера движок Source от Valve ( Half-Life 2 , Team Fortress 2 и т. Д.): Они позволяют моддерам использовать их движок для своих собственных проектов. Если бы эти игры были основаны (например) на Unreal Engine, это было бы невозможно из-за ограничений, подразумеваемых условиями лицензирования.

11
плюс еще одна вещь: как только вы изучаете openGL, вы это знаете. Вам не нужно переучивать его на каждом языке или изучать, как конкретный фреймворк / движок хочет, чтобы вы реализовали его для каждого нового фреймворка / движка. Это также приводит к большей мобильности
Уэс

Хотя это и не самая распространенная проблема, возможно, что в двигателе или каркасе идея просто не может быть реализована или будет слишком сложной для (например, Minecraft)
akaltar

@akaltar: Да, но в то же время я ожидаю, что кто-то выберет двигатель, который соответствует поставленной цели. Например, не используйте 3D-движок для 2D-игры и наоборот.
Mario

9

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

Они? Это скорее зависит от того, что именно вы делаете, графически говоря.

Для многих видов игр существуют стандартные ответы на графические вопросы. Например, среднестатистическая 2D-игра прекрасно справляется с 2D-мастерством, например, XNA / MonoGame. Это просто спрайты, которые могут приходить партиями по местности, могут вращаться и так далее.

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

Теперь вы используете нормальное отображение и, возможно, отображение параллакса. Все в одном и том же контексте «рендеринга спрайтов», но требующего больше, чем просто чистых 2D движков. В частности, он требует многоуровневого «спрайтового блинтинга», чего не могут сделать многие 2D движки.

Что вы делаете, если ваш двигатель не может адаптироваться к вам? Таким образом, это означает, что вы должны сделать несколько проходов, один для цвета и один для освещения через карту нормалей. Но это не работает, потому что вам нужно поле высоты карты нормалей, чтобы использовать отображение параллакса для поиска цвета. Ну что теперь? Вам нужна альфа, чтобы сделать прозрачность, поэтому вы не можете украсть альфу. И двигатель просто не поддерживает мультитекстуры.

Таким образом, вы должны выбрать один из следующих:

  1. Откажись от идеи. Это означает, что ваша игра функционально ограничена вашим движком.
  2. Взломать двигатель, чтобы иметь мультитекстуру. Предполагая, что у вас есть доступ к исходному коду, вы теперь берете его на себя, чтобы совать чужой код. Это также означает, что вам нужно поддерживать его, а не разбивать его, когда вы спотыкаетесь.
  3. Делайте все возможное, в рамках ограничений двигателя. Таким образом, вы можете получить параллакс на картах нормалей, но не на цветах. Это может быть не совсем то, что вы хотели, но это лучше, чем ничего.

В качестве примера возьмем Geometry Wars. Большинство 2D-движков сосут подобные визуальные эффекты, так как большинство из них построены вокруг рисованных спрайтов, а не линий. Это игра, которая требует очень специализированного вида рендера.

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

Кроме того, есть очень практическая проблема: не все игровые движки одинаково переносимы.

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

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


Мне нравится ваш ответ, но я нахожу очень странным, что вы выбрали XNA в качестве своего примера. Он не страдает ни от одного из упомянутых вами недостатков, кроме, возможно, переносимости.
Сет Бэттин,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.