2014/08/31(日) [n年前の日記]
#1 [dxruby] 多関節キャラエディタ GMCMT のプロジェクトファイルをDXRubyで表示
数日前に弄ってた Ruby + DXRuby のソースを今のうちに一応アップロードしておこうかと。まだ、基本ポーズを表示するところまでしかできてないけど。
_多関節スプライトエディタGMCMT
例えば、以下のような感じのデータを作ってみたりして。
GMCMT はpng画像エクスポート機能があるので、下のような感じのアニメgif画像も作れる。
以下は、プロジェクトファイルを Ruby + DXRuby で読み込んで表示してみた例。
ソースは以下。
_gmcmtanimeobj.rb
_main.rb
一応、実験に使った GMCMT のプロジェクトファイル一式(.gmp、.gms、画像ファイル)と上記のRubyソースも zip にして置いておきます。Public Domain / CC0ってことで。 *1
_sample_my_2.zip (27.4KB)
とりあえず、プロジェクトファイルがテキストファイル(ini(?)、json)で保存されてる限りは、ご覧のとおり、Rubyその他で読み込んでゲームに使うのも比較的容易なのでありがたいなと。これがもしバイナリファイルだったら、解析するだけでも面倒で、途中で投げ出してたはず。
できればDXRuby上でモーション再生までしてみたいけど、今後しばらくは別のことを勉強しなきゃいけない感じだったりするので、今回はここまで。
_多関節スプライトエディタGMCMT
例えば、以下のような感じのデータを作ってみたりして。
GMCMT はpng画像エクスポート機能があるので、下のような感じのアニメgif画像も作れる。
以下は、プロジェクトファイルを Ruby + DXRuby で読み込んで表示してみた例。
ソースは以下。
_gmcmtanimeobj.rb
_main.rb
# GMCMTのプロジェクトファイルを読んで基本ポーズを表示してみるテスト require 'dxruby' require_relative 'gmcmtanimeobj.rb' obj = GmcmtAnimeObj.new("walk_test.gmp") bx, by = 320, 240 brot = 0 Window.loop do break if Input.keyPush?(K_ESCAPE) # ESCキーで終了 brot += 1 if Input.keyDown?(K_UP) # 本体角度をキー入力で変更 brot -= 1 if Input.keyDown?(K_DOWN) obj.draw_grid(bx, by) # グリッドを描画 obj.draw(bx, by, brot) # 全パーツを描画 end
一応、実験に使った GMCMT のプロジェクトファイル一式(.gmp、.gms、画像ファイル)と上記のRubyソースも zip にして置いておきます。Public Domain / CC0ってことで。 *1
_sample_my_2.zip (27.4KB)
とりあえず、プロジェクトファイルがテキストファイル(ini(?)、json)で保存されてる限りは、ご覧のとおり、Rubyその他で読み込んでゲームに使うのも比較的容易なのでありがたいなと。これがもしバイナリファイルだったら、解析するだけでも面倒で、途中で投げ出してたはず。
できればDXRuby上でモーション再生までしてみたいけど、今後しばらくは別のことを勉強しなきゃいけない感じだったりするので、今回はここまで。
◎ ゲームに使うとしたら。 :
ゲームに使うとしたら、画像描画の優先順位(プライオリティ値)が後々絡んできそうな気がする。複数のキャラが画面内に登場するだろうし。どうしたもんか。
- 座標計算だけは事前にしておいて、最後にプライオリティ値に従って描画順を前後させるか。
- それとも、背景画像その他をどのプライオリティ値で描画するか事前に厳密に決めておいて、その範囲内で各キャラのプライオリティ値が収まるようにするか。
*1: GMCMTのプロジェクトファイルのライセンスはどうなるのか、ちょっとよく分からないけど、データファイルにまでライセンスが強制される事例ってあまり聞かないので、たぶん問題無いのではないかなと…。
[ ツッコむ ]
以上、1 日分です。