mieki256's diary



2019/02/06(水) [n年前の日記]

#1 [pyxel][cg_tools] ドットエディタEDGE/EDGE2及びGIMPで使えるPyxel用のパレットファイルを作成

_Pyxel を触っているうちに、ふと、ドットエディタ、 _EDGE / _EDGE2 で使えるPyxel用のパレットファイル(*.pal)があったら作業が楽になるのではと思ったわけで。

ということで、一応作ってみたりして。ついでに、GIMP用のパレットファイル(*.gpl)も作成。使えそうなら自由に使ってください。

_pyxel_palette_data_20190206.zip

中には以下のファイルが入ってます。
一応、テキスト形式のファイルも、そのまま置いておこうかな…。EDGE/EDGE2用パレットファイルはバイナリファイルっぽいからそのまま置けないけど…。

_Pyxel.gpl.txt
_pyxel_palette.csv.txt
_pyxel_palette.txt

しかし、作った後で気がついた。

Pyxelのパレットデータは、PICO-8と同じだから、Web上のあちこちで既に公開されてる、PICO-8用のパレットファイルを使えば済んだのだな…。わざわざ、GIMPパレットファイルを新規に作る意味は無かった。無駄な作業をしてしまった…。

#2 [cg_tools] ドットエディタEDGE/EDGE2のパレットファイルは謎

EDGE / EDGE2 のパレットファイルを作ろうとした際に、なんとなく思ったけれど。今時バイナリファイルでデータを持つのってどうなんだろうなと。このくらいのデータ量なら、GIMPのパレットファイル(.gpl)のように、テキストファイルで持ったほうが、別途編集しやすいような…。

まあ、EDGE / EDGE2 の、パレットファイルのフォーマットが謎というかクローズドなので、変換ツールの類を作るのが面倒で、せめてテキスト形式だったら良かったのに、などと思ってしまった、それだけの話だったりするのだけれど。

また、EDGE には、パレットデータのRGB値をテキストファイルで出力したり、逆にテキストファイルから読み込んだりする機能があるのだけれど。出力したソレが、入力用として使えないあたりも謎で。どうして同じ形式にしておかなかったのか…。読み込むためのデータを作る際、フォーマットが不明だからちょっとハマってしまったり。出力形式と同じなのだろうと思い込んでテキストを作って読み込んだら、妙な色になっておかしいなと。只のカンマ区切りを読み込ませるのだな…。

まあ、EDGE は既に開発完了したツールだから、今更そのあたり考えてみてもしょうがないのだけど。

#3 [pyxel] Pyxelをもう少し試したり

以前、Windows10 x64上で、 _Pyxel をインストールして、サンプルファイルを動かすところまでは試してみたことがあるのだけれど。

_mieki256's diary - Pyxelを試用してみたり

せっかくだから、自分も何かしら書いて、動かしてみようかなと。

そんなわけで、まずは Hello World を。 _TIC-80 で、new をした際に作られる雛形と同等の処理をするソースを記述。

helloworld_pyxel_ss01.gif

_helloworld.py
"""
Pyxel Hello world.

Windows10 x64 + Python 3.7.1 32bit
"""

import pyxel


class App:
    def __init__(self):
        w, h = 160, 120
        pyxel.init(w, h, caption="Hello World", fps=60)

        pyxel.load("assets/helloworld.pyxel")

        self.x = pyxel.width / 2
        self.y = pyxel.width / 2
        self.counter = 0

        pyxel.run(self.update, self.draw)

    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()

        if pyxel.btn(pyxel.KEY_LEFT):
            self.x -= 1
        if pyxel.btn(pyxel.KEY_RIGHT):
            self.x += 1
        if pyxel.btn(pyxel.KEY_UP):
            self.y -= 1
        if pyxel.btn(pyxel.KEY_DOWN):
            self.y += 1

        self.counter += 1

    def draw(self):
        # clear screen
        pyxel.cls(0)

        # draw image
        x, y = self.x - 8, self.y - 8
        u, v, w, h = 0, 0, 16, 16
        img = 0
        colkey = 10
        pyxel.blt(x, y, img, u, v, w, h, colkey)

        # draw text
        col = self.counter % 16
        pyxel.text(56, 16, "Hello World!", col)


App()

