Я искал в Интернете, но ресурсов для разработки игр на Java не так много, не так много, как на C ++. На самом деле, большинство движков написаны на C ++. Я пытался играть в игру, созданную с помощью jMonkeyEngine, но игра была очень медленной, до того момента, когда мой компьютер завис. У меня не было никаких других приложений Java, и ничего слишком ресурсоемкого. Напротив, мой компьютер может играть в большинство современных 3D-игр с легкостью. Если я продолжу изучать и улучшать Java сейчас, и окажется, что позже мне потребуется изучить C ++, переключение может быть затруднено.
Является ли Java приемлемым языком для серьезной разработки игр? Под серьезным я подразумеваю качественную графику без особых задержек на современных компьютерах. Я также хочу рассмотреть возможность создания игр для приставок.
источник
Ответы:
Да, проверьте этот список для доказательства. Это некоторые игры, созданные на Java с использованием Облегченной библиотеки игр Java (LWJGL). Это низкоуровневая структура, которая обеспечивает OpenGL для высококачественной графики и OpenAL для звуков. Он также предоставляет API ввода. С их помощью вы можете легко начать серьезную разработку игр на Java.
В настоящее время я пишу свою вторую 3D-игру в качестве хобби-проекта на Java, и мне это просто нравится. Раньше я писал свои игры на C ++, но после перехода на Java пути назад не было. Поддержка нескольких операционных систем с Java может быть очень простой, например, моя предыдущая Java-игра, которую я разрабатывал в течение года, работала в Linux сразу и в OS X с одной ошибкой без необходимости что-либо компилировать на этих платформах.
С другой стороны, с Java у вас есть пара проблем.
источник
На самом деле, нет. Дело в том, во-первых, существует очень мало с точки зрения существующих библиотек для Java по сравнению с практически всем, что для C ++.
Во-вторых, Java как язык просто не пригоден для разработки игр - я имею в виду, например, если вы имеете дело с буферами GPU, то Java не предоставляет языковую функцию, которая поможет вам гарантировать, что они правильно заблокированы и разблокирована или уничтожена, что делает C ++. Кроме того, есть проблема с производительностью - и сборщик мусора недетерминирован, что очень плохо для игры.
Я никогда не наблюдал ни одной неиндийской игры, которая бы проводила значительное время на языке, который не был скомпилирован с нативным кодом до запуска, и даже инди-игры, которые делают это, являются редкостью. Так что сейчас я считаю, что это просто невозможно.
Да, абсолютно так и будет. Java и C ++ сильно отличаются друг от друга, несмотря на их внешнее синтаксическое сходство. Опыт Java практически ничего не значит при изучении C ++.
Геймплей над графикой - жизнеспособный выбор, и вы можете увидеть это в успехе таких игр, как Terarria и Minecraft. Но если вы намереваетесь создать графику srs, то это не будет выполнимо в Java.
источник
Если ваша причина выбора Java в том, что вы не понимаете C ++, ваши Java-программы не будут достаточно быстрыми для высококачественной графики. Использование языка более высокого уровня должно быть потому, что оно делает вас более продуктивным, а не потому, что вы не могли понять язык более низкого уровня.
Я не считаю плохой идеей написать игру на Java, особенно если игра простая, но вы сразу столкнетесь с проблемами производительности на Java, если будете использовать ее в качестве опоры.
Тяжелая графика: возможно, но вы будете делать в Java / LWJGL то же самое, что и в C ++ / GL: запись байтов в буферы GPU и / или использование устаревших списков отображения, как это делает Minecraft. Если вы не понимаете управление памятью, вы не будете делать это правильно.
Быстрая игра без задержек: задача не из легких на любом языке, и вы с большей вероятностью будете стрелять себе в ногу, не задумываясь.
Нет, Java не будет доступна на консолях.
источник
Опытный программист, как правило, знает много языков программирования - изучение дополнительных языков программирования не так уж сложно, если вы хорошо знаете один. Однако я настоятельно рекомендую, чтобы C ++ не был вашим первым языком и, вероятно, не вторым.
Это связано с тем, что C ++ получает большую эффективность благодаря отсутствию какой-либо значительной проверки ошибок во время выполнения. Например, доступ к элементу вне конца массива в Java всегда будет вызывать исключение, сообщающее программисту, что именно не так. В C ++ вам может повезти, и он сразу же рухнет, но очень часто он молча удаляет некоторые другие данные, и ошибка не появится намного позже .
Я бы посоветовал вам сейчас придерживаться Java (или переключиться на C #, если вы предпочитаете это). Это позволит вам сделать все быстрее, чем при использовании C ++, и производительность на ПК не должна быть проблемой.
Подумайте об изучении C ++ после того, как вы выполнили несколько проектов на более безопасных языках. C ++ - это то, что вам нужно для большинства профессиональных заданий по разработке игр.
Обратите внимание, что за исключением того, что C # / XNA для получения игры, которую вы записали на консоль, как минимум, требуют, чтобы вы создали компанию с офисом и располагали большим бюджетом на разработку оборудования и другие расходы.
источник
Отказ от ответственности: это не совсем отвечает на ваш вопрос. Тем не менее, я попытался (кратко) упомянуть некоторые моменты, которые могут вас заинтересовать.
Причина, по которой вы так много видите о C ++, заключается в том, что C ++ по-прежнему является отраслевым стандартом - наиболее распространенным языком для консолей и т. Д.
Ява не часто используется. Minecraft - довольно популярная игра, которая стала популярной благодаря Java; но это не так здорово графически. Spiral Knights неплохо - тоже сделано на Java, со значительной графикой.
Если вам нравится Java, C # очень похож по синтаксису, с тем преимуществом, что он может взаимодействовать с C ++, поэтому в C ++ при необходимости можно выполнять низкоуровневые вещи. Unity может использовать C # для написания скриптов, а XNA - отличный выбор.
Опять же, Java широко не используется. Если вам нравится стиль и синтаксис, я думаю, вы обнаружите, что C # очень похож, очень приятен при программировании.
Я надеюсь, что твои мечты осуществятся, по пути будет очень весело :)
источник
Это не отвечает на ваш вопрос; Проблемы с графикой и консолью, похоже, очень важны. Также GC влияет на производительность. Но о чем я пишу:
Если вы пишете большие, сложные OO-программы, вы будете писать их в 5 раз быстрее на Java, чем на C ++. Кроме того, обслуживание будет значительно проще. Я переключился (по общему признанию для неигрового программного обеспечения), и моя производительность взлетела до небес. C #, еще одна хорошая альтернатива, сложнее в изучении, чем Java, потому что ее гораздо больше. Когда вы знаете это, вы можете писать код даже быстрее, чем в Java; он предлагает вам много хитростей. Тем не менее, я считаю, что эти приемы могут затруднить техническое обслуживание. И еще есть Java doc, который помогает с библиотеками Sun и вашим собственным старым кодом. C # не имеет ничего подобного.
Я сделал большую волосатую игру на Java и нашел язык идеальным, но моя графика была элементарной, и это был не шутер, где десятая часть секунды была для игроков вечностью. Кроме того, я рассчитываю добавить к нему много позже, тогда как я думаю, что большинство людей просто идут и пишут новую игру.
источник
Послушай, чувак, простой ответ на вопрос «Является ли Java жизнеспособным для разработчика игр» - очевидное да. Вы можете использовать любой язык программирования для создания игр. Это не значит, что ты должен .
Вероятно, именно те вещи, которые вас отвлекают от C ++ (низкоуровневое управление памятью, отсутствие сборщика мусора, необходимость обращать внимание на указатели, структуры в виде массивов и т. Д.), - это те самые вещи, которые вам следует изучить, если вы хотите наиболее эффективно использовать ресурсы компьютера. , Ваши игры будут работать лучше, если вы используете ресурсы компьютера наиболее эффективно.
Java делает некоторые вещи (например, проверку границ массива), которые просто заставляют его работать медленнее. В этом оптимизированном примере кода Java Perlin noise автор прокомментировал «(доступ к массиву намного медленнее, чем доступ к элементу)». Подобные вещи довольно противоречивы из опыта C ++. Но на Java такие вещи есть.
Я говорю, прекратите уворачиваться от пули, изучите C ++ и используйте его.
источник
Вы должны делать это на языке, который вы знаете лучше всего, пока не сможете позволить себе формальное образование (бакалавр наук?) В области компьютерных наук, уделяя особое внимание дизайну игр. Вы могли бы использовать свою игру, чтобы получить стипендию, особенно если вы можете сказать: «Я сделал это без какого-либо официального обучения Java»
Современные JVM, даже те, что принадлежат Oracle, имеют множество функций для решения проблем, поднятых здесь людьми. Вы можете использовать разные сборщики мусора, чтобы получить более детерминированное поведение сборщика мусора. У меня нет большого опыта работы с 3D-библиотеками - только немного с Java3D - но никто здесь, кажется, не жаловался на них. Анализ побега теперь позволяет исключить блокировку и намного быстрее / незначительно распределить объекты с очень коротким сроком службы.
Проблема в том, выберете ли вы Java из C ++, вам нужно будет научиться правильно использовать параллелизм и хорошо разбираться в управлении памятью. В конце концов, вы можете так же легко облажаться,
malloc
как вы можете сnew
. Я не знаю, на что похожи инструменты для C ++, но инструменты профилирования для Java довольно просты в использовании, бесплатны и интегрированы с IDE. Вы можете использовать их для отслеживания проблем с производительностью и обучения .источник