Beh, è un browser game: o aggiorni lo stato ricaricando la pagina oppure usi ajax/ahah/json per interfacciarti con le pagine del gioco per effettuare le operazioni e nel contempo ricevere le informazioni aggiornate sulla paginaOriginariamente inviato da cigiri18
premetto che pure io non mi sono mai applicato seriamente all'argomento, però ci avevo ragionato di mio tempo fa, quindi bene o male mi ero capito(avevo provato a creare una versione tutta mia di ogame partendo da zero).
ogame è estremamente banale come gioco online: per sapere se un giocatore è online basta memorizzare l'ora dell'ultima azione eseguita, e infatti è quello che fa, inoltre interagisce col server solo quando l'utente apre una nuova finestra, per il resto è tutto gestito in javascript.
non si usa un database per come lo intendi tu, esploderebbe tutto: di solito uno dei componenti del server fa da storage, ovvero ricevere le informazioni da aggiornare e restituisce le informazioni, il tutto in memoria ... ovviamente ogni TOT di tempo (mezz'ora, un'ora, 2 volte al giorno e via dicendo) serializza tutti i dati presenti in memoria sul discoper giochi più complicati, che comunque non sono realizzati tramite browser, ma come normalissimi programmi, il problema di base è l'elevato numero di query: se per esempio il gioco si svolge su mappe(vedi i mmorpg), e su una mappa ci sono due tizi connessi, bisognerà aggiornare il database ad ogni mossa di questi tizi, e i programmi di questi due tizi dovranno leggere dal database ogni unità di tempo, per verificare eventuali cambiamenti del contesto.
quindi il problema è il numero di query inumano, ma li l'unica soluzione che mi viene in mente è avere un buon server e una buona connessione![]()
Inoltre, in quel tipo di gioco, è molto importante il discorso "visuale": non serve far sapere ad un giocatore che non può vederti che ti sei spostato!
non è conveniente nemmeno questo, o meglio, si, ma con le pinze! Un'aggiornamento con un timer è MOLTO più pesante del semplice caricamento di una pagina perché vuol dire che ogni n secondi ci sarà una richeista che comporterà delle operazioni.tornando ai browser game credo tu possa comunque sfruttare l'ajax: col javascript puoi creare un timer, quindi ad ogni aggiornamento di questo connetti al db e scarichi quel che ti serve.
La cosa va scomposta in due sotto problemi: tenere aggiornato il client sulle risorse e sulla loro produzione e tenere aggiornato il client sugli eventi (eventi come messaggi, attacchi, difese, costruzioni completate e via dicendo).
Visualizzare lo stato delle risorse non richiede, di per sé, fare continue richieste si può benissimo incrementare il totale delle risorse possedute tramite il client stesso sapendo quanto viene prodotto ogni ora: se produco 3600 all'ora, vuol dire che ogni secondo produco 1 e quindi ogni secondo incremento il contatore di quella data risorsa ... ovviamente è solo un fatto "visuale", il server comunque gestisce tutto per i fatti suoi. Il discorso cambia per gli eventi: questi devono essere comunicati dal server.
Usare un timer ogni minuto, ogni 5 minuti o simili può essere una buona idea: si richiede solo un'aggiornamento dello stato, nulla di nuovo. E' normale che non c'è motivo che il timer scatti se l'utente svolge qualche operazione perché in quel caso il server può mandare gli aggiornamenti che avrebbe richiesto con il timer
In realtà un browser game non è più semplice perché è un browser game, ma perché, in genere, non vi sono giochini online che ad esempio tengono conto al 100% dello stato di ogni singola unità (esperienza, energia e via dicendo) a cui associato un consumo di risorse per viaggiare o essere riparate, cosi come non vi sono giochini online che ad esempio nei paesaggi tengono in considerazione i dislivelli del terreno o che tengano conto dei fiumi e via dicendo ... cosi continuando tutti i giochi online di questo tipo non permettono di costruire il proprio villaggio sulla mappa, lo fanno costruire all'interno di una cella che "aperta" mostra il villaggio ... e cosi via ^^ tutte queste cose rendono un browser game moltooo più semplice di quello che sembra![]()

).
Rispondi quotando