1.Yampaの生い立ち
Yampaは前にも説明した通り、関数型リアクティブ・プログラミング(Functional Reactive Programming)の概念に基づいて離散的なシステムと連続的なシステムの両方を扱えるハイブリッドなプログラミングで、ドメイン特化言語である。Yampaは、Conal Elliot が開発したFran (Functional Reactive Animation)をベースに、エール大学のHaskellグループによって開発された。
英国のケント大学に移籍したNilsson講師のもとでYampaの研究は精力的に行われている。但し、Yampaについては資料が十分とは言えないので、あちらこちらにある資料を集めて、理解しなければならないのが難点である。このブログにおいても、あちらこちらにある資料を集めながら体系化してきたが、今回は、今年2014年の9月にNilssonが、英国のカンタベリーで開催された国際会議PPDP2014 (16th International Symposium on Principles and Practice of Declarative Programming )でのチュートリアル「宣言的ゲームプログラミング(Declarative Game Programming)」に基づいて説明する。チュートリアル中で、Yampaを用いて作成したゲームbreakoutを紹介している。ここでは、その時のスライドを引用しながら、breakoutのプルグラムがどのようになっているかを説明する。
このゲームの動画は公表されている。ゲームを実際に作成したのは、Ivan Perezである。また、国際会議で用いられたスライドも公開されている。さらに、プログラムのコードも公表されている。これらから分かるように、プログラムの名称は、Haskanoidとなっている。これは、ゲームbreakoutをAandoroidに搭載するのが最終目的であることを反映している。従って、以下では、Haskanoidという名称を使うことにする。
今回は、公表されているスライドやコードを引用しながら、Haskanoidがどのように作成されているかを分析しながら、ゲームのプログラムをどのように作成したらよいかを見ていく。
2.Haskanoidの動作環境
Haskanoidは、OpenGLではなくSDL(Simple DirectMedia Layer)を利用している。SDLは画像や音声を簡単に操作できるので、近年、広く利用されている。また、Haskanoidは、マウスやキーボードと一緒に、任天堂のWiiリモコンプラスも入力デバイスとして利用している。このため、Windouws8.1の上に実装するのは難しいので、ここでは、Linuxの上に実装した場合について説明する。
Linuxに実装するためには、SDLとcwiidをあらかじめ実装する必要がある。これは次のように行う。
sudo yum install SDL* sudo yum groupinstall ‘Development Tools’ sudo yum install cwiid*
また、Haskellのライブラリは次のものをインストールする。
cabal install yampa cabal install sdl cabal install hcwiid cabal install IfElse cabal install SDL-image cabal install SDL-mixer cabal install SDL-ttf cabal install MissignH
また、エディターでemacsを用いたいときは次をインストールする。
sudo yum install emacs sudo yum install emacs-haskell-mode
では、次回からHaskanoidを詳しく説明する。