Un gioco multiplayer in JavaScript è una cattiva idea? [chiuso]


8

Quali sono i possibili svantaggi dell'utilizzo di JavaScript (lato client) durante la creazione di una partita multiplayer?

Descrizione del gioco: è un MMORPG / RTS. Ciò significa che i giocatori contribuiscono attivamente alle strutture del mondo e creano gran parte dei contenuti stessi.


Sono curioso: quale meccanismo usi per far parlare il client con il server, e com'è la latenza? Quale piattaforma stai usando per il server?
Sarà il

Il server è in esecuzione sul mio netbook che esegue Ubuntu Linux ed è scritto in JavaScript sul lato server, che funziona con node.js.
jcora,

Non so perché originariamente ho votato a favore di questa domanda. Cambiato in un voto negativo e considerando di esprimere un voto vicino, perché "___ è una buona idea?" non è mai davvero una domanda rispondibile. In effetti, nella mia risposta ho anche sottolineato che non è possibile rispondere esattamente alla domanda.
jhocking

Inoltre, ho voglia di cambiare il titolo in "Una partita multiplayer in JavaScript è una cattiva idea?" migliorerebbe la domanda. All'inizio sembra un cambiamento insignificante, ma rifondare la domanda in cerca di aspetti negativi la rende più responsabile di un "quale tecnologia dovrei usare?" una specie di domanda. Chiedere "questa tecnologia è buona?" invita solo a macinare l'ascia.
jhocking

1
Non so cosa pensino le mod ma mi piace molto meglio ora. torna
all'upgrade

Risposte:


9

Va bene se:

  1. Il server non invia alcuna informazione sui giocatori dietro il campo visivo del giocatore locale (deve essere calcolato sul lato server) al giocatore locale (per evitare il wallhacking).
  2. Tutte le azioni vengono verificate per la disponibilità sul server quando un giocatore preme il pulsante di azione.
  3. Si esegue il rendering solo sul client: tutte le azioni vengono eseguite sul server e previste solo sul client.
  4. Tutte le azioni a tempo sono sul lato server.

Sì, sto facendo queste cose.
jcora,

10
Nota che queste istruzioni sono valide per ogni gioco multiplayer, indipendentemente dalla lingua, dalla piattaforma o altro.
o0 '.

10

Se il tuo gioco è adatto allo sviluppo di JavaScript dipende dal gioco. Non hai descritto il tuo gioco, quindi non c'è modo per noi di rispondere alla domanda nel titolo.

Tuttavia, posso dire che la tua preoccupazione per l'hacking non è un problema qui. Non perché JavaScript non possa essere violato (può e facilmente), ma lo stesso vale per ogni altra tecnologia lato client. Uno dei principi di base dello sviluppo di giochi multiplayer è "non fidarsi mai del cliente". Progetta il tuo gioco in modo tale che tutto ciò di cui hai bisogno per proteggerti dall'hacking sia in esecuzione sul server, perché il client verrà violato. Ciò significa solo inviare comandi UI dal client (es. "Il giocatore ha fatto clic sul pulsante Bomba") e calcolare i risultati delle azioni del giocatore sul server. Quindi il server restituisce al client i risultati di tali azioni.

Dal momento che, indipendentemente dalla tecnologia su cui fai affidamento, dovresti progettare il tuo gioco partendo dal presupposto che il componente lato client verrà violato, la possibilità di hackerare JavaScript non viene presa in considerazione al momento di decidere se utilizzare o meno JavaScript.


Molte grazie. Modificherò il mio post e descriverò il gioco ora.
jcora,

3
mai e poi mai e poi mai e poi mai fidarsi del cliente, sia esso javascript o qualcos'altro!
the_e

1
Mentre tutti i client di gioco sono effettivamente hackerabili, alcuni sono più hackerabili di altri.
Jonathan Connell,

2
Questo è vero, ma la distinzione è irrilevante. Quando si progetta la sicurezza per il proprio gioco, che importanza ha se l'opzione A è più difficile da hackerare rispetto all'opzione B se saranno entrambi compromessi?
jhocking

2

Le persone possono cambiare il codice client per barare, questo è un problema per qualsiasi gioco multiplayer. Se la velocità di reazione o la rapida risoluzione di compiti matematici fanno parte del gioco, non puoi evitare completamente gli imbrogli.

Per qualsiasi altro elemento di gioco devi assicurarti che il cliente non ottenga e non possa ottenere informazioni che dovrebbero essere nascoste al giocatore. E ovviamente il server deve confermare che ogni azione intrapresa da un giocatore è legale.

Il problema più grande che vedo nei giochi JavaScript è che molti browser hanno la tendenza a balbettare, specialmente Firefox è stato piuttosto male l'ultima volta che ho controllato. Per questo motivo JavaScript non è una buona scelta per un gameplay sensibile ai tempi. Ma per i giochi a turni o almeno a ritmo lento JavaScript può funzionare abbastanza bene.


2

Cambiare le variabili Javascript è abbastanza facile da fare con strumenti come Firebug (per Firefox) o gli strumenti di sviluppo integrati di Safari / Chrome. Puoi semplicemente digitare javascript nella console e verrà eseguito. Come regola semplice, non fare affidamento sul lato client per motivi di sicurezza. A parte questo, con l'introduzione dell'elemento canvas HTML5, javascript ti offre alcune possibilità reali per giochi semplici (ad esempio, esiste una versione javascript / html5 completa di Angry Birds).

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.