空のノート - note of void.


Menu

Navi
Auther
Webclap
Search
Categories
Archives
Recent
Comments
Trackbacks
Advertise
RSS1.0 XML


Entries


2009-10-03

Tugumi 拡張マップデータ

マップデータの拡張案です。 従来のmapに対する前方互換(SRCで読み込むことが出来る)があります。 任意サイズ、任意数の画像をマップ上に重ね貼り可能です。 何か意見などあればどうぞ。

ファイルデータの構造

  • 拡張データの直前までは従来のマップデータと同じ。 SRCで正しいデータとして読み込まれる。 その場合拡張部分で指定した画像は表示されない。
  • 画像ファイル名は追加画像ファイル指定で使うマップ画像。 画像の大きさに制限はない。 画像種類はbmp, png, gif, jpgのいずれかを使用可能。
  • 最後に追加画像ファイルの配置。 指定インデックスの画像をピクセル座標(X,Y)に配置するように指定。 座標や画像サイズの関係で描画画像が重なり合う場合、後に指定した画像で上書きされる。 画像のアルファ値やカラーキーは有効。 白色部分も透過される。
  • SRCで読み込む場合は、拡張部分のデータは無視される。
  • "Sprite"の直前行にMELTで出力される上層レイヤデータを配置可能。 (MELTの出力するマップデータと互換)
  • 拡張データ部分は記述された順に奥から描画される。従来のマップチップ指定は最も奥。
  • 拡張データでは各マスの地形を変更しない。データ部分で指定された地形がそのまま使われる。

データ形式

"MapData"
バージョン
マップの幅,マップの高さ
地形ID0,BitmapID0
地形ID1,BitmapID1
...
"Sprite"
画像ファイル名0;画像ファイル名1;...
X座標,Y座標,画像index
...

2009-09-19

Tugumi 少々遅れます

別記事の通り、PCを新しく買い換えました。 その環境を整えるのにやや時間が掛かったので、申し訳ありませんがTugumiの次リリースはしばらく遅れます。 少々お待ち下さい。 次のバージョンでは戦闘アニメを実行できるようにする予定です。


2009-08-18

Tugumi 0.1.2

随分時間を掛けてしまいましたが、バージョン0.1.2を公開しました。 更新点としてはスクリプトエンジンが刷新されました。 甲斐あってスクリプトの読み込みは約30倍、実行速度も2~3倍程速くなっています。 その他は特にありませんが、幾らか仕様変更した部分もあります。

なお、現状では戦闘アニメのイベントを読み込むようにsrc.iniで設定すると文法エラーが出て起動出来ませんが、これは戦闘アニメの方に書き損じや(無害でも)文法的に問題のある箇所が存在するためであり、正常に読み込むためにはその点を全て手で修正する必要があります。 但し正常に読み込めるようにしても本体が戦闘アニメの実行に対応していないので、まだアニメの表示をすることは出来ません。 その辺りは今後にご期待下さいという事でお願いします。


2009-08-09

Tugumi 更新予告

スクリプトエンジンの作り直しが終わってバグも取れたので、近いうちに1.0.2訂正:0.1.2を公開します。 機能はあまり増えていませんが、懸念のイベント読み込みはかなり早くなっています。 既にリリース予定は大分遅れておりますが、もう少しお待ち下さい。


2009-06-09

Tugumi inline-if 演算子

前回書いたように現在構文解析器を書き直しているわけですが、都合でスクリプトエンジンも幾らか構造変更することになりました。 その影響でIIf関数の仕様が普通の関数になる(戻る)ため、短絡評価(選ばれない方の式は評価されない)をさせるために新しく演算子を追加しようと思っています。

そこで問題なのが構文です。 既存の言語でもこの類の演算子は大抵存在するものの、構文は言語によってまちまちであり、Tugumiに取り入れるに当たってどのようなものにしようか迷っているわけです。

候補としては以下のようなものを考えています。

# SRCのIIf関数の代替構文
#   value = IIf(Cond, Then_value, Else_value)
# condが真ならthen_valueを返し、偽ならelse_valueを返す

# 1.Python風
value = Then_value if Cond else Else_value

# 1B.Python風+endif
value = Then_value if Cond else Else_value endif

# 2.C風
value = Cond ? Then_value : Else_value

# 3.単純インライン化
value = if Cond then Then_value else Else_value endif

# 4.他の構文
# 5.追加しない

最初は1にしようかと思ったのですが、それで良いかどうかにはあまり確信がありません。 まあ大した事ではないと言えばその通りですが、何か意見等あればどうぞ。 特に何も無ければ適当に決めようと思います。