👾

Pythonで書けるレトロゲームエンジンPyxelに入門する

2023/11/30に公開

この記事の大まかな内容

Pythonでレトロゲームが開発できるPyxelの紹介をします。同じような開発環境を提供する「ファンタジーコンソール」というコンセプトについて触れ、競合(?)のPICO-8TIC-80との機能比較と、macOSでの環境構築までを扱います。


シンプルなレトロゲームを作ってみたい

2023年現在、ゲーム開発のお供であるゲームエンジンは数え切れないほど存在します。今年話題に上がったものに絞っても、UnityUnreal EngineGodot Engineなどがあり、いずれも充実した機能で、快適なゲーム制作環境を提供してくれています[1]

逆に、敢えて機能に制限を設けた、レトロゲームの制作に特化したファンタジーコンソールというものもあります。この記事では、その中でもPythonでコーディングが可能な、Pyxelというゲームエンジンに入門してみたいと思います。

ファンタジーコンソールとは

ここで、一旦Pyxelそのものではなく、ファンタジーコンソールについて軽く触れたいと思います。

ファンタジーコンソールは、80年代の家庭用ゲーム機のような特徴を持つレトロゲーム制作環境・仮想的なゲーム機です[2]。その多くが128 x 128から256 x 256ピクセルの解像度までのゲームしか作れず、組み込みのサウンド機能では同時発音数は4~8ch程度。カラーパレットは8~16色のものが多く、2, 3色のものさえあります。

実写と見紛うようなゲームが多数リリースされる2020年代において、とってもアナクロなスペックが特徴的です。また、冒頭に挙げたメジャーなゲームエンジンとは違い、簡易的ながらもドット絵やサウンドなどを作る機能も備わっているところも、ファンタジーコンソールならではです。

PICO-8TIC-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コマンドが必要になると思います。

  1. ターミナルを立ち上げる
  2. python -Vで、Pythonのバージョンが3.7以上であることを確認
  3. python3 -m pip install -U pyxelを実行
  4. 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の文字列がピカピカしてます

今回は以上です。次回は簡単なコードを書いてみたいと思います。

脚注
  1. 私は普段はGodot Engineを使ってゲーム開発をしています。こちらも非常におすすめ。 ↩︎

  2. 詳しい説明は、Wikipediaでもご覧になれます。 ↩︎

  3. 使われている作品数の多さでは、PICO-8が9位で、TIC-80が18位だそうです。参照:https://itch.io/game-development/engines/most-projects ↩︎

  4. FANTASY CONSOLES/COMPUTERSの一覧表を見れば、他にも沢山のファンタジーコンソールがあることに驚くと思います。ただ、頻繁にアップデートされているのは、私の観測範囲ではPICO-8、TIC-80、Pyxelと、bitsyWASM-4pikuseruあたりでした。 ↩︎

  5. 少し蛇足になっちゃうので本記事には載せていませんが、私がPyxelを選んだ理由はスクラップに分けてあります。 ↩︎

  6. 内部的には標準の16色より暗めの秘密のパレットがあるようですが、ここでは基本的に固定16色として記載しています。 ↩︎

  7. 現在、Pyxel2の開発を進めているそうです。 ↩︎

Discussion