2013-07-07 3 views
2

Почему нет "Высоких графических 3D-игр", сделанных с Java на рынке? Разве Java не является хорошим вариантом? И почему так? Единственная крупная игра, которую я видел, это в основном Minecraft, и в ней не может быть много полигонов и двигателей освещения/физики. Тем не менее, необходим относительно хороший ПК? Есть игры, невероятно большие графики, чем Minecraft, а неподвижные изображения работают быстрее. Я полагаю, что ресурсы Java «уничтожают». Во всяком случае, вопрос: возможно ли сделать хорошее графическое приложение с Java, или почему бы и нет.Java High Graphics 3D-игры?

ответ

5

мир разработки игр смешной один: С одной стороны, они часто быстро принимать новые идеи, с другой стороны, они все еще в каменного века.

По правде говоря, редко бывает так много стимулов при переключении на .NET/Java/ничего, кроме C/C++.

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

Кроме того, в C++ существует много устаревшего кода. Если код из предыдущих проектов может быть повторно использован (скажем, если вы пишете сиквел), , который еще больше ценит придерживаться того же языка, , вместо того, чтобы переписывать его на новый язык (тем более, . буду скорее всего вновь тонны ошибок, которые вы должны будете тратить время на улаживание

Наконец, это редко для игр, которые будут написаны на 100% C++ все равно - много делается с использованием языков сценариев, «ли они re custom или просто , интегрируя существующие языки (в наши дни Lua является одним из наиболее популярных ).

Что касается мусора co что это может быть проблема . Проблема заключается не столько в том, что она существует, сколько в том, как работает - сборщик мусора ДОЛЖЕН быть неблокирующим (или, по крайней мере, быть , который будет блокироваться очень коротко), так как это просто неприемлемо , чтобы заморозить игру 10 секунд, пока он сканирует всю выделенную память , чтобы увидеть, что можно освободить. Я знаю, что Java имеет тенденцию задушить совсем немного в GC'ing, когда он близок к исчерпанию памяти (и для некоторых игр там, это будет).

Вы также немного ограничены в том, что вы можете сделать: вы не можете полностью использовать из-за накладных расходов на выполнение. Представьте, что Crysis написано на Java ... даже если это единственная видимая разница , это будет совсем не то же самое (я также уверен, что вам нужно Core i7 для запуска.).

Это не значит, что эти языки не имеют места в игре development - и нет, я имею в виду не только программирование инструмента. Для в большинстве игр вам не нужен дополнительный бит производительности, который вы получаете от C++, включая 3D-игры, и если вы пишете все это с нуля, то может иметь смысл использовать что-то вроде XNA - на самом деле , есть хороший шанс.

Что касается коммерческих игр - RuneScape count? Это может быть самая успешная Java-игра.

Источник: Why are only a few video games written in Java?

+1

Современные видеокарты делают большую часть работы. Следовательно, необработанная скорость реального языка реализации, работающего на процессоре, не так важна, как раньше, поскольку они могут поддерживать питание GPU. –

+0

Дополнительные накладные расходы JNI, однако, оказывают незначительное влияние на производительность. Если вы делаете это «правильно» и доставляете свои призывы на призыв как можно больше, это должно быть незначительным. –