SlideShare a Scribd company logo
Perl Hobby Programming - Games::BeLike::EightBITターミナルで8ビット風ゲームを作ろうゲーム製作協力(画像提供): nekokak氏谷内 元  twitter@keroyonn_  /  Hokkaido.pmYAPC::Asia 2011
自己紹介WEB系プログラマ in Hokkaido.pm仕事のメイン:Java/Flex/ExtJS-> 最近Perl趣味のメイン:C# + WPF+ Perlちょっとずつ違う素敵なID達cpan	: keroyonhttp://search.cpan.org/~keroyon/github	: keroyonnhttp://github.com/keroyonntwitter	: keroyonn_http://twitter.com/keroyonn_hatena	:keroyon0630http://d.hatena.ne.jp/keroyon0630YAPC::Asia 2011
Games::BeLike::EightBITその特徴ターミナルにグラフィックを描いてゲームをつくれるよ! (Curses)8ビット時代のコンシュマー機と同等以上の解像度でアクションゲームも制作可能簡単 && perlで全部作れる(ターミナル上の vim からそのまま実行できる)スプライト、マップ、スクロール、イベント、キーアップイベントのエミュレーションなど (将来項目) line & paint スタイルのグラフィックYAPC::Asia 2011
注意事項テストもドキュメントも例外処理もないし、APIすらまだあまり決めていないよCPU負荷が高いので、本番サーバーに入れて遊ばないでね。  もちろん、新手のワームとして使いたい場合は別だよ!YAPC::Asia 2011
最近の開発とかYAPC::Asia 2011そんなこともあろうかと
最近の開発とかYAPC::Asia 2011メモリリークだって直してないよ!
作った動機 1Perlでも気楽にホビープログラミングがしたい。特に絵が動いたりするやつ。PlackとかRouter::SimpleでオレオレWAFとか Web::Scraper とか、ホビープログラミングは気軽にできる。しかし、グラフィックを扱いたいゲーム系の書籍に書いてあることが、Perlで気軽に試せるようにしたかったYAPC::Asia 2011
最近の開発とかYAPC::Asia 2011こういうの
作った動機 2気楽にできるようにしたい環境を作るコストを0にしたいつまり開発用VMとターミナルで動いてほしい。普段はターミナルしか使わないし、Windows環境に「そのためにしか使わない」perlとSDLを入れるくらいなら、Flash Builder 立ち上げて作る方がむしろ早くて合理的学習コストを下げたい面倒な決りごとや、概念を学習しないで使えるようにしたいYAPC::Asia 2011
何ができるのかYAPC::Asia 2011デモ
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面Gradiusゴーファーの野望のパロディです。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面「トップを狙え」を意識しています。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面こちも「トップを狙え」を意識しています。VicPHPerはVicviperです。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面PHPerが悪のPerlMongerを倒すという誰もが納得の勧善懲悪シューティングとなっております。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面クトゥルフの二次創作をしたものは破滅すると言われています。あっ!やば。俺じゃん。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面ステージ1は「省鯖運用的空間」となっています。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面フレームレートが30はりつきです。現在の表示スプライト数は22個です。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面背景の星と手前の地形は一応多重スクロールです。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面ボスが後方から高速で飛来して駆け抜けていきます。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面点滅するワーニング。登場するボスは、ビッグ鯖でんな。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面目玉がコアになっています。ビックコアは青白く、銀色に光り鯖に似ているなーと思いました。
簡単なゲームを作ってみるその1 準備Githubで落してインストールhttps://github.com/keroyonn/p5-Games-BeLike-EightBITperl Makefile.PLmake make install注意:ドキュメント、テスト、例外処理がなく、APIも決定していません。タグづけもしてません。依存モジュールは、Curses と Class::Accessor::Fast です。YAPC::Asia 2011
今回作るゲームYAPC::Asia 2011デモ
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面高品質なことでは定評のあるシンプルシリーズをつくってみましょう。
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面シンプルシリーズの名を汚さぬよう精一杯頑張りました!
最近の開発とかYAPC::Asia 2011DEMO: PuTTYの実行画面エラー鬼がアニメーションしながら追いかけてくる!そして鬼につかまると、エラーで停止しまう!
簡単なゲームを作ってみるその2 プレイヤーの移動#!/usr/bin/envperluse Games::BeLike::EightBIT;my $stage = create_stage('stage1');my $plane = create_plane('stage1:main');my $player_bitmap = create_bitmap()->load_text("111\n222\n333");my $player = create_sprite({bitmaps => $player_bitmap, x=> 20, y=>10});$plane->add($player);$stage->keymap( {        h => sub { $player->{x} -= 2 },        l => sub { $player->{x} += 2 },        j => sub { $player->{y} += 2 },        k => sub { $player->{y} -= 2 },        q => sub { $stage->exit; },    });$stage->run;YAPC::Asia 2011適当なステージ名ステージ名:プレーン名
簡単なゲームを作ってみるその3 敵キャラと当り判定#!/usr/bin/envperluse Games::BeLike::EightBIT;my $stage = create_stage( 'stage1', { debug => 1 } );my $plane = create_plane('stage1:main');my $player_bitmap =  create_bitmap( undef, [ { x => 0, y => 0, w => 6, h => 3 } ] )  ->load_text("111\n222\n333");my $player = create_sprite({ bitmaps => $player_bitmap, x => 20, y => 10, is_hit => 1 } );$player->on_hit( sub { $stage->exit; } );$plane->add($player);my $oni_bitmap =  create_bitmap( undef, [ { x => 0, y => 0, w => 6, h => 3 } ] )  ->load_text("444\n555\n666");my $oni =  create_sprite( { bitmaps => $oni_bitmap, x => 40, y => 10, is_hit => 1 } );$plane->add($oni);キーマップは省略$stage->run;YAPC::Asia 2011当り判定領域当り判定ON
簡単なゲームを作ってみるその4 敵キャラの移動$oni->animation(    'moving',    {        type     => 'custom',on_frame => sub {            my ($sprite) = @_;            my $dx = $player->{x} - $sprite->{x};            my $dy = $player->{y} - $sprite->{y};            my $d = sqrt $dx*$dx + $dy*$dy;            my $vx = $dx/$d;            my $vy = $dy/$d;            $sprite->{x} += $vx;            $sprite->{y} += $vy;        },    })->play;YAPC::Asia 2011スプライトproperty, keyframe, customかもしれないフレームごとのハンドラプレイヤーを追いかける
簡単なゲームを作ってみるその5 タイトルの追加1#!/usr/bin/envperluse Games::BeLike::EightBIT;while (1) {create_title()->run;    create_stage1()->run;create_gameover()->run;}YAPC::Asia 2011無限ループにする
簡単なゲームを作ってみるその5 タイトルの追加2sub create_title {    # ステージとプレーンmy $stage = create_stage( 'title', { debug => 1 } );    my $plane = create_plane('title:main');    # タイトルmy $message = create_message({ message => 'The Onigokko',  y => 15 } );    $plane->add($message);    $stage->keymap( { 'any' => sub { $stage->exit; }, } );    return $stage;}YAPC::Asia 2011文字を描画したビットマップをセットしたスプライトを返す
簡単なゲームを作ってみるその5 タイトルの追加3sub create_gameover {    # ステージとプレーンmy $stage = create_stage( 'title', { debug => 1 } );    my $plane = create_plane('title:main');    # タイトルmy $message = create_message({ message => 'GAME OVER', y => 15 } );    $plane->add($message);    $stage->keymap( { 'any' => sub { $stage->exit; }, } );return $stage;}YAPC::Asia 2011
簡単なゲームを作ってみるその5 タイトルの追加4sub create_stage1 {    # ステージとプレーンmy $stage = create_stage( 'stage1', { debug => 1 } );    my $plane = create_plane('stage1:main');省略 ー さっきのメインプログラムがここに全部入る    return $stage;}YAPC::Asia 2011
簡単なゲームを作ってみるその6  画像を利用する1YAPC::Asia 2011画像はPNGで書き出したものを独自形式(gb8形式)に変換します。実績があるのは Fireworks ですが、通常のパターンエディタでも(PNG書き出しができれば)いけます。ゲームの実行ファイルのある場所に、images/ と patterns/ というフォルダを作成し、images に pngファイルを入れ、patterns に gb8 を書き出すのが推奨です。
簡単なゲームを作ってみるその6  画像を利用する2sub create_title {    # ステージとプレーンmy $stage = create_stage( 'title', { debug => 1 } );    my $plane = create_plane('title:main');    # タイトルmy $title = create_sprite({bitmaps => create_bitmap('oni_title.gb8')});    $plane->add($title);    $stage->keymap( { 'any' => sub { $stage->exit; }, } );    return $stage;}YAPC::Asia 2011独自フォーマット
簡単なゲームを作ってみるその6 画像を利用する3YAPC::Asia 20111) ANSI の256色カラーテーブル作成
同梱された mk_ansi_act.pl を実行し、act ファイルを作成する
17番目の色を (0,0,0) ではなく(0,0,1)にし、透明色として利用している簡単なゲームを作ってみるその6  画像を利用する4YAPC::Asia 20112) Fireworks で、一枚のPNGに、スプライトを書く
適当なサイズのキャンパスを作成(800x600とか)
前述の act ファイルを最適化パネルにロードする
「未使用のカラーを削除する」のチェックを外す
17番目の色(0,0,1)を透明に変更する
スウォッチを「現在の書き出しパレット」に変更する -> これでスポイトできるようになる
スウォッチを分離して拡大する

More Related Content

What's hot (20)

PPT
PHP, Now and Then 2011
Rui Hirokawa
 
PDF
SlowQueryとの戦い
Ken Gotoh
 
PPTX
PHP7を魔改造した話
Moriyoshi Koizumi
 
PDF
PHPの今とこれから2021
Rui Hirokawa
 
PDF
Symfony2 How to create your Bundle
chobi e
 
KEY
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
PDF
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
PDF
Inside Movable Type
純生 野田
 
PDF
MT meets PHP - PHP conference Kansai 2013
純生 野田
 
PPTX
PHP基本的関数QUIZ
Wataru Terada
 
PDF
やはりお前らのMTMLは間違っている!
純生 野田
 
PDF
PHPの今とこれから2014
Rui Hirokawa
 
PDF
PHPの今とこれから 2013
Rui Hirokawa
 
PDF
WordPressと外部APIとの連携
Hidekazu Ishikawa
 
PDF
PHPの今とこれから2019
Rui Hirokawa
 
PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
PDF
Zend Frameworkで始める携帯サイト
清水樹
 
PDF
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
 
PDF
最近の PHP の話
y-uti
 
PDF
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
 
PHP, Now and Then 2011
Rui Hirokawa
 
SlowQueryとの戦い
Ken Gotoh
 
PHP7を魔改造した話
Moriyoshi Koizumi
 
PHPの今とこれから2021
Rui Hirokawa
 
Symfony2 How to create your Bundle
chobi e
 
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
Rui Hirokawa
 
Inside Movable Type
純生 野田
 
MT meets PHP - PHP conference Kansai 2013
純生 野田
 
PHP基本的関数QUIZ
Wataru Terada
 
やはりお前らのMTMLは間違っている!
純生 野田
 
PHPの今とこれから2014
Rui Hirokawa
 
PHPの今とこれから 2013
Rui Hirokawa
 
WordPressと外部APIとの連携
Hidekazu Ishikawa
 
PHPの今とこれから2019
Rui Hirokawa
 
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
Rui Hirokawa
 
Zend Frameworkで始める携帯サイト
清水樹
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
Arata Fujimura
 
最近の PHP の話
y-uti
 
「スピード」と「品質」を実現するPHP開発チームの取り組み~AngularJS+FuelPHP+AspectMock~
leverages_event
 

Viewers also liked (8)

PPTX
Perlで次世代ゲーム開発
keroyonn
 
PDF
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Tasuku Suenaga
 
PDF
中高生向けUnity講座
MakotoItoh
 
PPTX
Perl/CGI 入門
keroyonn
 
PDF
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
 
PDF
0528 kanntigai ui_ux
Saori Matsui
 
PPT
大規模Perl初心者研修を支える技術
Daisuke Tamada
 
PDF
女子の心をつかむUIデザインポイント - MERY編 -
Shoko Tanaka
 
Perlで次世代ゲーム開発
keroyonn
 
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
Tasuku Suenaga
 
中高生向けUnity講座
MakotoItoh
 
Perl/CGI 入門
keroyonn
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
 
0528 kanntigai ui_ux
Saori Matsui
 
大規模Perl初心者研修を支える技術
Daisuke Tamada
 
女子の心をつかむUIデザインポイント - MERY編 -
Shoko Tanaka
 
Ad

Similar to Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう (20)

PDF
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
 
PDF
Tfpモデリングスペキュレーション
Eiichi Hayashi
 
PDF
Facebook, LinkedIN & Beyond - or how the new media changed how sales people d...
AdNerds
 
PDF
Fblinkedinbeyondv01 1234514863232782 1
guestcaceba
 
PDF
とあるプロジェクトのつらみなコード
Yuya Taki
 
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
 
PDF
2012 03-03-titanium plusquicktigame2d
Hiroshi Oyamada
 
PPT
20090606 わんくま(がる)
galluda
 
PDF
Bentolila jimeno2002 LA REFORMA DE LA NEGOCIACIÓN EN ESAÑA
EfiaulaOpenSchool
 
PDF
釧路OSS7月勉強会
saito kazuyoshi
 
PDF
Kusoss 29
saito kazuyoshi
 
KEY
KUSHIROOSS_29
saito kazuyoshi
 
PDF
شبكات الكمبيوتر
mohamednacim
 
PDF
شبكات الكمبيوتر من البداية حتى الاحتراف
احمد الجسار
 
ODP
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
PDF
MSA ASSOCIATE PROFILE
Saeed Alam Muhammad
 
DOCX
Data munging
Hiroyuki Taira
 
PDF
メンテできないコードをメンテする技術
Tomoya Ishida
 
ODP
本当は怖いPHP
Takuya Sato
 
PPT
C++0x in programming competition
yak1ex
 
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
 
Tfpモデリングスペキュレーション
Eiichi Hayashi
 
Facebook, LinkedIN & Beyond - or how the new media changed how sales people d...
AdNerds
 
Fblinkedinbeyondv01 1234514863232782 1
guestcaceba
 
とあるプロジェクトのつらみなコード
Yuya Taki
 
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
 
2012 03-03-titanium plusquicktigame2d
Hiroshi Oyamada
 
20090606 わんくま(がる)
galluda
 
Bentolila jimeno2002 LA REFORMA DE LA NEGOCIACIÓN EN ESAÑA
EfiaulaOpenSchool
 
釧路OSS7月勉強会
saito kazuyoshi
 
Kusoss 29
saito kazuyoshi
 
KUSHIROOSS_29
saito kazuyoshi
 
شبكات الكمبيوتر
mohamednacim
 
شبكات الكمبيوتر من البداية حتى الاحتراف
احمد الجسار
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
MSA ASSOCIATE PROFILE
Saeed Alam Muhammad
 
Data munging
Hiroyuki Taira
 
メンテできないコードをメンテする技術
Tomoya Ishida
 
本当は怖いPHP
Takuya Sato
 
C++0x in programming competition
yak1ex
 
Ad

Recently uploaded (8)

PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 

Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう