В прошлом году я потратил на разработку коммерческого игрового движка в Haskell, и для нас этот опыт был чрезвычайно положительным. Наш игровой мир сложен, и Haskell упростил моделирование процесса преобразования из формата редактора в формат игрового движка. Я бы не хотел думать, как будет выглядеть этот код на императивном языке.
В некоторых случаях возникали космические утечки, и хотя они вызывали небольшие проблемы, в общей схеме они были незначительными (например, по сравнению с обнаружением взаимоблокировок в Java-проектах аналогичного размера), и после их устранения они остались на месте.
Мы используем FRP, похожий на Yampa, и с ним, безусловно, связана кривая обучения, но как только это закончится, опыт очень положительный. Библиотеки не были для нас проблемой - все, что нам было нужно, было доступно. Задержки сбора мусора были особой проблемой, так как это для встроенной платформы. Мы использовали немного C ++ для управления анимацией. Производительность также была проблемой при использовании встроенной платформы (= медленный процессор). Мы сделали немного C, и мы также смотрим на новые технологии Haskell, такие как ускорение. Аниматор C ++ был на раннем этапе дизайнерским решением, и места, где код слишком медленный, - это очень маленькие области. В конце концов, мы хотим перевести все наши C на Haskell.
Haskell сделал сложную работу легкой, и все трудности, которые я только что упомянул, были крошечными по сравнению с большим количеством сложного кода, который мы создали, который является чистым, обслуживаемым и в значительной степени неразрушимым. Параллелизм станет проблемой в разработке игр очень скоро, и мы очень хорошо справимся с этим. Часть из того, что я сказал, может не относиться к небольшим проектам, потому что мы находимся в этом надолго, поэтому затраты на запуск, такие как обучение, поддержка библиотек и т. Д., Являются гораздо меньшей проблемой.