come verificare se un gameserver può gestire i client prima del rilascio del gioco?


13

stiamo sviluppando un gioco basato su iOS con supporto multiplayer. finora tutto sembra davvero buono, ma ora vogliamo assicurarci che il server sia in grado di gestire 10000 client o meno. qualche idea su come posso assicurarmi che il server sopravviva a tanto traffico?

Risposte:


15

Per il test del carico del traffico ci sono molti strumenti, ma dovrai testare anche altre cose che saranno specifiche per il tuo server di gioco perché il traffico di rete è solo una parte dell'equazione - l'utilizzo del processore e le query costanti del database sono altri due che vengono immediatamente in mente come fattori importanti che vorresti misurare (ci saranno sicuramente anche altri fattori, che dovrai determinare in base alla tua conoscenza di come funziona il tuo server di gioco).

Un ottimo modo per farlo potrebbe essere quello di scrivere un programma client di " simulazione del giocatore " ed eseguirne più istanze su più computer. Il rovescio della medaglia è che questo potrebbe richiedere l'uso di molti computer, ma alcune università locali potrebbero avere grandi laboratori informatici su cui è possibile eseguire questi (il professore potrebbe essere interessato ai risultati dei test poiché i professori universitari tendono ad essere sinceramente curiosi di buona ricerca).

Potrebbe non essere necessario che il tuo client sia sofisticato come un giocatore, ma potresti voler assicurarti che faccia le seguenti cose (non deve essere molto intelligente fintanto che può essere leggermente più funzionale di uno sviluppatore di software ubriaco che davvero non dovresti guidare se stessa a casa, quindi potresti anche voler contrassegnare i personaggi in un modo speciale in modo che possano fare cose stupide come camminare attraverso i muri, avere budget illimitati per acquistare beni selezionati casualmente dai commercianti in-game, avere infiniti forniture di munizioni e quant'altro):

  • Invia un testo di chat casuale su una base casuale
  • Naviga in direzioni casuali in tutto il mondo (ma tendi a stare più vicino alle principali città)
  • Scegli casualmente di sparare armi in direzioni casuali quando altri giocatori si trovano nelle vicinanze
  • Compra / vendi merci a caso dai commercianti e, occasionalmente, scarica oggetti in tutto il mondo
  • Accendi le cose a caso (o causa altre forme di distruzione localizzata)
  • Ottieni orde di animali selvatici sconvolti e corri in una città frenetica con loro a caccia di, quindi decidi a caso se disconnettersi (se scelto di disconnettersi, forse quegli animali selvatici inizieranno ad attaccare gli altri in città?)
  • Cura i giocatori feriti
  • Fai partire incantesimi magici scelti a caso in luoghi affollati
  • Cucinare cibi crudi, elaborare legname grezzo e altri materiali (come quelli provenienti dalle miniere), ecc.
  • ... altre semplici attività che i tuoi giocatori possono svolgere regolarmente

Se si stima che avrai 9000 giocatori contemporaneamente, prova a provarlo con almeno 3 volte quel numero in modo da sapere come i tuoi server possono gestire un carico di 27.000 giocatori impegnati simulati (molti giocatori tendono al minimo, specialmente i tipi sociali).

Inoltre ( e questo è molto importante ), se lo fai, per favore, per favore, PER FAVORE, accedi con un personaggio normale e registra un video di tutti questi giocatori computerizzati che fanno cose stupide e condividi quel video con noi qui in modo da poter avere un buon ride (sto pensando che " ubriaco ballare il fienile " potrebbe essere un buon titolo per questo film se riesci a trovare lo scenario di gioco giusto)! ;-D


2
Grazie mille per la tua risposta, immagino che dovremo testare usando questi giocatori simulati, e penso che alla fine utilizzeremo uno dei servizi cloud per eseguire i client. proprio come un sidenote, è un gioco multiplayer ma i giocatori possono solo navigare nel mondo e cacciarsi a vicenda, quindi quasi nessuno di quei compiti che hai citato sarà implementato in clienti campione! Spero che la prossima persona con la stessa domanda stia per rilasciare un gioco di simulazione di vita per testare tutte queste cose!
Ali1S232,

Bene, prova ciò che si applica al tuo gioco (prego!). Non sapevo nulla delle caratteristiche del tuo gioco, quindi ho cercato di includere molte possibilità nella speranza che fosse coperto.
Randolf Richardson,

Alcuni giochi iniziano anche con una pre-release beta anticipata, ma questa può essere una decisione difficile perché c'è il brutto fattore in cui un giocatore può scoprire che non gli piace il gioco durante la sua fase beta, e quindi non tornare mai a provarlo di nuovo (anche se i problemi riscontrati sono stati risolti).
Randolf Richardson,

2
-1, risposta non realistica. Gli sviluppatori di giochi femminili non esistono. (Jks, +1, ha concordato di condividere visivamente i risultati del test).
deceleratedcaviar

3
Aggiungerò che ho fatto esattamente questo, per un MMO su una console portatile; i giocatori simulati sono stati la cosa migliore di sempre, per testare come i server potrebbero far fronte allo stress. Abbiamo anche tenuto una beta chiusa (limitata a circa 500 persone) e ho usato le statistiche generate sul comportamento dei beta tester per mettere a punto i giocatori simulati affinché si comportassero tanto quanto i giocatori reali quanto potevo. Dopo che la beta era finita, ho lasciato perdere 40.000 giocatori simulati per rovinare i server. Molto caos!
Trevor Powell,

0

Questa è una risposta per una vecchia domanda, spero che possa essere utile per coloro che arrivano qui dai motori di ricerca. Netgend ha una piattaforma di test delle prestazioni in grado di emulare 50.000 VUser e può eseguire tutte le emulazioni client flessibili.

Vedi i blog , in particolare

  • Networking reso facile
  • estrae i campi dalle risposte del server
  • Test delle prestazioni con dati binari

Si noti che l'elaborazione dei messaggi non è limitata ai messaggi http, si applica a tutti i messaggi.

Spero sia utile.

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.