エンジニアブログ
Perl
Perlでマ◯オを作ってみた - Hokkaido Perl Mongers #5 に参加してきました
2011年07月20日
谷内@帯広です。
7月16日土曜日、Hokkaido.pm に参加してきました。
Hokkaido.pm では毎回、さらに今年は OSC、昨年は YAPC::Asia にも参戦して発表をしてきましたが、LT(Lightning Talk)形式は初めてでした。
LTは5分間という枠内で、技術的な内容に加えて「ウケ」が重視した発表が求められます。
またトリを務める上に、体調も思わしくなく緊張しました。
お題は「Perl meets 次世代ゲームコンソール」です。
CUI上で ASCIIアートではなく、スプライトを使ったグラフィカルなゲームを作るという内容です。
上の動画の3分52秒あたりで「マ○オ」もどきが動くデモが見られます。
利用している技術は以下です。
- イベントループ ... AnyEvent
- リアルタイムキースキャン ... Term::TermKey、AnyEvent::TermKey
- サウンド ... Audio::Beep
- グラフィック ... Curses
- スプライトクラス ... Mouse、Data::Section::Simple
ポイントは以下です。
- AnyEvent(AE::timer) で、毎秒30フレームとなるように画面更新を行う
use AnyEvent; my $t = AE::timer 0, 0.033, sub { "Curses の erase/addstr/refresh 処理など" }; my $cv = AE::cv; $cv->recv;
use AnyEvent::TermKey; my $kw = AnyEvent::TermKey->new({ term => ¥*STDIN, on_key => sub { my ($key) = @_; if ($key->utf8 eq 'h') { "移動処理"; } }, });
これはあくまでもネタですので、このまま大きなゲームを作成すると破綻すると思います。
また、衝突判定などもいちいち自力で書かないといけません。
この辺の課題は、今後 Games::CUI という汎用的なゲーム作成ライブラリを開発してクリアしようと考えています。
モノになったらエンジニアブログにて、サンプルゲームととも公開しますので、お楽しみに!