Dipende dalla piattaforma che usi lato server. Non ho ben capito che ruolo ha MyBB, stai sviluppando il gioco basandoti su quell'engine per forum? In tal caso immagino tu stia usando PHP. Inoltre dipende da come vuoi notificare l'utente del completamento della procedura. Se ho capito bene cosa intendi, comunque, a grandi linee io farei così:
Quando l'utente lancia il crafting parte una richiesta ajax dalla pagina client ad una sorta di API che implementi sul server, ad es /craft.php?obj=cappuccino; questa deve leggere dal database l'inventario dell'utente, e prendere "caffè" e "latte" decrementandoli della quantità necessaria (e restituendo errore se non ce ne sono a sufficienza); fatto questo aggiunge un record ad una tabella, ad es. operazioniCrafting, che tiene traccia dell'utente che ha avviato l'operazione, l'oggetto richiesto, e soprattutto l'orario/timestamp di inizio dell'operazione. Il client, poi, manda man mano richieste ajax ad una pagina del tipo /craftingStatus.php che deve elencare ogni crafting dell'utente e calcolarne il tempo rimanente (basandosi sul timestamp attuale, quello salvato nel DB e la durata dell'operazione); in questo modo sul client l'utente può vedere quanto manca per ogni operazione in sospeso. Questa pagina, inoltre, quando il tempo restante per un crafting diventa 0, inserisce l'oggetto nell'inventario del giocatore nel DB.
In questo modo se l'utente chiude il browser e poi lo riapre, vedrà comunque quanto tempo manca, e se il tempo è finito vedrà l'oggetto nell'inventario. Se l'oggetto deve finire nell'inventario anche se l'utente non è connesso, questa parte si potrebbe spostare in un cron job che ogni tot secondi (pochi) controlla se è passato più del tempo necessario per ogni operazione e in caso affermativo rimuove il record dalla tabella del crafting e aggiorna l'inventario del giocatore.
P.S. all'inizio ho detto "dipende dalla piattaforma" perchè per qualche motivo avevo in mente nodejs. Con un sistema simile, si potrebbe risparmiare l'uso dei cron perchè invece che scrivere "pagine" si scrive una sorta di daemon che funge da server, quindi può effettuare operazioni in continuazione anche se non ci sono richieste.
Ultima modifica effettuata da GN il 20/10/2015 alle 16:46 |