Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。
たいぶ有名になったPyxelは、日本人である北尾宗(kaito)さんが開発しているだけに、信頼も置けますし、何よりも日本語での情報が多いのが安心できます。
PICO-8やTIC-80を参考にされているため、以前に触ったPICO-8と同じような印象がします。
そういえば、こういうのはファンタジーコンソールって言われますよね。
8ビット、ドット絵が好きならツボにハマります。
Pyxel (ピクセル) は、 Python 向けのレトロゲームエンジンです。 使える色は 16 色のみ、同時に再生できる音は 4 音までなど、レトロゲーム機を意識したシンプルな仕様で、Python を使ってドット絵スタイルのゲームづくりが気軽に楽しめます。
詳細は公式のgithubでも、他のユーザーさんがブログやYoutubeで紹介されています。ここではRaspberry Pi OSにインストールする部分だけご紹介しておきます。
PyxelはWindowsやmacOS、Ubuntuを初めとしたLinux各ディストリビューションで動作します。作成されたファイルはどのプラットフォームでも実行できます。WebのHTMLでも動きます。ホント、スゴい。
Pico-8はしばらく触りましたが、Pyxelの方が更に分かりやすいですね。
Pi 5にPyxelのインストール
Raspberry Piではpipでインストールできます。今回はPi 5系のRaspberry Pi OSにインストールしました。OSはbookwormです。
公式ページにLinux系だとsudo pip3 install -U pyxelでインストールとありますが、そのままだといつものごとくPEP 668のエラーが出ます。
error: externally-managed-environment
(中略)
hint: See PEP 668 for the detailed specification.
きちんと仮想環境にインストールすることになったからです。
詳しくは次の記事も参考にしてください。
pipでインストール
仮想環境にしてからインストールします。
python3 -m venv pyxel
source pyxel/bin/activate
python3 -m pip install pyxel
ここではpyxelにしましたが、任意で変更してください。
python3 -m venv 任意の名前
source 任意の名前/bin/activate
python3 -m pip install パッケージ名
activateすると、ターミナルのプロンプト前に仮想環境で指定した名前が追加されます。
(pyxel) raspida@cm5pi:~ $
これを元に戻すのはdeactivateと打ちます。
deactivate
記事執筆時点でのPixelのバージョンは2.3.18でした。
(前略)
Installing collected packages: pyxel
Successfully installed pyxel-2.3.18
サンプルプログラムを動かす
どのようなものなのか、サンプルプログラムを動かしてみると良いでしょう。ソースファイルを読めるので、自身が作る際の参考になります。
インストール後、先程指定したpyxelディレクトリが出来ています。
ここにサンプルファイルをコピーします。
cd pyxel
pyxel copy_examples
ディレクトリはこんな感じです。
./pyxel
├── bin
├── include
├── lib
├── lib64 -> lib
└── pyxel_examples
20個のサンプルがありました。
.
├── 01_hello_pyxel.py
├── 02_jump_game.py
├── 03_draw_api.py
├── 04_sound_api.py
├── 05_color_palette.py
├── 06_click_game.py
├── 07_snake.py
├── 08_triangle_api.py
├── 09_shooter.py
├── 10_platformer.py
├── 11_offscreen.py
├── 12_perlin_noise.py
├── 13_bitmap_font.py
├── 14_synthesizer.py
├── 15_tiled_map_file.py
├── 16_transform.py
├── 30sec_of_daylight.pyxapp
├── 8bit-bgm-gen.pyxapp
├── 99_flip_animation.py
├── assets
└── megaball.pyxapp
拡張子.pyは、Pythonプログラムですからpython 〜.pyで実行出来ますが、pyxel runコマンドでも可能です。
pyxelコマンド例:
pyxel run PYTHON_SCRIPT_FILE(.py)
pyxel watch WATCH_DIR PYTHON_SCRIPT_FILE(.py)
pyxel play PYXEL_APP_FILE(.pyxapp)
pyxel edit [PYXEL_RESOURCE_FILE(.pyxres)]
pyxel package APP_DIR STARTUP_SCRIPT_FILE(.py)
pyxel app2exe PYXEL_APP_FILE(.pyxapp)
pyxel app2html PYXEL_APP_FILE(.pyxapp)
pyxel copy_examples

02_jump_game.py
■Pi 5は8GBモデルがオススメ
リソースファイルの作成
何気にリソースファイルでドット絵を描いたり、音楽を作成する方が楽しいと思えてしまいます。
これだけで時間が経つのを忘れますね。
pyxel edit Pyxelリソースファイル
デフォルトで何も指定しないとmy_resource.pyxresというファイル名になります。

詳しくはgithub に書いてあります。
GitHub
File not found · kitao/pyxel A retro game engine for Python. Contribute to kitao/pyxel development by creating an account on GitHub.
基本はPythonでプログラミングできますし、ゲーム特有のライブラリが縁の下の力持ちになっているので、中高生でも楽しめそうですね。
こちらはPico-8を入れた記事
(番外編)ソースからビルドする場合
既にpipでインストールしたら必要ありません。
ソースからビルドする場合、Raspberry Pi OSのデフォルト(標準)では足りなかったのが、rustパッケージ、libclangライブラリ、rustのruff、maturinも足りなかった。
足りないのか、make途中でパスが通っていなかったのか定かではないけど、makeが完走しない。 でも、先にインストールを済ませたらイケた。
多分、makefileのパスが違うからだと思う。(非エンジニアなので分かりません)
但し、clangライブラリとrust以外は、pipだったので仮想環境でなければインストールできなかった。
だから、先に仮想環境のまま足りないものをインストールし、git cloneしたmakeも仮想環境でそのまま続けたら、イケた。
なお、自動で仮想環境にしてくれるpipxでruffとmaturinのインストールも試したけど、やはり上手く行かなかった。でも、先にclangを入れれば行くかも?(未検証)
足りないのをインストール
libclangが足りない。
sudo apt install clang
rustの公式サイトより(https://www.rust-lang.org/ja/learn/get-started)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
先にvenv環境で足りないパッケージをインストールした。
python3 -m venv env
source env/bin/activate
pip3 install ruff maturin
makeもこのまま続けた。
git clone https://github.com/kitao/pyxel.git
cd pyxel
make clean all
📦 Built wheel for abi3 Python ≥ 3.8 to .././dist/pyxel-2.3.18-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
イケた。
make後にインストール
pyproject.tomlのある場所で実行する。
正しいのかどうか分からないけど、/pyxel/pythonフォルダの中だったので、そこを指定した。
cd pyxel
pip install python/.
ソースからビルドは、足りないものを追加したらインストールすることができました。
でも、Raspberry Pi OSならpipのパッケージで良いと思う。
書籍でお勉強
pyxelの作者さんも本を出されています。登録者数 13.4万人超えのVTuberさんの本もありますね。







