【公式】レトロゲームエンジンPyxelを使わない理由が見つからない

Pyxel作者です。Qiita初投稿です。よろしくお願いします。

皆様、[Python向けレトロゲームエンジンPyxel](https://github.com/kitao/pyxel)のご愛顧ありがとうございます。

「気軽に楽しくゲームプログラミング」をコンセプトに、2018年にGitHubで公開を始めたPyxelも、おかげさまで現在15,000スター、ダウンロード数は80万を超えることができました。

4億を超えるGitHubプロジェクトの中で、Python向けゲーム開発環境としてはダントツの1位（2位は7.5kスターの[Pygame](https://github.com/pygame/pygame)）、全言語合わせたゲームエンジンの中でも8位にランクインしており、7位の[Cocos2d-x](https://github.com/cocos2d/cocos2d-x)（18.2kスター）に追いつきつつある状況です。

<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13948/0790fcb2-4189-4c33-7e19-943791245077.png">

## 本投稿の趣旨

本日は感謝の気持ちも込めて、Pyxelの最新状況（2024/11/2現在）をお伝えする記事を書いてみたいと思うのですが、なんでも「説得力のあるプレゼン」というのは、派手なキャッチコピーや綺麗な絵が重要なのではなく、聞く人の心に浮かぶ疑問や反論に答えられているかがポイントなのだそうです。

そこで、今回は通常の紹介文章ではなく、やや煽り気味のタイトルと共に、Pyxelを使ったことがない方の心に浮かぶであろう疑問・反論へお答えする形で説明を書いてみたいと思います。（形式通りの説明を読みたいという方は、Pyxelの[公式README](https://github.com/kitao/pyxel/blob/main/docs/README.ja.md)をどうぞ）

記載内容そのものに嘘はないですが、文体は若干おふざけですので、肩の力を抜いて読んでいただければ幸いです。

## 「Pxyelが何なのかわからないし、調べるのも億劫です」

はい、ここまで読んでいただきありがとうございます。

Pyxelはこんな感じのものが簡単につくれるゲーム制作ツールです。

[<img width="260" src="https://github.com/kitao/pyxel/raw/main/docs/images/10_platformer.gif">](https://kitao.github.io/pyxel/wasm/examples/10_platformer.html)　[<img width="291" src="https://github.com/kitao/pyxel/raw/main/docs/images/megaball.gif">](https://kitao.github.io/pyxel/wasm/examples/megaball.html)

「音がないとわからない」「ゲームは遊んでみないとわからない」という方は、お手数ですが上の画像をクリックしてみてください。実際にプレイできます。

こんなことをできるのがPyxelです。

## 「そもそもゲームを遊んだり、作ることに興味がない」

ですよね。

でも、何か動く絵を作りたくなったり、仕事の息抜きに、変わったことをやりたくなったりしませんか？

例えば、真面目なセキュリティツールをPyxelでこんな感じに可視化されている方がいます。

[<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13948/69ebcfbc-5cdf-aa45-43b3-649b6e730f67.png">](https://github.com/8vana/8vana)

あなたがPythonで、最先端のAIプログラムを作っていたとして、`pip install pyxel`して、コードの先頭に`import pyxel`と書き添えるだけで、ドット絵のお絵描きができるようになります。

この機会に、Pyxelで同僚に差をつけてしまいましょう！（どっちの方向に差がつくかはわかりませんが）

## 「ゲーム作りに興味はあるけど、自分のスキルだと無理そう」

Pyxelは16色、同時発音数4音と非常にシンプルな仕様で、数個の命令（初期化命令と図形描画命令をいくつか）を覚えるだけで、ゲーム作りを始められます。例えば、冒頭に挙げた横スクロールゲームも、[コードは300行ありません](https://github.com/kitao/pyxel/blob/main/python/pyxel/examples/10_platformer.py)。

Pyxelで使うプログラミング言語は、初学者向きかつ、業務用システムやAI開発でも使われているPythonで、さらにグラフィックスやサウンドの作成ツールも同梱されています。

よければ、下の画像をクリックしてPyxelのツールを試してみてください。

[<img width="300" src="https://github.com/kitao/pyxel/raw/main/docs/images/image_tilemap_editor.gif">](https://kitao.github.io/pyxel/wasm/examples/image_editor.html)　[<img width="300" src="https://github.com/kitao/pyxel/raw/main/docs/images/sound_music_editor.gif">](https://kitao.github.io/pyxel/wasm/examples/sound_editor.html)

また、非常に丁寧な解説をしてくださっている、[こんなサイト](https://cpp-learning.com/pyxel_day1/)や、[あんなサイト](https://kinutani.hateblo.jp/entry/2022/10/24/161404)もありますので、かなり始めやすいのではないかと思います。

## 「そうは言っても、本当にできるかな…」

心配しないでください。

Pyxelは[慶応大学](https://syllabus.sfc.keio.ac.jp/courses/2023_39757?locale=ja)、[大阪大学](https://qiita.com/tatsuhirotsuchiya/items/7d23ac7ff0a599e3a086)をはじめとする大学や専門学校、[TENTO](https://www.tento-net.com/blog/diary_online_2024_9_30)などのプログラミング教室で、学習教材として利用されている実績があります。

また、フランス主導で、49か国、464校、11500人の生徒が参加する[プログラミングコンテスト](https://www.nuitducode.net/)も毎年開催されていますので、子供たち・学生たちのような純粋な心の持ち主であれば、きっと大丈夫です！

## 「でも、何を作ったらいいのか…」

粘りますね…。

何を作るか迷った時は、他の人がどんな作品を作っているのかを見てみると参考になるのではないかと思います。

Pyxelの[ユーザー作品集コーナー](https://github.com/kitao/pyxel/wiki/Pyxel-User-Examples)には、100以上のゲームが登録されており、ほとんどの作品のソースコードが公開されています。

中には、生成AIでカードを自動作成する実験的な作品なんかもあります。

[<img src="https://private-user-images.githubusercontent.com/678802/359114571-f3853a22-3288-49a0-8506-55c983fe0694.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzA1MDE0NzMsIm5iZiI6MTczMDUwMTE3MywicGF0aCI6Ii82Nzg4MDIvMzU5MTE0NTcxLWYzODUzYTIyLTMyODgtNDlhMC04NTA2LTU1Yzk4M2ZlMDY5NC5naWY_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQxMTAxJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MTEwMVQyMjQ2MTNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04NWQxNGI4YTIyMWM4N2NlMzI4M2IxZjU0NDRmNzRhOGE1YTM1NzA4YWI0Yzg3MTNkZDRiMDQxZjc2OWIzMmRkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Y8bE-V1FGKVdtB2tUb47ks-9LtzzvYuQ5Qu8S1g32U8">](https://www.youtube.com/watch?v=I1tEa5poHl0)

この作品のように、他のライブラリと気軽に組み合わせて使えることも、Pyxelの醍醐味ですね。

## 「でも、レトロゲームじゃなくて超大作3Dゲームが作りたい」

その気持ち、わかります。

私もかつては某社にて、AAAと呼ばれるような3Dゲームの開発に携わっていました。デビュー作であった某ステルスゲームにも[心霊として登場する始末](https://www.tentenpro.com/muni_shinobu/mgs/spirit/index.html)です。

この場合、２つの考え方があるように思います。

１つ目は、「とにかく自分で全部作りたい」場合です。

昨今の3Dゲームでは、モデル、モーション、エフェクト、BGM、効果音と、必要な要素が多岐に渡り、真に「自分で作る」ことは非常に困難です。

現実的なボリュームで、自分で作った実感を伴ったゲーム開発をしたい場合、全てをコントールできるPyxelは悪くない選択肢ではないかと思います。

２つ目は、「3Dゲームを作る足掛かりが欲しい」場合です。

AAAレベルの本格的な3Dゲームを作る場合は、それなりの規模のチームに所属することが不可欠ですし、その中で自分のアイデアに対するメンバーの賛同を得なければなりません。

そのチームに所属するためのポートフォリオ制作や、チーム内で自分のアイデアやセンスを形にして見せるためのツールとして、思いついたらさっと作れるPyxelは便利な道具と言えるのではないでしょうか。

## 「趣味でレトロゲームを作るのではなく、きちんとしたゲームを作って儲けたい」

お金は大事ですよね。

でも、「レトロゲーム＝売れない」なのでしょうか。むしろ、「レトロゲーム＝キャラが立っていて売れる」だったりしないでしょうか。

2024年10月にSteamで販売されたレトロゲーム風の見た目のゲーム、[Dungeon Antiqua](https://dungeon-antiqua.com/)は、現在大ヒット中です。ゲーム実況動画もたくさん上がっています。

[<img width="400" src="https://cdn.peraichi.com/userData/79cd9ddb-4e4c-4ece-8f4c-171408106f6b/img/66cc670f57a0d/original.png">](https://www.youtube.com/watch?v=Hwpyzd8jLI0)

このゲームの例を見ても、ビジネスとしてのレトロゲームの可能性を感じることができます。

ここで、重要な追加情報を２つ。

こちらのDungeon Antiqua、実は「Pyxel製のゲーム」です。そして、Pyxelは無料ですので、私にロイヤリティを支払う必要はなく、全てを自分の儲けにできます。（もちろん[寄付は歓迎](https://github.com/sponsors/kitao)です！）

追記：作者の[しろもふファクトリー](https://qiita.com/shiromofufactory)さんがPyxelの推薦記事を書いてくださいました！

https://qiita.com/shiromofufactory/items/7f5c44b55343bf90651b

## 「違う色が使いたいし、16 色じゃ全然足りない」

ファミコンですら52色使えますものね。

Pyxelはパレットの色、数共に変更可能です。プログラムから直接変更もできますし、`.pyxpal`形式の別ファイルを用意して、そこに色を列挙することでまとめて変更することもできます。

一番簡単な方法は、画像を読み込む`load`関数に`incl_colors`オプションを指定することでしょうか。

例えば`pyxel.images[0].load(0, 0, "test.png", incl_colors=True)`のように画像を読み込むと、Pyxelのパレットがその画像で使われている色に置き換わります。

もはやPyxelとは全くわからない、[こちらのサンプル](https://github.com/kitao/pyxel/blob/main/python/pyxel/examples/15_tiled_map_file.py)でも実際の使い方が確認できます。

[<img width="400" src="https://github.com/kitao/pyxel/blob/main/docs/images/15_tiled_map_file.gif?raw=true">](https://kitao.github.io/pyxel/wasm/examples/15_tiled_map_file.html)

## 「サウンドの同時発音数も足りないです」

サウンドも拡張可能です。実際のコードは[こちら](https://github.com/kitao/pyxel/blob/main/python/pyxel/examples/14_synthesizer.py)をご参照ください。

せっかくですので、画像をクリックすると実際に音が聞こえるようにしておきます。

[<img width="250" src="https://github.com/kitao/pyxel/blob/main/docs/images/14_synthesizer.gif?raw=true">](https://kitao.github.io/pyxel/wasm/examples/14_synthesizer.html)

リアルタイムに波形編集できますので、マウスでグリグリいじってみてください。

## 「ドット絵もマップも、もっと本格的な使いやすいツールで作成したい」

Pyxelにはグラフィックスとマップ（タイルマップ）の制作ツールが同梱されていますが、お手軽さに振り切っているため、確かに大量の画像や大規模なマップを作るのは難しいかもしれません。

そんな場合は、扱い慣れた他のツールを使っていただくと良いと思います。

Pyxelは、各種画像ファイルや、Tiled Map File (TMX)の直接読み込みにも対応しています。マップ制作ツールの[Tiled](https://www.mapeditor.org/)で動作確認も行なっています。

## 「色々インストールしたりとか、始めるための準備が面倒そう」

こちら、Pyxelで最も心を砕いているところになります。

Pythonをお使いの方であれば、別ライブラリの事前インストール等なしに、`pip install pyxel`でPyxelが使えるようになります。（Linuxは環境ごとの差分が大きいため[README](https://github.com/kitao/pyxel/blob/main/docs/README.ja.md)をご覧ください）

また、「一切何もインストールしたくない！」というバニラ環境原理主義の方や、「一切インストールが許可されていない！」というセキュリティ原理主義の会社にお勤めの方にも、朗報があります。

ブラウザさえ動けば、HTMLファイルにこう書くだけで…

```html
<script src="https://cdn.jsdelivr.net/gh/kitao/pyxel/wasm/pyxel.js"></script>
<pyxel-run script="

# ここにPyxel (Python)のコードを書いてください
# 例えばこんな感じに…
import pyxel
pyxel.init(200, 150)
pyxel.cls(8)
pyxel.line(20, 20, 180, 130, 7)
pyxel.show()

"></pyxel-run>
```

Pyxelが動いて、この絵が出ます。Pythonのインストールすら必要ありません。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13948/e0331d63-10f7-19ae-8ba2-fd5e4cbd9f8a.png">

嘘みたいですよね。私も怖くなって、今、念の為試しました。本当に動きます。

Web版Pyxelの詳細を知りたいという方は[こちら](https://github.com/kitao/pyxel/blob/main/docs/pyxel-web-ja.md)をご覧ください。

## 「○○で動いてくれないと困る、たくさんの人に遊んでもらえないと嫌だ」

個人開発のオープンソースプロジェクトで、対応プラットフォームを拡大するのは、動作確認環境の確保の手間などもあり、なかなか厳しく、頭の痛い問題です。

以下のPyxel対応済みプラットフォームに、希望する環境がなければ、まずご相談いただいて、可能そうなら対応検討するという形になってしまうかと思います。

- Windows
- Mac
- Linux
- Chromebook
- Raspberry Pi
- Webブラウザ（iPhone/Android含む）
- 各種中華ゲーム機（[plumOS](https://github.com/game-de-it/plumOS)をご活用ください）

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13948/0c6677bb-c00a-bb8a-c902-da3f2d5a1182.jpeg">

…ところで、上記以外の環境が必要という方は、相当レアケースな気がしているのですが、どうなんでしょうね。（例えば、「Nintendo Switchで販売したい」とか？）

なお、Pyxelでは、専用のアプリケーションパッケージファイル (.pyxapp)を作成すれば、同じファイルをそのまま各種環境で動かすことができますし、それぞれの環境向けのネイティブバイナリに変換することも可能です。

## 終わりに

ということで、全力でPyxelを使わない理由に回答・反論することにチャレンジしてみましたが、いかがだったでしょうか。

Pyxelなかなかいいねと思った方。GitHubのスター数をささやかな励みに、無償で開発を続けておりますので、よろしければ[GitHubでスター登録](https://github.com/kitao/pyxel)をよろしくお願いします！

最後におまけとして、重要な告知を一つさせてください。

来年一月に、私が監修・執筆する[「Pyxelの書籍」](https://qiita.com/kitao/items/f4058530eefdb2d05822)が技術評論社さんより発売されます。こちらの本を購入しない理由も見つからなさそうな気がしておりますので、ご購入を検討いただけましたら幸いです。詳細をお伝えできるタイミングになりましたら、また紹介記事を投稿したいと思います。