Sto cercando progetti di rete e trucchi specifici per i giochi. Conosco alcuni problemi e ho alcune soluzioni parziali ad alcuni di essi, ma ci possono essere problemi che non riesco ancora a vedere. Penso che non ci sia una risposta definitiva a questo, ma accetterò una risposta che mi piace davvero. Posso pensare a 4 categorie di problemi.Problemi di rete nei giochi
Bad rete
I messaggi inviati dai clienti richiedere un certo tempo per raggiungere il server. Il server non può solo elaborarli FCFS perché non è giusto contro i giocatori con latenza più elevata. Una soluzione parziale per questo sarebbe data/ora sui messaggi ma hai bisogno di 2 cose:
- Essere in grado di fidarsi dell'orologio dei clienti. (Penso che sia impossibile.)
- Latenze costanti che puoi misurare. Cosa puoi fare in merito alla latenza variabile?
Un sacco di giochi utilizzano UDP che significa che i messaggi possono essere persi. In tal caso cercano di stimare lo stato del gioco in base alle informazioni che già possiedono. Come fai a sapere se lo stato stimato è corretto o meno dopo che la connessione sta funzionando di nuovo?
Nei giochi MMO il server gestisce una grande quantità di client. Qual è il modo migliore per distribuire il carico? In base alla posizione nel gioco? Associare gruppi di client a server? Puoi evitare di inviare tutto tramite il server?
giocatori lasciando
ho visto 2 comportamenti diversi quando questo accade. Nella maggior parte dei giochi FPS, se il giocatore che ha ospitato il gioco (suppongo che sia il server) lascia che gli altri non possano giocare. Nella maggior parte dei giochi RTS, se un giocatore lascia gli altri, può continuare a giocare senza di lui. Com'è possibile senza un server dedicato? Tutti conoscono lo stato completo? Stanno trasferendo in qualche modo il ruolo del server?
L'accesso alle informazioni
Il prossimo problema può essere risolto da un server dedicato, ma io sono curioso di sapere se si può fare senza. In molti giochi i giocatori non dovrebbero conoscere lo stato completo del gioco. Nebbia della guerra in RTS e muri in FPS sono buoni esempi. Tuttavia, devono sapere se un'azione è valida o meno. Ad esempio, puoi spararmi da lì o sei dall'altra parte della mappa. In questo caso i client devono convalidare le modifiche a uno stato sconosciuto. Questo suona come qualcosa che può essere risolto con un uso intelligente di primitive crittografiche. Qualche idea?
Cheating
Alcuni dei problemi di cui sopra sono facile in un ambiente client di fiducia, ma che non può essere assunto. Ci sono soluzioni che funzionano ad esempio in un 80% di utenti normali - 20% di cheater environment? Puoi davvero creare un software anti-cheat che funzioni (e non richiede cose ridicole come i moduli del kernel)?
Ho letto queste domande e alcune delle risposte https://stackoverflow.com/questions/901592/best-game-network-programming-articles-and-books ma altre risposte collegano a contenuti non disponibili/limitati. Questa è una domanda indipendente dalla piattaforma/sistema operativo, ma sono benvenute anche soluzioni per piattaforme/SO specifici.
Ottima domanda. –
Forse questo sito è più adatto a questa domanda? http://gamedev.stackexchange.com/ – Nakilon
Non mi ero reso conto che esistesse una versione specifica del sito. Grazie, sicuramente lo controllerò. – stribika