Pyxel 1.2.0 の紹介


pyxelって?

python でレトロゲームが簡単に作れるゲームエンジンです。手前味噌ですがこんなのが簡単に作れます(dannyso16/pynasour (GitHub)

pyxel について詳しくは以下の記事が参考になります。

レトロゲームエンジンPyxelでプログラミングを始めよう!
kitao/pyxel (GitHub)

1.1.0から変わった点

  1. showflip の追加

  2. 旧フォーマット.pyxelが廃止され、pyxresになった

  3. 色の定数の追加

  4. 画面サイズの上限がなくなった

  5. 実行ファイルの生成

  6. ショートカットいろいろ

showflip の追加

これの追加で一気に processing みたいにかけるようになりました。

  • show関数:画面を表示し、ESCキーが押されるまで待機
  • flip関数:画面を一度だけ更新

クラスでラップしなくても以下のような簡単な書き方ができます!!

import pyxel

pyxel.init(120, 80) # 画面サイズ 120x80 で初期化

while True:
    pyxel.cls(pyxel.COLOR_GREEN) # 緑の画面
    # 座標 (x, y) で大きさ w × h の長方形
    pyxel.rectb(x=pyxel.frame_count % 160 - 40, y=20, w=40, h=40, 
                col=pyxel.COLOR_WHITE)
    pyxel.flip() # 画面を更新

旧フォーマット.pyxelが廃止され、.pyxresになった

旧拡張子が使えなくなり、pyxeleditor hoge.pyxelとしても編集できなくなりました。(hoge.pyxel.pyxresが開く…)

.pyxelアセットを使用した過去のゲームではload時にエラーが出てしまうので、旧バージョンのpyxelをインストールするとよいです。

pip install pyxel==1.1.8

また.pyxel.pyxresに変換したい場合は、
旧versionをインストールし、pyxeleditor hoge.pyxelで読み込み、.pyxresで保存しなおすといいです。

色の定数の追加

いろいろ定数値が定義されているので知っておくと便利かもしれません。詳しくはpyxel/pyxel/__init__.pyを見るといいです。

0 - 15 の数字で色を指定する時、いちいち表を見るのは面倒でしたが、pyxel.COLOR_BLACKのように使用できます。

色の対応は以下。

画面サイズの下限がなくなった

CHANGELOGではversion 1.1.6 で上限がなくなったようだけど、
pyxel.init(256, 256) までしかできないっぽい?
なくなったのは下限でした!

(実行ファイルの生成)

単体実行ファイルを作成するには、次のようにpyxelpackagerコマンドでアプリケーションの起動に使用するPythonファイルを指定します。

pyxelpackager Pythonファイル

処理に成功すると、distフォルダに単体実行可能なファイルが作成されます。

.pyxresファイルや.pngファイル等のリソースも同梱する必要がある場合は、assetsフォルダ以下に置くと取り込まれます。

とのことです!!
が、自分の環境(Windows10)ではうまく行きませんでした…

ショートカットいろいろ

実行中に以下のことができます。

  • Esc:終了
  • Alt(Option) + 1:スクリーンショット撮影
  • Alt(Option) + 2:動画キャプチャの開始時間をリセット
  • Alt(Option) + 3:動画キャプチャ(gif)を保存(最大30秒)
  • Alt(Option) + 4:パフォーマンスモニタ
  • Alt(Option) + Enter:フルスクリーンモードに切り替え

注意点としてスクリーンショットとキャプチャはデスクトップに保存されます。

動画の保存は動画開始タイミングでAlt+2を押し、終わりのタイミングでAlt+3を押せば保存されます。
また動画キャプチャの開始時間はデフォルトでは実行時のようで、動画の終点のタイミングでAlt+3を一度押せば実行開始から保存されます。

最後に

この記事は自分のプルリクがマージされてうれしかったので書きました(半分本当)。
pyxel は version 1.1.5 辺りから、さらに簡単に書けるようになっていてほんと楽しいです!

内容の間違いなどありましたら、指摘していただけると助かります
m(__)m

参考

kitao/pyxel

Pyxel 1.0 から 1.1 への移行方法

レトロゲームエンジンPyxelでプログラミングを始めよう!