Я хочу сделать многопользовательскую браузерную игру. Хорошая вещь об использовании апплета в том, что я могу сделать клиент и сервер на одном языке (java / closure / scala / etc). Я знаю, что есть html5 и javascript, но javascript на стороне сервера не так совершенен, как платформа jvm и поддержка браузеров все еще довольно нестабильны.
Апплеты, кажется, не используются широко (за исключением Runescape), но есть ли причина, по которой они не подходят, или это просто из-за плохой репутации, которую они создали в младенчестве?
Ответы:
Они явно не подходят для этого, как показали RuneScape и Minecraft и другие меньшие Java-апплеты. Есть также библиотеки для аппаратно-ускоренной 3D-графики ( LWJGL , JOGL ). Это просто не популярный язык в сообществе разработчиков игр.
Вы должны рассмотреть ваши поддерживаемые платформы, хотя. В Windows и Linux есть отличные плагины для Java, у Mac есть неплохие (в моем опыте он работает на полной скорости только в Safari), но очевидно, что такие платформы, как iPad и Google Chrome OS, будут полностью отсутствовать, потому что они этого не делают и, вероятно, не будут когда-нибудь, иметь Java VM на них.
источник
Я использую Java для написания игр, и я использовал C ++ для написания игр, и я обнаружил, что Java хорошо работает, если вы помните о сильных и слабых сторонах Java. Два больших преимущества для меня - программирование на Java - скорость разработки и возможность развертывания / переносимости. Время компиляции намного быстрее, чем в VC ++ (пока не могу говорить за XCode или Clang), что означает, что я могу решить проблемы намного быстрее. Кроме того, поскольку Eclipse постоянно компилируется, я делаю меньше ошибок типа опечаток. Я никогда не писал кусок кода C ++, который «просто работает» в другой системе или компиляторе. На Яве это норма.
С другой стороны, у Java есть некоторые существенные недостатки. Эффективность часто рассматривается как причина не использовать Java, но я обнаружил, что до тех пор, пока вы кодируете определенным образом, Java может работать довольно хорошо. Проблема в том, что определенный способ написания кода идет вразрез с тем, что многие люди Java считают хорошим дизайном.
В основе Java лежит «сборщик мусора», это система управления памятью. При написании эффективного кода вы хотите избежать динамического выделения каждого кадра на любом языке, и это особенно верно для Java. Если вы отключили сборщик мусора из-за неаккуратного new'ing, вы можете поцеловать сглаженную частоту кадров до свидания. Во-вторых (и что самое неприятное), Java не поддерживает пользовательские типы данных первого класса. Каждый пользовательский тип данных в Java создается по существу как указатель на класс, размещенный в куче. Это ужасно для параллелизма кеша, когда вы не можете иметь такие вещи, как массив объектов Vector3 и иметь их одновременно в памяти - вы можете иметь массив указателей Vector3, но это совсем не одно и то же. Обычно вместо этого вы должны использовать смещения в больших массивах примитивных типов.
источник
Ничего плохого в Java-апплетах для веб-игры. Я написал roguelike-игру с открытым исходным кодом ( Tyrant ) на Java, и она очень хорошо работает в качестве апплета.
Некоторые большие плюсы Java в моем опыте:
Переносимость превосходна - учитывая сложность Tyrant, было довольно впечатляюще, что мне удалось получить точно такой же скомпилированный код, чтобы он хорошо работал на Windows, Mac и Linux.
Вам не нужно беспокоиться об особенностях браузера.
С некоторой сообразительностью вы можете запустить один и тот же код как в виде апплета, так и в виде отдельного настольного приложения.
Производительность велика, если принять во внимание современную JVM.
Все обычные плюсы Java в плане большого количества библиотек с открытым исходным кодом / API и т. Д.
Просто помните о следующем:
Вам нужно будет подписать свой апплет / получить привилегированные разрешения, если вы хотите делать такие вещи, как хранение данных в локальной файловой системе или доступ к собственным библиотекам. Это может стать препятствием для некоторых пользователей.
Время запуска, как правило, немного медленнее, чем Flash или JavaScript. С другой стороны, производительность лучше, когда JVM запущена и работает ......
Java является языком для сборки мусора, поэтому иногда он делает очень небольшие GC-паузы. На самом деле это не проблема для казуальных / ролевых / стратегических игр, но может быть проблемой для высокопроизводительных 3D FPS игр, где вы пытаетесь поддерживать постоянную частоту кадров 120 FPs без дрожания ......
источник
Если вы планируете, чтобы игра была бесплатной, или готовы справиться с зарабатыванием денег самостоятельно, то с Java все в порядке. Однако у него нет устоявшейся, широко распространенной модели спонсорства игр, как у Flash, поэтому зарабатывать деньги будет немного сложнее.
источник