2009-07-30 5 views
44

私はその機能プログラミングのパラダイムにはかなり新しいですが、これまでのところ私はそれが好きです。私はゲーム開発に入っているので、純粋に機能的なプログラミングスタイルでいくつかのゲームを書くことでそれを試してみたいと思います。 Erlang、Haskell、Lisp、さらにはRuby(関数型プログラミングの特性をサポートしていることが判明しました)でも言語を気にしません。ゲーム開発で関数型プログラミングを使用するには良いリソースがありますか?

まあ、最高のアドバイスはそれで関数型言語とプログラム多くのことを学ぶことであろう(実際には、何でも)関数型プログラミングを学習することは明らかです。しかし、私が探しているのは、ゲームやゲームエンジン(2Dまたは3D)での関数型プログラミングの使用に関するいくつかのリソースです。

実際のゲームでこれを使用したり、関数型プログラミング言語を使用して簡単なゲームエンジンを設計したり、ゲームとゲームエンジンの間のすべてのやりとりを機能的に使用することについては、関数型プログラミング記事/書籍/ブログ/環境?

「機能的には簡単なプログラミングを始めて、徐々にそれがあなたに届きます」というようなことを示唆しないでください。私が前に言ったように、それは明らかですが、私がここで尋ねるのは、もしあれば、トピックに関するいくつかのリソースです。ありがとう!

+1

Ocamlは興味深い機能的な言語の代替手段になる可能性があります。 – Christian

答えて

23

さて、あなたはこれらのhaskell gamesのいくつかのコードを勉強よりも悪い行うことができます。

これらのいくつか

は、一部の人々はゲームや他のもののための純粋な、高レベルの技術として取り組んでいるFRP(官能性反応プログラミング)を使用します。しかし、ほとんどのものは効果的で純粋な機能コードの典型的な有害な混合物です。

関連コンテンツのあるブロガーにはJames Hagueが含まれています。

注最初のリンクでFunGEn - 実際には維持されていませんが、実際の例を持つ2Dゲームエンジンです。

クリーンな言語もあります。game library and nice screenshotsです。

+0

ありがとう、これは私が探していたものです。 – Mikka

+1

[Funage on hackage](http://hackage.haskell.org/package/FunGEn)も更新が必要です。 –

2

Wings3Dは、ワイヤーフレーム図形を描画するために使用されるErlangのパッケージです。私は、それがゲームで使用されていると思いますが、それは私のバッグではありません...

+1

github.com/dgud/esdl/tree/masterライブラリはwings3dで使用されていますが、wxerlangを使用してOpenGLにアクセスすることをおすすめします。 – Christian

1

まあ、私はこのことができますどのくらいか分からない、とあなたはおそらく既にそれを聞いたが、明らかなスタートのように思える:ここですJakおよびDaxterのarticle

+1

ゴールはLispでしたが、私はそれが非常に機能的ではなかったと思います。すべてのコードサンプルは必然的に見えますが、ゴールガベージコレクタが遅すぎるため、メモリを手動で管理する方法についての読書を覚えています。 (しかし、記事はLispの他の多くの利点 - マクロ、ランタイム評価などを要約しています) –

+0

Lispを使ったもう一つのゲームは "Abuse"でした。これは現在パブリックドメインです。しかし、おそらく、おそらくLispの最も機能的な使用ではありません。 – Ken

+1

Lispはあまりにも純粋な「関数型プログラミング言語」ではありません。通常、それはマルチパラダイムであり、他の多くのパラダイム(論理、規則、関係、制約、エージェントなど)の包含をサポートします。したがって、実際のLispプログラムは、命令的、機能的、オブジェクト指向および他のプログラミングスタイルをうまく組み合わせるでしょう。 –

4

少し日付が、thisは、XNAゲーム開発フレームワークでのF#を使用する方法についての記事のシリーズの最初です。あなたはまた、ブログF# for Game Developmentにいくつかの有用な資料があるかもしれません。

2

は私だけなGtk2hsなどHaskellライブラリを試してみることをお勧めすることができますので、まあ、私はほとんどのHaskellプログラマだこの Casting SPELs

7

を試してみてください。そのほとんどは2Dアプリケーションとユーザインタフェース用ですが、それを始めるには良いことです:)さらに簡単なライブラリはHGLですが、やや古いものです。あなたがもっと厄介な(しかしクーラー!)ものを試してみたい場合は、hereというHaskellのOpenGLライブラリに行ってください。私はHaskellとOpenGLを使って作業を試みたことはありませんでしたが、Simon Michaelが提出した答えをチェックすると、OpenGLを使用するHackage's Game Sectionのサンプルゲームがあります。

申し訳ありませんすべてのライブラリをリンクしていませんが、私は新しいユーザーです。複数のハイパーリンクは許可されていません。あなたはそれらをgoogleすれば、彼らは簡単に起きるはずです。

7

ゲームのネットワーク側に興味があれば、Joel ReymontはオンラインでPoker serverをコーディングした経験について書いています。私は彼が少なくとも3つの異なる実装を行ったと思う(Lisp、Erlang、Haskell)。残念ながら、彼のマテリアルはインターネット上に散らばっています。ここでは便利かもしれない二つのポインタされています

EDIT:

ここでは変更されている上記の文献からいくつかのフォローアップのポインタとリンクされています。

  • Haskell Project Postmortem (mailing list thread)
  • EDIT II:

    ジョエルは明らかにので、それはもはやopen sourceとして利用可能である、以来、彼のポーカーコードを販売していません。

    +0

    最後のリンクがパーサから地獄を混乱させたようです。うまくいけば、私はそれをウェブアーカイブを参照しないことによって悪くしなかった。 – nlucaroni

    +1

    たぶんあなたはtinyurlやそのようなものを使ったことがあります:) – Mikka

    3

    Fragは、Mun Hon CheungによってHaskellで書かれた3人目の一人称シューティングゲームです。これはGPLの下でライセンスされています。 Fragの設計と実装は、Munの卒業論文であるFunctional Programmingと3D Gamesに記述されています。

    1

    ハスケルがGCでかなり深刻な問題を抱えていた時があったのですが、Nathan Sandersは上記のように述べています... this old article(6歳、私は知っています)、またthis questionを参照してください。 Fragがありますので、GHCのそれ以降のバージョンでは少なくともいくつかのことを修正したに違いないと思います。

    関連する問題