Pyxel用のリソースファイル(*.pyxel)を読み込んで処理するので、以下のファイルも入手・解凍して使わないと動かないです。

_helloworld_pyxel_20190206.zip

ファイルの配置は以下のような感じに。
.
|-- assets
|   `-- helloworld.pyxel
|
`-- helloworld.py

実行は、以下。
python helloworld.py

解説。 :

簡単に解説。

Pyxel を使う時は、import pyxel と最初のあたりに書いておく。

pyxel.init(w, h, caption="Caption", fps=60) で、Pyxelの初期化をする。fps= を指定しないと、30FPSになる模様。

pyxel.load(".pyxelへのパス") で、Pyxelのリソースファイル(.pyxel)を読み込む。
  • .pyxel には、画像、タイルマップデータ、サウンドデータ、ミュージックデータが一つにまとまっている。
  • .pyxel は、Pyxel に同梱されている pyxeleditor で作ることができる。

pyxel.run(更新処理関数, 描画処理関数) で、更新処理、描画処理をする関数を渡して、メインループを回し始める。

キー入力は、pyxel.btn(pyxel.KEY_LEFT) のような感じで調べられる。押されっぱなしなら True。押されていなければ False。キー定義の一覧は、 _pyxel/constants.py at master - kitao/pyxel を参考に。

pyxel.btnp(pyxel.KEY_xxx) で、キーを押した瞬間を調べられる。

画像の描画は、pyxel.blt(x, y, img, u, v, w, h, colkey) を使う。
  • x, y が描画位置。
  • img が画像バンク番号。
  • u, v, w, h が、画像のどの位置から、どのサイズで画像を取得するか。
  • colkey が、透明色扱いにする色番号。

画像を反転描画したいときは、w や h にマイナス値を与える。x, y, u, v はそのままでいい。

文字列の描画は、pyxel.text(x, y, "文字列", 色番号) を使う。フォントサイズは…1文字が4x6ドットだろうか…。3x5ドット+余白が縦横1ドット、みたいな感じ。

これだけ分かっていれば、2Dゲームっぽい画面表示ができるのではないかと。

アニメGIFとしてキャプチャできない。 :

Pyxelのドキュメントには、
* Alt(Option)+3
画面キャプチャ動画 (gif) をデスクトップに保存する (最大30秒)

pyxel/README.ja.md at master - kitao/pyxel より

と書いてあるのだけど。どうも動作してくれない気配が。

Windows10 x64 + Python 3.7.1 x86 + pyxel 1.0.1 で試したところ、Pyxel のウインドウが応答無しになってしまって…。放置しておけばキャプチャできたりするようだけど、キー入力をしてスプライト相当を動かしながらキャプチャしようとすると、全然撮れていない状態に。そのうちスプライト相当もウインドウ内から消えてしまったりして…。何故。

ググってみた感じでは、もしかすると Mac上ならキャプチャできるのかなと…。Windows上では不具合があるのかもしれない。不便。

仕方ないので、今回は、 _GifCam というツールを使ってキャプチャした。

ちなみに、この GifCam というツールは、ググると、作者さんとは全然関係ない悪質なサイトがトップに出てきて、アドウェア入りのソレをダウンロードする羽目になるので、作者さんのサイトからDLすること。現在の最新バージョンは 5.5 なので、「GifCam 2.0 - ダウンロード」なんてリンクは絶対にクリックしないように。

pyxeleditorは墓場かもしれない。 :

pyxeleditor を使ってドットを打った後で気がついたけど。もしかすると、現状では、pyxeleditor はリソースの墓場かもしれないなと。ドットを打っても、別途、他のツールで利用できる画像として取り出せないなと…。他のツールで作った画像を、D&D(ドラッグアンドドロップ)して、インポートすることはできたのだけど、エクスポートをする手段が用意されてない雰囲気。

TIC-80 のように、画像だけでもエクスポートできれば助かる場面もありそうな予感。

でもまあ、Pyxel から画像データへのアクセスはできるようだし、必要ならば自前でツールを作ることも可能ではあるのかな…。

でも、コマンドラインオプションを指定すると画像をエクスポートできます、みたいな仕様が入ってたら、助かりそうだなと…。

以上、1 日分です。

過去ログ表示

Prev - 2019/02 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project