Есть ли веская причина, по которой я не должен использовать Java-апплет для игры?

9

Я хочу сделать многопользовательскую браузерную игру. Хорошая вещь об использовании апплета в том, что я могу сделать клиент и сервер на одном языке (java / closure / scala / etc). Я знаю, что есть html5 и javascript, но javascript на стороне сервера не так совершенен, как платформа jvm и поддержка браузеров все еще довольно нестабильны.

Апплеты, кажется, не используются широко (за исключением Runescape), но есть ли причина, по которой они не подходят, или это просто из-за плохой репутации, которую они создали в младенчестве?

ryeguy
источник
1
Может быть, потому что мало кто занимается веб-играми на Java и предпочитает Flash?
Коммунистическая утка
В настоящее время Java просто более недоступна в браузерах (по сравнению с Flash или всеми средствами javascript), и есть большая вероятность, что ваша целевая аудитория не установит ее. Вы все еще можете использовать Java на серверной стороне все, что вам угодно, хотя, независимо от технологий на стороне клиента, я не понимаю аргумента, что «javascript на стороне сервера не так совершенен, как платформа jvm».
Falstro

Ответы:

9

Они явно не подходят для этого, как показали RuneScape и Minecraft и другие меньшие Java-апплеты. Есть также библиотеки для аппаратно-ускоренной 3D-графики ( LWJGL , JOGL ). Это просто не популярный язык в сообществе разработчиков игр.

Вы должны рассмотреть ваши поддерживаемые платформы, хотя. В Windows и Linux есть отличные плагины для Java, у Mac есть неплохие (в моем опыте он работает на полной скорости только в Safari), но очевидно, что такие платформы, как iPad и Google Chrome OS, будут полностью отсутствовать, потому что они этого не делают и, вероятно, не будут когда-нибудь, иметь Java VM на них.

Ricket
источник
Кроме того, вы должны подумать о своем целевом рынке - игроки майнкрафта, очевидно, могут справиться с переходом на java.com и его установкой, но многие из «толпы интернет-исследователей» могут и не быть.
Яри ​​Комппа
Тем не менее, Minecraft хорош тем, что эти пользователи могут просто загрузить исполняемую версию, которая включает в себя JRE и не нуждается в такой установке; это просто работает ™.
Ricket
2
Я думаю, что java - отличное решение, как получить доступ к gpu в браузере, не заставляя пользователя устанавливать что-либо (80-85% пользователей установили java ... в том числе и noobs для проводника :))
Notabene
6

Я использую Java для написания игр, и я использовал C ++ для написания игр, и я обнаружил, что Java хорошо работает, если вы помните о сильных и слабых сторонах Java. Два больших преимущества для меня - программирование на Java - скорость разработки и возможность развертывания / переносимости. Время компиляции намного быстрее, чем в VC ++ (пока не могу говорить за XCode или Clang), что означает, что я могу решить проблемы намного быстрее. Кроме того, поскольку Eclipse постоянно компилируется, я делаю меньше ошибок типа опечаток. Я никогда не писал кусок кода C ++, который «просто работает» в другой системе или компиляторе. На Яве это норма.

С другой стороны, у Java есть некоторые существенные недостатки. Эффективность часто рассматривается как причина не использовать Java, но я обнаружил, что до тех пор, пока вы кодируете определенным образом, Java может работать довольно хорошо. Проблема в том, что определенный способ написания кода идет вразрез с тем, что многие люди Java считают хорошим дизайном.
В основе Java лежит «сборщик мусора», это система управления памятью. При написании эффективного кода вы хотите избежать динамического выделения каждого кадра на любом языке, и это особенно верно для Java. Если вы отключили сборщик мусора из-за неаккуратного new'ing, вы можете поцеловать сглаженную частоту кадров до свидания. Во-вторых (и что самое неприятное), Java не поддерживает пользовательские типы данных первого класса. Каждый пользовательский тип данных в Java создается по существу как указатель на класс, размещенный в куче. Это ужасно для параллелизма кеша, когда вы не можете иметь такие вещи, как массив объектов Vector3 и иметь их одновременно в памяти - вы можете иметь массив указателей Vector3, но это совсем не одно и то же. Обычно вместо этого вы должны использовать смещения в больших массивах примитивных типов.

Лютер
источник
3

Ничего плохого в Java-апплетах для веб-игры. Я написал roguelike-игру с открытым исходным кодом ( Tyrant ) на Java, и она очень хорошо работает в качестве апплета.

Некоторые большие плюсы Java в моем опыте:

  • Переносимость превосходна - учитывая сложность Tyrant, было довольно впечатляюще, что мне удалось получить точно такой же скомпилированный код, чтобы он хорошо работал на Windows, Mac и Linux.

  • Вам не нужно беспокоиться об особенностях браузера.

  • С некоторой сообразительностью вы можете запустить один и тот же код как в виде апплета, так и в виде отдельного настольного приложения.

  • Производительность велика, если принять во внимание современную JVM.

  • Все обычные плюсы Java в плане большого количества библиотек с открытым исходным кодом / API и т. Д.

Просто помните о следующем:

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

  • Время запуска, как правило, немного медленнее, чем Flash или JavaScript. С другой стороны, производительность лучше, когда JVM запущена и работает ......

  • Java является языком для сборки мусора, поэтому иногда он делает очень небольшие GC-паузы. На самом деле это не проблема для казуальных / ролевых / стратегических игр, но может быть проблемой для высокопроизводительных 3D FPS игр, где вы пытаетесь поддерживать постоянную частоту кадров 120 FPs без дрожания ......

mikera
источник
1

Если вы планируете, чтобы игра была бесплатной, или готовы справиться с зарабатыванием денег самостоятельно, то с Java все в порядке. Однако у него нет устоявшейся, широко распространенной модели спонсорства игр, как у Flash, поэтому зарабатывать деньги будет немного сложнее.

Грегори Эйвери-Вейр
источник
Чувствую ли я возможность? :)
Ricket
Я не уверен, что модель спонсорства представляет хорошую сделку для создателей. Лучше продать свою работу за разумную цену, чем взять гроши с сайта портала, который делает гроши с рекламы.
Лютер
Лютер: достаточно верно. То, что модель установлена, не означает, что она лучшая.
Грегори Эйвери-Вейр