Чи є причина, що я не повинен використовувати аплет Java для гри?


9

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

Аплети не здаються широко використовуваними (за винятком Runescape), але чи є причина, що вони непридатні, чи це лише через погану репутацію, яку вони розвивали в дитинстві?


1
Можливо, тому, що мало хто займається веб-іграми на Java і вважає за краще Flash?
Качка комуністична

Java просто зараз не настільки легко доступна у веб-переглядачах (порівняно з Flash, або всіма способами javascript), і є хороший шанс, що ваша цільова аудиторія не встановить її. Ви все ще можете використовувати Java на сервері все, що вам потрібно, хоча, незалежно від технології клієнта, я не розумію аргументу, що "JavaScript на стороні сервера не такий зрілий, як платформа jvm".
falstro

Відповіді:


9

Вони, очевидно, не підходять для цього, як показали RuneScape і Minecraft та інші менші апплетні ігри Java. Існують також бібліотеки для апаратної 3D-графіки ( LWJGL , JOGL ). Це просто не популярна мова в спільноті розвитку ігор.

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


Крім того, ви повинні подумати про свій цільовий ринок - гравці minecraft, очевидно, можуть впоратися з переходом на java.com та його встановленням, але багато "натовпу інтернет-дослідників" може бути не так.
Jari Komppa

Однак Minecraft чудово виконаний тим, що ці користувачі можуть просто завантажити виконувану версію, яка включає JRE і не потребує такої установки; це просто працює ™.
Рікет

2
Я думаю, що java - чудове рішення, як отримати доступ до gpu у браузері, не змушуючи користувача встановлювати щось (80-85% користувачів встановлено Java ... включаючи і
ноуби

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-аплетах для веб-гри. Я написав у Java Java гру з відкритим кодом ( Tyrant ), яка дуже добре працює як аплет.

Деякі великі плюси Java в моєму досвіді:

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

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

  • Проявивши трохи кмітливості, ви можете змусити один і той же код виконуватись як аплет або як окремий додаток для настільних ПК

  • Продуктивність чудова, якщо припустити сучасний JVM.

  • Усі звичні плюси Java з точки зору великого масиву бібліотек / API з відкритим кодом тощо.

Просто пам’ятайте про наступне:

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

  • Час запуску, як правило, трохи повільніше, ніж Flash або JavaScript. З іншого боку, продуктивність краще, коли JVM працює і працює ......

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


1

Якщо ви плануєте, щоб гра була безкоштовною, або ви готові самостійно впоратися з цим, заробляючи гроші, Java добре. Однак у нього немає встановленої, широко розповсюдженої моделі спонсорства ігор, як Flash, так що заробляти готівкою буде дещо складніше.


Я пахну нагодою? :)
Рікет

Я не впевнений, чи спонсорська модель представляє хорошу пропозицію для творців. Краще продати свою роботу за розумну ціну, ніж брати грошей з веб-сайту порталу, які роблять грошей з реклами.
Лютер

Лютер: Досить правда. Тільки тому, що встановлена ​​модель не означає, що вона найкраща.
Григорій Евері-Вейр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.