feature image

2016年12月1日 | ブログ記事

PICO-8でゲームを作ってみたはなし

どうも。 traP Advent Calendar 2016 初日担当、のんさこです。

今回は "PICO-8" のこととか、それを用いて実際にゲームを作った体験とかを書きます(おもにプログラミングあたり)。

"PICO-8" ってなんぞや

"PICO-8" ($14.99) とは、Lexaloffle Gamesが開発した「空想上のゲームコンソール」です。と言ってもピンとこないでしょうし実際の写真を見たほうが良さそうですね。デモのゲーム "The Adventures of Jelpi" の画面を見てみましょう。

The Adventures of Jelpi (by zep)

かわいい。超かわいい。

正方形の画面、荒いドット、少ない色数…。ゲームボーイカラーを思い出す人もいるのではないでしょうか。あるいはBASICコンソール。写真だけではわかりませんが、音源もPSGっぽい。ぐっと来ます。

そんなPICO-8ですが、ゲーム制作について非常に大きな利点があります。それは、 制作がとっっても楽 なところ。プログラムやグラフィック、マップ、サウンドのエディタもついています。プログラムは "Lua" という既存の言語を用います。保存されるファイルはテキストファイルとして読み込めるため、画面が狭くてコードが書きづらい、という場合には外部のテキストエディタも使えます。Windows、Mac、Linux、Raspberry Piにも対応しており、HTML5に出力可能。「作る」と「共有する」に特化したゲーム機です。

日本語のマニュアル、チュートリアル、リファレンスなんかもあります。入門あたりは以下が詳しいのでぜひ。

とりあえずなんか作ってみた

そんなPICO-8に試験期間が迫る中出会い、一目惚れしたのんさこは、数日迷った末に買ってしまいました。試しに何かしら作ろうと思い、自分が好きなゲーム "Flappy Bird" のクローンを作りました。名前はシンプルに "Flapchick" です。背景とかの絵ごころのなさはゆるしてください。

Flapchick

当たり前ですがPICO-8でゲームを作るのは今回が初めてでした。それどころかLuaも1年近く前に ComputerCraft (MinecraftのMOD) でタートルを動かして以来まともに書いてません。なので先述のPICO-8のマニュアルやLuaのリファレンスを見ながらの亀ペース制作を覚悟しての制作となりました。

最初はLuaのテーブルをただの変数置き場にしか使っていませんでした。関数は全てグローバルにおいていたため、非常にBASIC感あるプログラムになってました(それはそれで趣がある)。しばらくして関数がテーブル内に入ると知って、オブジェクト指向プログラミングにより近いプログラムが書けるようになって、制作スピードが上昇。関数が基本型だと知ってからはコールバック関数に似たものを導入したりもするようになりました。

PICO-8そのものについては、できることが限られている分、学習速度がとても速かったです。スプライトの描画が関数一つ呼び出すだけなのはとても楽でした。9-Patchの描画も関数をつくって楽に行うことができました。スプライトのロードとか考えなくても良かったってのも地味に嬉しかったです。

製作時間としては、ブランクはあきつつも現時点で70時間程で、予想よりも短かったです。また、プログラムがアニメーションなども含めて1000行を超えない程度で割と書きやすかったという印象を持ちました。サクサクと書ける上に出来上がる速度が速くて、とても楽しかったです。

今後どう使っていこう

これらを踏まえた上でPICO-8の今後の使い道を考えたところ、かなりいろいろなことに使えそうなことに気が付きました。

楽しく開発できるという面を考えると、小規模であれば、ゲームを作ってリリースしたり、ゲーム制作時のプロトタイピング、ハッカソンやゲームジャムなどがさらに幸せになるのではないかと思います。教育機関向けのライセンスもあり、実際にその場面で使われてることもあり、プログラミング入門者にもおすすめできそうです。ひょっとしたら、スプライトの回転や3DCGなどの実装の学習にもいいかもしれません。

今のところ、僕は今年12/9に行われる "Ludum Dare 37" でPICO-8を使って出せたらいいなー、と思っています。

グダグダでしたが、PICO-8の魅力が伝わったらうれしいです。以上、のんさこでした。ノシ

おまけ

PICO-8でPとAをランダムに出力して"PPAP"の順に出てきたら"PEN-PINEAPPLE-APPLE-PEN"と出力するプログラムを書きました。「ピコ八郎」です。スペルミスは気にしないでください。

PICO-8-TARO

res = ""

function do_ppap()
local state = 0
local r = 0
local c = "p"

while state < 4 do
r = rnd(1)
if r<0.5 then
c="p"
else
c="a"
end

if c=="p" then
if state~=2 then
state+=1
end
else
if state~=2 then
state=0
else
state+=1
end
end

res=c
yield()
end

res="pen-pineapple-apple-pen"
end

function _init()
cr = cocreate(do_ppap)
end

function _update()
if costatus(cr)~="dead" then
coresume(cr)
else
res=nil
end
end

function _draw()
if res then
print(res)
end
end

nonsako icon
この記事を書いた人
nonsako

https://pawoo.net/@nondersin

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2023年11月21日
School Breakin' Tag -新感覚おにごっこ-
s9 icon s9
2023年9月3日
タイピング&アクション『TypeTheCode』作りました
wal icon wal
2023年4月25日
【驚愕】作曲4年目だった男が大学3年間ゲームサウンドに関わった末路...【ゲームサウンドのお仕事について】
tenya icon tenya
2023年4月25日
15時間でゲームを作った #Oxygenator
Komichi icon Komichi
2022年9月16日
5日でゲームを作った #tararira
Komichi icon Komichi
2021年4月2日
DXライブラリで重力パズルゲームを作る
Macky1_2 icon Macky1_2
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記