Pythonで書けるレトロゲームエンジンPyxelに入門する
この記事の大まかな内容
Pythonでレトロゲームが開発できるPyxelの紹介をします。同じような開発環境を提供する「ファンタジーコンソール」というコンセプトについて触れ、競合(?)のPICO-8、TIC-80との機能比較と、macOSでの環境構築までを扱います。
シンプルなレトロゲームを作ってみたい
2023年現在、ゲーム開発のお供であるゲームエンジンは数え切れないほど存在します。今年話題に上がったものに絞っても、UnityやUnreal Engine、Godot Engineなどがあり、いずれも充実した機能で、快適なゲーム制作環境を提供してくれています[1]。
逆に、敢えて機能に制限を設けた、レトロゲームの制作に特化したファンタジーコンソールというものもあります。この記事では、その中でもPythonでコーディングが可能な、Pyxelというゲームエンジンに入門してみたいと思います。
ファンタジーコンソールとは
ここで、一旦Pyxelそのものではなく、ファンタジーコンソールについて軽く触れたいと思います。
ファンタジーコンソールは、80年代の家庭用ゲーム機のような特徴を持つレトロゲーム制作環境・仮想的なゲーム機です[2]。その多くが128 x 128
から256 x 256
ピクセルの解像度までのゲームしか作れず、組み込みのサウンド機能では同時発音数は4~8ch程度。カラーパレットは8~16色のものが多く、2, 3色のものさえあります。
実写と見紛うようなゲームが多数リリースされる2020年代において、とってもアナクロなスペックが特徴的です。また、冒頭に挙げたメジャーなゲームエンジンとは違い、簡易的ながらもドット絵やサウンドなどを作る機能も備わっているところも、ファンタジーコンソールならではです。
PICO-8やTIC-80と聞けば、ファンタジーコンソールがどんなものかピンとくる人もいるかもしれません。特にPICO-8はitch.io上で発表されているゲームの内、数千もの作品のゲームエンジンとして使われており、レトロゲームの制作環境として非常にポピュラーです[3][4]。
Pyxelの特徴
Pyxelは、上に挙げたような特徴を持つファンタジーコンソールの一つです。
先述のPICO-8やTIC-80ほどは有名ではないかもしれません。しかし、2023年11月末時点ではgithubで12.7kほどのstarを集めており、ダウンロード数は50万に届きそうな勢いです。
Pyという接頭辞が示すようにPythonでコーディングできる点、そしてマルチプラットフォーム(Windows, macOS, Linux)に対応していることが主だった特徴として挙げられます。
機能比較
同じファンタジーコンソールのPICO-8やTIC-80と、Pyxelの機能比較をしてみましょう。
もちろん、ファンタジーコンソールは必ずしも機能が多い = 良いというわけではないです。が、作りたいものと表現可能なスペックを天秤にかけて、自分に合う環境を構築することは大事です[5]。
PICO-8 | TIC-80 | Pyxel | |
---|---|---|---|
解像度(px) | 128x128 | 240x136 | 可変 (最大256x256) |
パレット | 16色(固定)[6] | 16色(変更可) | 16色(カスタム可) |
スプライト | 8x8 256個 | 8x8 256個 | 256x256 3個 |
マップ | 128x32タイル | 8x8 256個 | 256x256 8個 |
同時発音数 | 4ch (8波形) | 4ch (波形編集可) | 4ch (4音色) |
ゲーム容量 | 32KB | 64KB | 制限なし? |
言語 | P8 Lua | Lua, JS, Moonscript | Python |
価格 | 14.99USD | 無料 (Pro版20USD) | 無料 |
対応OS | Win, macOS, Linux | Win, macOS, Linux | Win, macOS, Linux |
表記の仕方が違う箇所もあり少し分かりづらいですが、Pyxelはスプライトやマップの制限が緩く、解像度が高いことが伺えます。また、単純に無料で全ての機能が使えるのは良いですね。
なお、Pyxelは配布の際には、ウェブから遊んでもらうこともできますし、pyxelpackager
コマンドを使えば、単体実行ファイルを作成することも可能なようです。
その他の特徴
日本語のドキュメントや情報が充実している
日本人の方が開発に携わっているため、日本語のドキュメントが充実しているのもポイントだと思います。Googleで検索すれば、簡単な疑問程度であれば解決できると思います。
初学者にお勧め
そして、これは他のファンタジーコンソールにも言えますが、グラフィック、サウンドなども作ることができ、ゲーム開発にまつわる機能が一通り揃っているため「気軽にゲーム開発ができる統合環境」として初学者に勧められるのも非常に良いです。
ゲームジャムやプロトタイピング向き
先述の通り、できることが多くはありません。
ゲームジャムにエントリーするためのシンプルなゲームの制作だったり、ゲームの試作・プロトタイピングや、ゲーム制作の入門に使うのが良いでしょう。イメージとしては80年代のコンシューマー機でリリースされていたようなゲームが作れるイメージです。
Pyxelで作られたゲーム
実際に、ドラクエ1をPyxelで作ったり、FFとWizardryを合体させたゲームを作った方もいます。後者は実際に遊んでみることができますので、Pyxelでできることのイメージが湧くと思います。
macOSで環境を構築してみる
私が使っているのは、Apple Silicon
版のmacOS
で、Pythonのバージョンはasdf
で管理しています。
基本的には公式ドキュメントの通りに進めれば良いですが、asdf
を使っている場合は、reshim
コマンドが必要になると思います。
- ターミナルを立ち上げる
-
python -V
で、Pythonのバージョンが3.7以上であることを確認 -
python3 -m pip install -U pyxel
を実行 -
asdf reshim python
を実行すると、asdf環境でpyxelコマンドが使えるようになります
以上で環境構築完了です。簡単。
サンプルを見てみたい
サンプルのプロジェクトを実行・編集するには、ターミナルで任意のディレクトリに移動してからpyxel copy_examples
コマンドを実行してみてください。pyxel_examples
というディレクトリにサンプルプロジェクトが生成されます。
生成されたファイルのうち、01_hello_pyxel.py
がPyxel版のHello World
です。サンプルプロジェクトがあるディレクトリに移動して、実行してみましょう。
$ cd pyxel_examples # サンプルプロジェクトがあるディレクトリに移動
$ pyxel run 01_hello_pyxel.py # 01_hello_pyxel.pyをPyxelから実行
新しいウィンドウが立ち上がって、以下のような画面が表示されるはずです。
01_hello_pyxel.pyの実行画面。実際はHello Pyxelの文字列がピカピカしてます
今回は以上です。次回は簡単なコードを書いてみたいと思います。
-
私は普段はGodot Engineを使ってゲーム開発をしています。こちらも非常におすすめ。 ↩︎
-
使われている作品数の多さでは、PICO-8が9位で、TIC-80が18位だそうです。参照:https://itch.io/game-development/engines/most-projects ↩︎
-
FANTASY CONSOLES/COMPUTERSの一覧表を見れば、他にも沢山のファンタジーコンソールがあることに驚くと思います。ただ、頻繁にアップデートされているのは、私の観測範囲ではPICO-8、TIC-80、Pyxelと、bitsy、WASM-4、pikuseruあたりでした。 ↩︎
-
内部的には標準の16色より暗めの秘密のパレットがあるようですが、ここでは基本的に固定16色として記載しています。 ↩︎
-
現在、Pyxel2の開発を進めているそうです。 ↩︎
Discussion