Manutenzione del server senza buttare fuori i giocatori
Che cosa succede davvero ai giocatori quando dobbiamo aggiornare il server? La risposta semplice sarebbe: staccare la spina. Noi abbiamo costruito una risposta migliore, ed è una delle mie funzioni preferite, anche se l'ideale è che quasi non te ne accorga.
L'annuncio. Il server può inviare un messaggio di manutenzione a ogni mondo in esecuzione. Nel gioco compare allora un banner con un conto alla rovescia: «Riavvio del server tra 10 minuti.» Il messaggio va chiuso attivamente, ma solo dopo qualche secondo, così nessuno lo chiude per sbaglio nel fuoco della battaglia.
Il riavvio ordinato. Quando il conto alla rovescia scade, il mondo si spegne in modo ordinato: salva lo stato di gioco, congeda i giocatori con una schermata d'addio esplicativa (invece di un enigmatico «connessione persa») e ferma il container. Al prossimo ingresso il mondo si risveglia con la nuova versione, e il salvataggio, naturalmente, c'è ancora.
La tecnica dietro: un endpoint admin protetto accetta gli annunci, ed è protetto da un token che solo il server conosce. Se non è configurato nessun token, la funzione è completamente spenta; un endpoint di annunci aperto sarebbe un invito a combinare guai. Per gli admin ci sono inoltre comandi di chat direttamente nel gioco e un pulsante per ogni mondo nel pannello di amministrazione.
Un effetto collaterale inatteso: da quando il sistema esiste, facciamo gli aggiornamenti con più calma, e quindi più spesso. Dei buoni strumenti di manutenzione non migliorano solo la manutenzione, migliorano l'intero progetto.
Commenti