mieki256's diary



2014/12/03(水) [n年前の日記]

#1 [dxruby] DXRubyとスプライトエディタ

この記事は _DXRuby Advent Calendar 2014 の3日目です。

2日目の記事は、しのかろさんの _「デジゲー博2014イベント・リポート インディー・ゲームとDXRuby」 でした。Ruby+DXRubyを用いたADVっぽいゲームエンジンの実装事例、興味深いです。Ruby は Perl同様、テキストファイルに対する処理が書きやすい印象もあるので、各自がシナリオファイルのフォーマットを改変して作業効率改善が期待できるかも、などと夢想してしまったりして。


さて。自分、今年は、「DXRubyとスプライトエディタ」というお題で書いてみました。せっかくだから、試しにスライドを作って SlideShare にアップロードしてみたりして。これで多少は読みやすいはず…?
DXRubyとスプライトエディタ from mieki256 blawat

この日記ページにちゃんと貼り付けられてるか不安なので、一応 _元になったPDF も置いておきます。

DXRubyでSpriterファイルを表示してみる。 :

というわけで、スライドの最後のあたりで書いてましたが、 _スプライトエディタ Spriter のプロジェクトファイルをDXRubyで表示できましたので、スクリプト一式を置いておきます。下のような表示ができます。

_spritersconparser.rb.txt
spritersconparser_ss.gif

_spritersconparser_20141203.zip
  • Windows7 x64 + Ruby 1.9.3 p545 mingw32 + DXRuby 1.4.1 の環境で動作確認しました。
  • スクリプトソースや、サンプル画像、サンプル.scon は、Public Domain ということで。

使い方。 :

ひとまず動作する様子を見てみるなら、
ruby main.rb
を実行してください。順にアニメが表示されるはずです。

任意の Spriterファイルを表示したいなら、
ruby spritersconparser.rb Spriterファイル.scon
という形で実行してください。表示テストができます。.scml (.xml)ではなく、.scon (json)を指定することに注意してください。img00/フォルダ以下にサンプルファイルをいくつか入れときましたので、
ruby spritersconparser.rb girl_spriter.scon
ruby spritersconparser.rb sample01.scon
ruby spritersconparser.rb sample02.scon
ruby spritersconparser.rb sample03.scon
ruby spritersconparser.rb sample04.scon
ruby spritersconparser.rb sample05.scon
てな感じで確認できると思います。

他のスクリプトから呼び出して使いたいなら、以下の記述例を参考にしてください。
require 'dxruby'
require_relative 'spritersconparser'

ani = SpriterSconParser.new("img00/girl_spriter.scon")
ani.set_anime("default", "run")

Window.loop do
  ani.draw(320, 240 + 120)
  ani.update
end
水平垂直反転表示や、回転表示も対応済みです。詳しくは、doc/index.html を見てください。

現在分かってる不具合。 :

  • Spriter上で全体を管理するボーンを入れようとした場合、0度以外で作ってしまうと、反転表示の向きがおかしくなる。全体を管理するボーンを入れる場合、0度のボーン(右方向に向かって伸びるボーン)にしてください。(※ 反転表示がおかしくなったときだけ気にすればいいと思います。)
  • 処理が重い。使うとしたら、大きいボスキャラを一体だけ出す時ぐらいしか使えないかも…。プレイヤーキャラや、わらわら出てくる雑魚敵に使うと、たぶん処理落ちします。
  • これは Spriter の問題ですが、時間の値が整数のみなので、60FPS (= 1フレーム16.666...ms) ピッタリのデータを作れません。1フレーム 16ms、62.5FPSで設定して、1秒 = 960ms (16ms x 60フレーム) と思いながらデータを作ればOKかなと。

もっとも、現状では、アタリ範囲等を指定できないので、そのままではゲーム内で使えないような気もしていますが…。Windows.drawEx() で描画してる部分を、Sprite へ値を設定する処理に書き換えれば、どうにかなってくれないものかしら。

まあ、スプライトエディタで連番画像をエクスポートして、それをDXRubyで表示して使うほうが全然楽ですけど。画像サイズ・容量が問題にならないなら、それが一番いいような気がします。

てなわけで、今回の記事は以上です。

明日の記事は、しのかろさんの _「DXRuby機能リクエスト」 です。

以上です。

過去ログ表示

Prev - 2014/12 - 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 29 30 31

カテゴリで表示

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


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

Powered by hns-2.19.6, HyperNikkiSystem Project