Non ho una risposta alla domanda scritta, ma credo che tu stia probabilmente cercando di chiedere "perché non ci sono motori di gioco più funzionali" piuttosto che cercarne uno specifico da usare. Se è corretto, dovresti riformulare la domanda. Altrimenti ... ignorami. :)
Un approccio funzionale puro non è adatto ai giochi. Giochi (e grafica, fisica e intelligenza artificiale) e fondamentalmente tutto sui cambiamenti di stato. L'approccio funzionale corretto a questi problemi sarebbe quello di calcolare un intero nuovo stato una volta per ciclo, il che avrà una severa penalità prestazionale rispetto alla codifica più diretta su come funziona l'hardware reale.
È per questo motivo che non si vedono motori di gioco in stile funzionale in produzione. È semplicemente il paradigma di programmazione sbagliato per la maggior parte dei problemi che un motore di gioco deve risolvere. È il paradigma di programmazione sbagliato per la maggior parte dei problemi che deve essere risolto anche negli script di livello superiore e nel codice della logica di gioco. Mentre è quasi certamente possibile realizzare un motore di gioco funzionale, sarebbe lento, difficile e ingombrante da usare e non servirebbe a nessun altro scopo se non quello di essere una demo / un giocattolo da mostrare.
Questo non vuol dire che la programmazione funzionale non abbia un posto nei giochi. Uso uno stile di codifica molto funzionale (se del caso) in C #, Unity JavaScript e persino C ++ 11. Alcuni problemi molto specifici sono meglio o almeno più facilmente risolti con uno stile funzionale e la maggior parte dei linguaggi popolari oggi supporta tale forma di programmazione, sebbene in modo più ingombrante rispetto ai linguaggi funzionali "reali". Di solito questi problemi risolti con approcci funzionali non sono nel codice del motore principale, né nel codice che gira nel gioco stesso. La codifica funzionale può essere molto utile per gli strumenti e l'elaborazione dei dati offline (modelli di cottura e altre risorse, ad esempio). È anche discutibile che la programmazione GPU sia vagamente funzionale nel modo in cui gli algoritmi sono scritti,
Ovviamente può essere comunque meglio evitare approcci funzionali al di fuori di circostanze molto specifiche poiché si desidera che questi strumenti offline siano il più veloci possibile. I linguaggi funzionali eccellono nel parallelismo, il che è positivo per alcuni problemi, ma le astrazioni dall'hardware tendono a portare a prestazioni single-thread molto inefficienti. (Lingue come LISP funzionano bene qui perché non sono puramente funzionali, e in effetti LISP comune è multi-paradigma.) La cosa peggiore in assoluto per un motore di gioco o un toolkit correlato è quella di essere un collo di bottiglia per l'iterazione dei contenuti. Un motore fantasioso con molte funzionalità che impiega ore ad artisti o designer di livello per fare ciò che si potrebbe fare in 5 minuti (o idealmente, quasi istantaneamente) porterà solo a giochi di bassa qualità o cancellazione a causa dell'escalation del budget.