GameDevelopment: (Java & OpenGL) или (C++ & OpenGL & SDL)?
поскольку Java поддерживает OpenGL, каков наилучший вариант для разработки игры?
-
Java
+OpenGL
-
C++
+SDL
+OpenGL
Я всегда избегал Java (в разработке игр, конечно) из-за его скорости. Но я обнаружил, что Java поддерживает OpenGL. Так что, я думаю, скорость больше не может быть проблемой... Что выбрать? Есть замечания?
Java было бы намного проще для меня, из-за моего опыт работы в Java и сборщике мусора.
спасибо
9 ответов
Я бы проголосовал за C++ за простой факт, что у вас есть надежный деструктор в ваших объектах. Это позволяет обернуть многие компоненты OpenGL (буферы, текстуры и т. д.). Можно знать, что при создании объекта актив выделяется, а при его уничтожении (или выходе из области действия) актив очищается.
Это, безусловно, можно сделать на Java. Minecraft был сделан на Java, и он вытащил более $25 миллионов.
на мой взгляд, если у вас есть идея игры в голове, не имеет значения, с чем вы ее пишете (сначала), C/C++, Java, pen & paper... Выберите язык, с которым вам удобнее, прототип и протестируйте свою идею игры, как только у вас будет грубый эскиз и вы узнаете, что вам нужно сделать, выбросьте прототип, разработайте геймплей и архитектуру, а затем начните кодировать фактическую вещь. Не оптимизируйте до тех пор, пока у вас не будет большинства или всех функциональных возможностей (в общем, всегда незначительные ошибки для охоты), и вы действительно видите, где узкие места.
Я видел, как это происходит снова и снова, игровые программисты являются одними из худших преждевременных оптимизаторов когда-либо, пытаясь выжать несколько циклов из чего-то тривиального, пропуская самые большие узкие места, а затем оптимизировать еще (в неправильном месте). Я также много раз признавал себя виновным в этом. Я бы сказал, Не выбирайте C++ (или Java, если на то пошло) из-за скорости, вы можете получить очень хорошую производительность от обоих, если сделано "правильно". При необходимости вы всегда можете переключиться на другой язык, если сам язык действительно является узким местом или действительно мешает вам что-то делать. Java не является автоматически медленным, а C++ не является автоматически быстрым, вы можете пойти (очень) неправильно с обоими. Я использовал root для C и C++ во всем,но после работы с Java довольно долго, я действительно не скучаю по всем хлопотам.
есть много (уже оптимизирован и довольно прост в использовании) игровые движки доступны для обоих языков, поэтому нет необходимости сворачивать свои собственные... если вы действительно хотите. По моему опыту, большинство любителей "игровых программистов", как правило, больше интересуются технической стороной вещей, чем реальной игрой (включая меня) ;) как только все технические препятствия сделаны, и вы получаете эту красивую модель/кучу спрайтов/эффектов частиц, работающих с некоторыми шейдерными эффектами, энтузиазм, кажется, исчезает... Но не позволяйте мне обескуражить вас, программирование игр очень весело, даже если вы никогда ничего не заканчиваете (я бы не назвал ни один из моих собственных проектов законченным).
Я некоторое время не кодировал никаких игр, но для C++ 2D SDL является хорошим кандидатом, другой вариант может быть SFML, или если вы хотите более низкий уровень касания с OpenGL, вы можете попробовать пойти с GLFW + почвы + некоторая аудиотека. Для полномасштабного 3D, я бы сказал, Попробуйте либо огр или Irrlicht выступает + Irrklang (вероятно, есть и множество других).
в Java есть по крайней мере Slick2D, Золотой T Игровой Движок и для нижнего уровня доступа, LWJGL (хотя я думаю, что вы также можете получить доступ к LWJGL через Slick2D). Для 3D, кто-то рекомендовал jMonkeyEngine для меня, но я никогда не пробовал.
Я бы пошел с C++, SDL и OpenGL.. SDL обновляется с 1.3 на данный момент, и это будет действительно хорошо. На мой взгляд, вы должны сделать это на C++, как вы заявили, Вы будете чувствовать себя более комфортно с Java, комфортно после создания игры на C++ было бы очень полезно. Вы не только сделаете игру, но и узнаете больше одновременно.
Java оказалась такой же быстрой, если не быстрее, чем c++, хотя, конечно, вы не достигаете таких результатов без небольшой настройки параметров и тщательного мониторинга сборщика мусора. Если вы хотите заниматься дизайном игр с Java, я бы сказал, что это хороший выбор, если вы изучите, как подойти к нему в первую очередь.
Если вы идете по маршруту Java, вам может потребоваться отправить JVM вместе с вашей игрой. Это не значит, что не делайте этого, но многие люди могут не установить Java или не иметь достаточно недавнюю версию для функций и производительности, которые вы хотите. Я не изучал лицензионные требования для доставки JVM, но это, вероятно, то, что вы захотите исследовать, прежде чем принимать решение.
вы также должны знать, что при высокой настройке приложения, хотя Java API одинакова на разных платформах, что есть различия, потому что реализации тех, кто часто использует базовую ОС. Поэтому я сомневаюсь,что использование Java уменьшит тестовую нагрузку для игры.
Это действительно зависит от того, на каком языке вы больше всего привыкли. С c++ кривая обучения более крутая, чем с java. Если вы не в ни один из языков, и хотите получить некоторые разработки, я бы рекомендовал java.
и небольшая заметка. Если вы совершенно новый, я бы также рекомендовал посмотреть на XNA, но он основан на DirectX. И вы должны знать некоторые c#.
Ну, я запрограммировал все свои игры в SDL, и я бы определенно рекомендовал использовать c++. Хотя вы можете посмотреть на SFML!
SFML уже интегрирован с OpenGL, и довольно легко встать и работать с игровым программированием.
Это действительно зависит от того, какие игры вы хотите построить и какой язык программирования более комфортно.
Если вы планируете делать большие игры в будущем, C++ лучше всего подходит для общего опыта. Большинство коммерческих игр написаны на C / C++. Microsoft также имеет XNA framework, который использует C#
Id все еще идет с языком программирования, с которым вам удобнее, они оба большие
однако, если вы не против узнать немного больше, то перейти с C++
c++ всегда был лучшим вариантом. Это быстрее и немного легче понять, чем Java. Я для себя использую SDL OPENGL c++.