Ostatni rok spędziłem na opracowywaniu komercyjnego silnika gry w Haskell, a dla nas doświadczenie było zdecydowanie pozytywne. Nasz świat gier jest złożony, a Haskell ułatwił modelowanie procesu konwersji z formatu edytora do formatu silnika gry. Nie chciałbym myśleć, jak wyglądałby ten kod w języku imperatywnym.
Czasami pojawiały się przecieki kosmiczne i chociaż spowodowały trochę problemów, w ogólnym schemacie było to niewielkie (na przykład w porównaniu ze znalezieniem impasu w projektach Java o podobnej wielkości), a po ich naprawieniu , pozostały nieruchome.
Używamy FRP podobnego do Yampy iz pewnością wiąże się z tym krzywa uczenia się, ale kiedy to się skończy, doświadczenie jest bardzo pozytywne. Biblioteki nie stanowiły dla nas problemu - wszystko, czego potrzebowaliśmy, było dostępne. Opóźnienia związane z odśmiecaniem pamięci były szczególnym problemem, ponieważ dotyczy to wbudowanej platformy. Użyliśmy trochę C ++ do zarządzania animacją. Problemem była także wydajność, ponieważ jest to platforma wbudowana (= wolny procesor). Zrobiliśmy trochę C i przyglądamy się również nowym technologiom Haskell, takim jak przyspieszenie. Animator C ++ był wczesną decyzją projektową, a miejsca, w których kod jest zbyt wolny, to tylko bardzo małe obszary. Na dłuższą metę chcemy przetłumaczyć całe nasze C na Haskell.
Haskell sprawił, że trudna praca stała się łatwa, a wszystkie trudności, o których właśnie wspomniałem, były niewielkie w porównaniu z dużą ilością złożonego kodu, który stworzyliśmy, który jest czysty, łatwy do utrzymania i prawie niezniszczalny. Równoległość będzie wkrótce problemem w rozwoju gier i jesteśmy wyjątkowo dobrze przygotowani, aby sobie z tym poradzić. Niektóre z tego, co powiedziałem, mogą nie mieć zastosowania do małych projektów, ponieważ jesteśmy w tym na dłuższą metę, więc koszty początkowe, takie jak krzywe uczenia się, wsparcie biblioteki itp., Są znacznie mniejszym problemem.