bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Yampaでゲームを定式化する―Haskanoid紹介

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を詳しく説明する。