我对那个函数式编程范例很陌生,但到目前为止我喜欢它。自从我进入游戏开发以来,我想尝试用纯函数编程风格编写一些游戏。我不介意这种语言 - 无论是Erlang,Haskell,Lisp,还是Ruby(我发现它支持函数式编程特性)。
嗯,很明显,要学习函数式编程(事实上,任何事情),最好的建议只是学习函数式语言并编写很多程序。但我正在寻找的是在游戏和游戏引擎(2D或3D)中使用函数式编程的一些资源。
那么,你知道任何函数式编程文章/书籍/博客/在实际游戏中使用它,或者用函数式编程语言设计简单的游戏引擎,以及在这个功能环境中游戏和游戏引擎之间的所有交互吗? ?
请不要提出类似“只是开始编写功能简单的东西,然后它会逐渐出现”的内容。正如我之前所说,很明显,但我在这里要求的是关于这个主题的一些资源,如果有的话。谢谢!
答案 0 :(得分:23)
嗯,你可能比研究其中一些haskell games的代码更糟糕。
其中一些使用FRP(功能反应式编程),有些人正在将其作为游戏和其他东西的纯粹高级技术。但大多数都是有效且纯粹的功能代码的典型混合物。
相关内容的博主包括James Hague。
注意FunGEn在第一个链接 - 尽管没有主动维护它是一个带有工作示例的2D游戏引擎。
还有Clean语言game library and nice screenshots。
答案 1 :(得分:7)
好吧,我主要是一个Haskell程序员,所以我只能建议尝试Haskell库,如Gtk2hs。它主要用于2D应用程序和用户界面,但它很适合你入门:)一个更简单的库是HGL,但它略有漏洞和过时。如果你想尝试更混乱(但更酷!)的东西,那么去Haskell的OpenGL库,可以找到here。我从未尝试过使用Haskell和OpenGL,但是如果你看看Simon Michael提交的答案,那么在Hackage游戏部分中有使用OpenGL的示例游戏。
很抱歉没有链接所有库,但我是新用户,我不允许多个超链接。如果你谷歌他们,他们应该很容易出现。
答案 2 :(得分:7)
如果您对游戏的联网方面感兴趣,Joel Reymont已经写过关于他编写在线Poker server的经历。我认为他至少做了三种不同的实现(Lisp,Erlang,Haskell)。不幸的是,他的材料分散在互联网上。以下是您可能会发现有用的两个指针:
编辑:
以下是上述文档中的一些后续指针和链接。
编辑II:
Joel显然已经卖掉了他的扑克代码,因此它不再以open source的形式出售。
答案 3 :(得分:4)
有点过时,但this是关于如何在XNA游戏开发框架中使用F#的系列文章中的第一篇。您可能还会发现博客F# for Game Development包含一些有用的资料。
答案 4 :(得分:3)
Frag是由Mun Hon Cheong在Haskell编写的3D第一人称射击游戏。它是根据GPL许可的。 Frag的设计和实现在Mun的本科毕业论文,功能编程和3D游戏中有所描述。
答案 5 :(得分:2)
试试这个 Casting SPELs
答案 6 :(得分:1)
Wings3D是用于绘制线框形状的Erlang包。我认为它用于游戏,但那不是我的包......
答案 7 :(得分:1)
好吧,我不确定这有多大帮助,你可能已经听说过了,但似乎是一个明显的开始:这是Jak和Daxter的article。
答案 8 :(得分:1)
正如Nathan Sanders所述(来自我自己的Google搜索“haskell games gc”)有一段时间Haskell对GC有一些非常严重的问题... this old article(6岁,我知道),也见this question。由于Frag即将出现,我猜他们必须在GHC的后续版本中修复至少一些内容。