Sono interessato a produrre una specie di gioco di ruolo multiplayer come un gioco basato esclusivamente su browser, con requisiti di plugin minimi o nulli. Avendo fatto un bel po 'di ricerche, sono arrivato al seguente piano. Sono consapevole del fatto che parte della tecnologia a cui faccio riferimento non è adottata su tutti i browser (in particolare IE), ma per il momento sono disposto ad accettarlo.Strategia di rete multiplayer del browser: sembra una soluzione valida?
Inoltre, sono consapevole che un MMO è un obiettivo ambizioso, ma in passato ho realizzato molti progetti più piccoli in una direzione simile, mi sento di voler dare un risultato davvero buono andare finalmente.
Così heres un abbozzo, mi piacerebbe sentire di problemi evidenti chiunque può vedere in questa disposizione:
CLIENTE: WebGL/Javascript (probabilmente three.js). Utilizza la memoria locale del browser per conservare le risorse di gioco, accettando che l'eliminazione della cache del browser le rimuoverà.
MESSAGGISTICA: messaggi codificare tra client/server utilizzando google protocol buffers, per comodità e riduzione delle dimensioni. La consegna dei messaggi avverrà tramite WebSocket.
server di gioco: gira sopra gevent in python (sembra essere una buona soluzione per affrontare i molti concurrents). Sarebbe stato costruito utilizzando il modello sharded, basato sul design here:
DB SERVER: MySQL per il database, PHP agendo inbetween il server di gioco e DB.
DETTAGLI: ho intenzione di avere l'aggiornamento di server di gioco un singolo cliente circa 15-20 volte al secondo, e utilizzare la previsione sul lato client per colmare le lacune. I client possono inviare input/messaggi chiave al server nella regione di 30 fps. Preferirei fare un'esperienza che sia il più vicino possibile al realtime, piuttosto che a turni. La mia preoccupazione principale è il protocollo basato su TCP di WebSocket, questo renderà il tutto impossibile?
Questa soluzione sembra realistica a SO?
molte grazie,
Ah! Beh questa è una cosa che non sapevo subito, 5mb è un fattore piuttosto limitante, quindi sì, una sorta di streaming sarebbe in ordine allora.Per quanto riguarda la cosa di PHP, ho pensato che avrebbe senso togliere parte del carico della transazione DB dal server di gioco, in modo che potesse concentrarsi sul servire il client il più velocemente possibile, e solo periodicamente sparare blocchi di dati per essere scritto in DB, senza impegnarsi a formattare e scrivere i dati stessi – bharling
Sì, prova a guardare il CouchDB, supporta le chiamate REST subito. – Anders