まだお勉強中

*現状整理 [#r4754381]

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

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

**Urd [#l623cdac]

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

**Berd [#ua6d01e3]

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

**Skuld [#o329dd00]

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

*** タイムラインから呼ばれるコマンド [#n63a410e]

SakuraScriptに明示的に書くコマンドの他に、以下のようなものもある。
- neverでないアニメーション終了時に、次のアニメーション開始タイミングを決める
- バルーン、選択肢等のタイムアウト

**その他 [#w72aad04]

*** SakuraScriptパーサ [#p6c27327]

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

*** レンダラー [#o30922e0]

必要な描画作業を行う。


* ユースケース [#q886c7e8]
* シナリオ [#q886c7e8]

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

** CROWの動的SERIKO [#k2ae3447]

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

** ゴーストエディタ [#v9356c66]

- 起動中のゴーストのsurface.txtを書き換えて、ワンクリックでテストしてセーブ。

- SHIORIレスでアニメーション定義だけをごりごり書いてデバッグできるツール。

** こないだの重力ゴースト [#icd014cd]

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

** デスクトップNScripter [#zc962ea9]

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

*方針 [#f37d8a24]

***BerdとUrdの一体化 [#sdbd9764]
全部ファイルで永続化。ゴースト側から読み書き可能にする。
多分もうなってるんじゃないかな。

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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS