はじめに
MinUI上でPyxelを動かす方法について、簡潔に記します。
動作イメージ: https://x.com/i/status/1849144025343049838
MinUIについて
MinUIは、携帯ゲーム機向けの軽量OSで、レトロゲームのエミュレーションに特化しています。起動やゲーム再開が非常に速く、待ち時間なくゲームプレイに集中できるよう工夫されています。
- 軽量で高速
- レトロゲームエミュレーションに特化
- シンプルで直感的なUI
- 起動と再開が速く快適なゲームプレイ体験
ただし、対象ゲーム機は限られており、エミュレータの数は少なめ。ホーム画面などのカスタマイズはほとんどできません。
しかしながら、ゲームプレイの快適さはこの分野では群を抜いており、個人的にもっとも愛好するOSです。
Pyxelについて
Pyxelは、レトロなピクセルアートとゲーム開発に特化した軽量プログラミング環境で、幅広いユーザーに支持されています。Pythonで2Dゲームを作成できます。
- Pythonベースの開発環境
- 内蔵ツールで即時開発可能
- クロスプラットフォーム対応
- Webブラウザでの実行
2018年7月30日に初リリースされて以来、GitHubで4000以上のスターを獲得し、MonoGameやPlayCanvasなどの長年確立されたゲームエンジンと肩を並べる人気を誇っています。
公式ページ:GitHub - kitao/pyxel: A retro game engine for Python
遊べるゲームの中でも、『Finardry』(無料版)と『Dungeon Antiqua』(有料版)はとてもおもしろく、Pyxelのキラーアプリといってよい存在です。
公式ページ:GitHub - suuhiromofufactory/finardry
公式ページ:Dungeon Antiqua
携帯ゲーム機であそぶPyxelゲーム
携帯ゲーム機用のOSでは、基本的にはPyxelが動かないケースが多いです。そのなかでも、plumOSシリーズは作者のご尽力により、Pyxelが動きます。plumOS-RNですと、Dungeon Antiquaも動かせます。
公式ページ:GitHub - game-de-it/plumOS-RN: ROCKNIX FORK
携帯ゲーム機でPyxelのゲームを遊ぶには、plumOS-RNがいちばんのおすすめです。しかし個人的に愛好している、MinUIでもPyxelを動かしたいのです。
手順概要
概要を記します。使っている携帯ゲーム機はRGB30です。
- plumOS-RNからPython-3.11.7 ディレクトリを入手
- MOSS(MinUIのスロット1)にPython-3.11.7をコピー
- MinUIのスロット2にpakを作成
RGB30: POWKIDDY RGB30 RK3566 Handheld Game Console Built-in WIFI
pakのドキュメント:MinUI/PAKS.md
手順詳細
plumOS-RNからPython-3.11.7 入手
plumOSの /storage/Python-3.11.7
を入手します。ただし、plumOS-RNのSDカードは、(少なくともmacOSでは)ふつうには読めません。SAMBAでマウントしても見られないところにあります。
私は、File ExplorerでROMカードにコピーしました。
MOSSにPython-3.11.7をコピー
MOSSのSDカードも、(少なくともmacOSでは)ふつうには読めません。いったんMinUIのROMカードにディレクトリをコピーし、Tools > Filesを利用し、
/storage/Python-3.11.7
にコピーします
MinUIのスロット2にpakを作成
ROMカードに、下記ディレクトリを作成します。
/Emus/rgb30/PYXEL.pak
/Roms/Pyxel (PYXEL)
rgb30 のところは、ご自身のゲーム機に置き換えてください
続けて、上記 PYXEL.pak
に下記ファイルを作成します。
/Emus/rgb30/PYXEL.pak/missing.png
/Emus/rgb30/PYXEL.pak/launch.sh
missing.png
自家製pngでよければ下記リンクをダウンロードして名前を変えてご利用ください。使用フォントがわからなくてテキトーです。
launch.sh
#!/bin/sh
ondemand
DIR=$(dirname "$0")
EMU_TAG=$(basename "$(dirname "$0")" .pak)
PYXEL_DIR="/storage/Python-3.11.7/bin"
PYXEL_BIN="/storage/Python-3.11.7/bin/pyxel"
if [ ! -d "$PYXEL_DIR" ]; then
show.elf "$DIR/missing.png" 4
exit
fi
export SDL_GAMECONTROLLERCONFIG="19009b4d4b4800000111000000010000,retrogame_joypad,platform:Linux,x:b3,a:b0,b:b1,y:b2,back:b8,start:b9,dpleft:b15,dpdown:b14,dpright:b16,dpup:b13,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,leftstick:b11,rightstick:b12,leftx:a0,lefty:a1,rightx:a2,righty:a3,"
ROM="${1}"
EXTENSION=`echo "${ROM}" | awk -F. '{print $NF}'`
ROMNAME=`basename "${ROM}" | awk -F. '{print $1}'`
if [ "${EXTENSION}" = "py" ]; then
"${PYXEL_BIN}" run "${ROM}" &> "$LOGS_PATH/$EMU_TAG.txt"
elif [ "${EXTENSION}" = "pyxapp" ]; then
"${PYXEL_BIN}" play "${ROM}" &> "$LOGS_PATH/$EMU_TAG.txt"
else
exit 0
fi
動作イメージ
おわりに
ミニマリスティックなMinUI上でPyxelを動かすのは少し手間がかかりますが、その価値は十分にあります。携帯ゲーム機でのレトロゲーム体験を楽しむ方々に、少しでも参考になれば幸いです。
リンク
- MinUI GitHub - shauninman/MinUI: A focused, custom launcher and libretro frontend
- MinUI pak MinUI/PAKS.md
- Pyxel GitHub - kitao/pyxel: A retro game engine for Python
- Finardry GitHub - suuhiromofufactory/finardry
- Dungeon Antiqua Dungeon Antiqua
- RGB30 POWKIDDY RGB30 RK3566 Handheld Game Console Built-in WIFI
この記事の最新メンテ版は📗241101_MinUIでPyxelを動かす - MXT Forestにあります。