Sto sviluppando un semplice gioco di carte, dove ci sarà un sistema di matchmaking che ti metterà contro un altro giocatore umano. Questa sarà l'unica modalità di gioco disponibile, un 1vs1 contro un altro essere umano, senza AI.
Voglio evitare di barare il più possibile. Ho già letto molte domande simili qui e so già che non posso fidarmi del cliente e devo effettuare tutte le verifiche sul lato server. Ho intenzione di avere un server (ne ho bisogno uno per il matchmaking) e intendo effettuare alcune verifiche sul lato server, ma se voglio controllare tutto sul lato server questo rende il mio server in grado di tenere traccia dello stato di tutti i giochi attuali e controlla ogni azione e non ho i soldi / l'infrastruttura per supportare quel server.
La mia idea è di fare in modo che i clienti controllino e verifichino alcune delle azioni compiute dal loro avversario * e se trovano qualche azione illegale avvisare il possibile imbroglio al server e farlo verificare dal server. Ciò richiederà comunque che il mio server tenga traccia di tutti i giochi attuali, ma risparmierà risorse controllando solo alcune cose che non possono essere verificate sul lato client (come l'ordine delle carte nel mazzo) e controllando altre cose solo quando sono effettivamente sbagliate.
* (solo quelli che possono controllare senza permettersi di imbrogliare! per esempio: non possono controllare se la carta giocata era in mano perché ne avrebbero bisogno per conoscere tutte le carte in mano)
Riassumendo, le mie domande sono : è un approccio praticabile? risparmierò effettivamente risorse facendo questo o la complessità aggiuntiva nel server e nel client per lo scambio di questi messaggi non ne vale la pena? conosci qualche gioco che ha tentato con successo o senza successo un approccio simile?
Grazie a tutti per aver letto e risposto