まだお勉強中

現状整理

分析の観点で考えています。実装とは大幅に異なる可能性があります。

描画に関する主要な機能は3+αのエンジンに分けられる。 仮にUrd/Berd/Skuldとする。

Urd

一言で言うとdescript.txt + surface.txt + SSPの設定
責務永続化readonlyデータの保持、管理
持っているデータサーフェイス毎の定義(collision, animation, element)、キャラクタ毎の定義(alignmenttodesktop, defaultsurface等)
提供するサービスデータのread、永続化

Berd

一言で言うと起動中のプロパティ値
責務各種プロパティ値の保持、値変更の際のイベント発行
持っているデータ喋り速度、スケール、透明度、キャラ毎の現在のサーフェイス、alignment、位置
提供するサービスデータのread/write、イベント発行

Skuld

一言で言うとスケジューラ
責務タイムラインの保持、実行(決められた時刻に決められたコマンドを呼ぶ)
持っているデータタイムライン(何ms後に何をするか)
提供するサービスタイムラインの実行

タイムラインから呼ばれるコマンド

SakuraScriptに明示的に書くコマンドの他に、以下のようなものもある。

  • neverでないアニメーション終了時に、次のアニメーション開始タイミングを決める
  • バルーン、選択肢等のタイムアウト

その他

SakuraScriptパーサ

文法解釈し、全てのコマンドをタイムライン上に並べていく。実際は分解する所までしかやらないで、一つのコマンドが終わったら、次のコマンドを実行すべき時間が確定するのかな?

レンダラー

必要な描画作業を行う。

シナリオ

あんなこといいな、できたらいいな?

CROWの動的SERIKO

起動中のゴーストが自らsurface.txtを書き換える。 ネットワークから動的にダウンロードするゴーストや、複雑な成長をするゴースト。

ゴーストエディタ

  • 起動中のゴーストのsurface.txtを書き換えて、ワンクリックでテストしてセーブ。
  • SHIORIレスでアニメーション定義だけをごりごり書いてデバッグできるツール。

こないだの重力ゴースト

起動中のゴーストにmoveを外部から送ったり、さらに上書き的にmoveさせたり、特定の位置まで動かしてから外部ツールが何かをしたり(同期が必要、の意)。

デスクトップNScripter

特に今と変わらないけど、例えばバルーンレス(デスクトップに直接書いちゃう)とか。

方針

BerdとUrdの一体化

全部ファイルで永続化。ゴースト側から読み書き可能にする。 多分もうなってるんじゃないかな。

APIは非同期

タイムラインをバイパスしていきなりコマンド呼ぶのはリスキーな気がする。 とすると、呼び出し時はSkuldに渡して、必要に応じてイベントを発行してもらう。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-22 (月) 13:19:48