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