ページ 11

スクリプトデータ(ADV)のフォーマットに関して

Posted: 2009年7月05日(日) 01:36
by わい
お世話になります。
スクリプトデータ(ADV)のフォーマット(データの持ち方)に関して
質問させてください。

参考にしているゲームでは、スクリプトプレイヤー(ゲーム本体)で
実行する時に使用するバイナリデータにコンパイルする際、データを

・文章や選択肢のテキストデータ
・オペレーションコード(コマンド)
・コマンドのパラメータ

という風に、大まかに3つのブロックに分けていました。
一般的に、このように分けるものなのか?という疑問と、
このように分けなければいけない理由があるはずだろう
ということで、考えてみたのですが、納得できる答えまで
はたどり着いていない状態です。

特に、分ける理由について。
履歴の表示や、中断データから再開する際に、オペレーション
(コマンド)コードを別にしておいた方が良いのでしょうか?
分ける必要はないけど、データとしての隠蔽の為に、そうして
いるだけなのか。もしくは、圧縮の有利性を考えてのことなのか?。

どういうフォーマットにするかは、その人の好みの問題で、
分ける必要性は特ない。というのが答えなのかなぁとは
思うのですが、ご意見を頂ければと思います。

Re:スクリプトデータ(ADV)のフォーマットに関して

Posted: 2009年7月05日(日) 02:28
by 御津凪
データを複数のブロックに分けることの利点は、読み込み時や実行中のオーバーヘッドを無くすためだと考えられます。

どういうことかと言うと、
バイナリデータのヘッダ情報に各ブロックへの(ファイルの先頭からの)オフセットを用意し、
読み込み時ではヘッダを読み込むだけでどのブロックがファイルのどこにあるかを把握することができる、ということです。

ほかのデータへの参照など、複雑なデータ構造を持つとき、このようにブロックとして分けることで管理を楽にしています。

あとは、その参考にしているゲームでのデータの扱い方により異なります。
(もしかしたらそのゲームでは最良の形式なのかもしれません)

ちなみに、データをブロック単位として分けることで圧縮率も若干向上します(もちろん内容によります)が、
それだけのために分けるということは(重要でない限り)余りやらないです。

※余談ですが、実行ファイルやライブラリファイルなども、セクション(ブロック)としてデータが分かれています。

スクリプトデータ(ADV)のフォーマットに関して

Posted: 2009年7月07日(火) 00:15
by わい
御津凪さん、レスありがとうございます。

参考にしているゲームは、おっしゃるように、オフセットを用意
して、各ブロックのデータにアクセスしておりました。

勉強の為に、分ける方法と、分けない方法、両方で作ってみたいと思います。

スクリプトデータ(ADV)のフォーマットに関して

Posted: 2009年7月07日(火) 00:15
by わい
すみません。解決のチェックを忘れました。