Passei o último ano desenvolvendo um mecanismo de jogo comercial em Haskell e, para nós, a experiência foi extremamente positiva. Nosso mundo dos jogos é complexo, e Haskell facilitou a modelagem do processo de conversão de um formato de editor para um formato de mecanismo de jogo. Eu odiaria pensar como seria esse código em uma linguagem imperativa.
Ocasionalmente, vazamentos de espaço surgem e, embora tenham causado alguns problemas, no esquema geral, tem sido uma quantidade pequena (por exemplo, em comparação com a localização de impasses em projetos Java de tamanho semelhante) e, uma vez corrigidos , eles ficaram fixos.
Estamos usando o FRP semelhante ao Yampa, e certamente há uma curva de aprendizado associada a ele, mas, uma vez terminada, a experiência é muito positiva. As bibliotecas não foram um problema para nós - tudo o que precisávamos estava disponível. Atrasos na coleta de lixo foram um problema específico, pois se trata de uma plataforma incorporada. Usamos C ++ para gerenciar a animação. O desempenho também foi um problema, por ser uma plataforma incorporada (= processador lento). Fizemos C e também estamos olhando para as tecnologias Haskell emergentes como acelerar. O animador C ++ foi uma decisão de design desde o início e os locais onde o código é muito lento são apenas áreas muito pequenas. A longo prazo, queremos traduzir todo o nosso C para Haskell.
Haskell facilitou um trabalho difícil, e todas as dificuldades que acabei de mencionar foram pequenas em comparação com a grande quantidade de código complexo que produzimos que é limpo, sustentável e praticamente inquebrável. O paralelismo será um problema no desenvolvimento de jogos muito em breve, e estamos extremamente bem posicionados para lidar com isso. Parte do que eu disse pode não se aplicar a pequenos projetos, porque estamos nisso a longo prazo; portanto, os custos de inicialização, como curvas de aprendizado, suporte à biblioteca etc., são muito menos problemáticos.