Come avrete già capito, il componente principale di questi giochi è il motore di simulazione partita. Come Spence said so, vuoi che la simulazione "guardi bene" piuttosto che "abbia ragione".
Ho lavorato a una simulazione di gioco di rugby qualche tempo fa e c'è un approccio che funziona abbastanza bene. La tua partita è una macchina a stati finiti. Ogni fase di gioco è uno stato, ha un risultato che si traduce in una transizione di fase o cambiamenti nello stato di gioco (punteggio, sostituzioni, ...). Aggiungi un sistema di eventi/ascoltatori per gestire cose che non sono strettamente correlate alla struttura del gioco che stai simulando e hai una buona struttura (ogni volta che succede qualcosa nella tua simulazione, un fallo per esempio, lancia un evento, il gli ascoltatori possono essere un sistema di generazione di commenti o un AI responsabile delle strategie dei team).
Puoi iniziare con un motore di simulazione approssimativo che gestisce le cose a livello di squadra utilizzando una media delle statistiche dei tuoi giocatori e poi passa a qualcosa di più dettagliato che simula le cose a livello di giocatore. Penso che quel tipo di approccio iterativo si adatta molto bene a una simulazione di gioco, perché vuoi che abbia un aspetto corretto, e non appena un elemento sembra giusto puoi smettere di iterarlo su di esso e lavorare su un'altra parte del tuo sistema.
Il random è ovviamente parte del gioco perché, come hai detto tu, non vuoi che i giochi siano troppo prevedibili. Una cosa molto semplice da fare è avere tiri di dadi virtuali contro le statistiche di un giocatore e di una squadra quando eseguono una determinata azione (lanciare la palla per esempio).
Modifica: presumo che stiamo parlando di giochi di gestione come Hattrick, in cui gestisci un roster e simulando risultati di gioco piuttosto che simulazioni grafiche 2D/3D.
Sì, dovrebbe essere un gioco di gestione. – Victor