C'è una buona ragione per cui non dovrei usare un'applet Java per un gioco?


9

Voglio creare un gioco multiplayer basato su browser. La cosa bella dell'uso di un'applet è che posso rendere il client e il server nella stessa lingua (java / closing / scala / etc). So che ci sono html5 e javascript, ma javascript sul lato server non è maturo come la piattaforma jvm e il supporto del browser è ancora un po 'instabile.

Le applet non sembrano essere ampiamente utilizzate (tranne Runescape), ma c'è un motivo per cui non sono adatte o è solo a causa della cattiva reputazione che hanno sviluppato nella loro infanzia?


1
Forse perché poche persone fanno giochi Web in Java e preferiscono Flash?
Il comunista Duck

Oggigiorno Java non è più così facilmente disponibile nei browser (rispetto a Flash o javascript), e c'è una buona probabilità che il tuo pubblico di destinazione non lo abbia installato. Puoi comunque usare Java sul lato server tutto ciò che vuoi, tuttavia, indipendentemente dalla tecnologia lato client, non capisco l'argomento secondo cui "javascript lato server non è maturo come la piattaforma jvm".
falstro,

Risposte:


9

Ovviamente non sono inadatti per questo, come dimostrato da RuneScape e Minecraft e altri piccoli giochi di applet Java. Esistono anche librerie per la grafica 3D con accelerazione hardware ( LWJGL , JOGL ). Non è solo una lingua popolare nella comunità di sviluppo del gioco.

Tuttavia, devi considerare le tue piattaforme supportate. Windows e Linux hanno ottimi plugin Java, il Mac ne ha uno decente (funziona solo alla massima velocità in Safari nella mia esperienza), ma ovviamente piattaforme come l'iPad e il Chrome OS di Google mancherebbero completamente perché non lo fanno, e probabilmente non lo faranno mai, avere la VM Java su di essi.


Inoltre, devi pensare al tuo mercato di riferimento: i giocatori di Minecraft possono ovviamente andare su java.com e installarlo, ma un sacco di "folla di esploratori di Internet" potrebbe non esserlo.
Jari Komppa,

Tuttavia, Minecraft è ben fatto in quanto quegli utenti possono semplicemente scaricare la versione eseguibile, che include JRE e non necessita di tale installazione; Funziona e basta ™.
Ricket,

2
Penso che java sia un'ottima soluzione su come accedere a gpu nel browser senza forzare l'utente a installare qualcosa (l'80-85% degli utenti ha installato java ... incluso anche explorer noobs :))
Notabene,

6

Uso Java per scrivere giochi e ho usato C ++ per scrivere giochi e ho scoperto che Java va bene fintanto che rimani consapevole dei punti di forza e di debolezza di Java. I due grandi vantaggi per me, la programmazione in Java sono la velocità di sviluppo e l'implementazione / portabilità. I tempi di compilazione sono molto più veloci rispetto a VC ++ (non posso ancora parlare per XCode o Clang), il che significa che posso risolvere i problemi molto più velocemente. Inoltre, poiché Eclipse si sta compilando costantemente, commetto meno errori di battitura. Non ho mai scritto un pezzo di codice C ++ che "funzioni" su un altro sistema o compilatore. In Java, questa è la norma.

D'altra parte, Java ha alcuni importanti inconvenienti. L'efficienza è spesso considerata una ragione per non usare Java, ma ho scoperto che fintanto che codifichi in un certo modo, Java può funzionare abbastanza bene. Il problema è che il modo in cui devi programmare va contro ciò che un sacco di gente Java considererebbe un buon design.
Il cuore di Java è il "garbage collector", è il sistema di gestione della memoria. Quando si scrive un codice efficiente, si desidera evitare di effettuare allocazioni dinamiche ogni frame in qualsiasi lingua e questo è particolarmente vero per Java. Se disattivi il cestino della spazzatura a causa di novità sciatte, puoi dire addio ai frame rate fluidi. In secondo luogo (e più fastidiosamente) Java non supporta tipi di dati utente di 1a classe. Ogni tipo di dati utente in Java viene istanziato essenzialmente come puntatore a una classe, allocata sull'heap. Questo è terribile per la concorrenza nella cache che non puoi avere cose come una matrice di oggetti Vector3 e avere quelle simultanee in memoria - puoi avere una matrice di puntatori Vector3 ma non è affatto la stessa cosa. In genere, invece, devi utilizzare gli offset in grandi matrici di tipi primitivi.


3

Niente di sbagliato con le applet Java per un gioco Web. Ho scritto un gioco roguelike open source ( Tyrant ) in Java e funziona molto bene come applet.

Alcuni grandi punti positivi di Java nella mia esperienza:

  • La portabilità è eccellente - data la complessità di Tyrant, è stato abbastanza impressionante che sono riuscito a ottenere esattamente lo stesso codice compilato per funzionare bene su Windows, Mac e Linux.

  • Non devi preoccuparti delle stranezze del browser.

  • Con un po 'di intelligenza, puoi far funzionare lo stesso codice sia come applet che come applicazione desktop autonoma

  • Le prestazioni sono eccezionali supponendo una JVM moderna.

  • Tutti i soliti punti positivi di Java in termini di vasta gamma di librerie / API open source ecc.

Basta essere consapevoli di quanto segue:

  • Dovrai firmare la tua applet / ottenere autorizzazioni privilegiate se vuoi fare cose come archiviare i dati sul filesystem locale o accedere alle librerie native. Questo può essere un ostacolo per alcuni utenti.

  • Il tempo di avvio tende ad essere un po 'più lento di Flash o JavaScript. D'altra parte, le prestazioni sono migliori quando la JVM è attiva e funzionante ...

  • Java è un linguaggio garbage collection, quindi a volte ha delle leggerissime pause GC. Non è davvero un problema per i giochi casuali / di ruolo / di strategia, ma potrebbe essere un problema per i titoli FPS 3D ad alte prestazioni in cui stai cercando di mantenere un framerate costante di 120 FPs senza jitter ......


1

Se stai pianificando che il gioco sia freeware o sei pronto a gestire da solo il guadagno, Java va bene. Tuttavia, non ha un modello di sponsorizzazione del gioco ampiamente diffuso come Flash, quindi guadagnare denaro sarebbe un po 'più difficile.


Sento odore di un'opportunità? :)
Ricket,

Non sono sicuro che il modello di sponsorizzazione rappresenti un buon affare per i creatori. È meglio vendere il tuo lavoro a un prezzo ragionevole piuttosto che prendere una miseria da un sito portale che guadagna una miseria dalla pubblicità.
Luther

Lutero: abbastanza vero. Solo perché un modello è stabilito non significa che sia il migliore.
Gregory Avery-Weir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.