Od jakiegoś czasu mam oko na funkcjonalne języki programowania, ale waham się, czy naprawdę się w nie wpakować. Ale myślę, że już najwyższy czas, żeby przynajmniej spojrzeć w tamtą stronę, aby upewnić się, że jestem gotowy na wszystko.
Widziałem rozmowy o Haskell, F #, Scali i tak dalej. Ale nie mam pojęcia, jakie są różnice między językami i ich społecznościami, i nie obchodzi mnie to szczególnie; z wyjątkiem kontekstu tworzenia gier.
Więc z punktu widzenia rozwoju gry, który funkcjonalny język programowania ma najwięcej funkcji odpowiednich do programowania gier? Na przykład, czy są jakieś funkcjonalne biblioteki do tworzenia gier / silniki / frameworki lub silniki graficzne dla języków funkcjonalnych? Czy istnieje język, który lepiej obsługuje niektóre struktury danych, które są powszechnie używane w tworzeniu gier?
Konkluzja: jaki funkcjonalny język programowania jest najlepszy do funkcjonalnego programowania gier i dlaczego?
Wierzę / mam nadzieję, że to pytanie zadeklaruje najlepszy najlepszy język, dlatego nie zaznaczyłem go jako CW pomimo jego subiektywnej tendencji.
źródło
Odpowiedzi:
F # będący częścią rodziny Microsofts .net ma dostęp do XNA, który jest fantastyczną bazą do budowania gier. Trochę googlingu pokazuje kilka samouczków, filmów i artykułów. Świetne dokumenty XNA również powinny pomóc.
W przypadku gier Haskell nastąpił także pewien ruch, patrz tutaj . Prawdopodobnie będziesz używać powiązań openGL.
Ponieważ Scala gra w środowisku Java, integruje się ze wszystkimi dostępnymi silnikami / powiązaniami Java, zobacz ten post SO .
Myślę, że sprowadza się to do preferencji, podczas gdy grałem tylko z Haskellem, wyobrażam sobie, że każdy funkcjonalny język ma swoje osobliwości. Warto w każdej z nich wypróbować małą grę testową i przekonać się, która z nich jest dla Ciebie lepsza.
Tak jak powiedziałem, mam tylko minimalne doświadczenie z Haskellem, więc nie mogę komentować najlepszych, ale te zasoby powinny pomóc ci zacząć.
źródło
Powiedziałbym Lisp.
Był używany w grach jako język skryptowy, przynajmniej w Naughty Dog (lub tak mi się zdawało) i jest językiem bardzo dojrzałym.
Zaletą Lisp jest deserializacja, która jest główną częścią tego, co nazywamy zarządzaniem aktywami. Deserializacja lisp jest banalna, kod i dane są jednym. Ułatwia to format plików dla zasobów i zachowań. To nie tak jak ty w json / xml / yaml / bin i jeden plik F # dla AI. Możesz zapisać wszystko jako wyrażenia s, co znacznie uprości potok zasobów.
źródło
Po zdobyciu praktycznego doświadczenia, zagłosowałbym na Clojure - napisałem już w niej małą grę i planuję zrobić więcej.
Powody:
Jedynym momentem, w którym nie zastanawiałbym się nad Clojure, byłbym, gdybym pisał najnowocześniejszą graficznie grę, w której potrzebujesz najnowocześniejszej wydajności (gdzie nadal uważam, że potrzebujesz C / C ++).
źródło