結城の日記

今作ってるADVスクリプトインタプリタのまとめ

アバター
結城
記事: 52
登録日時: 15年前
連絡を取る:

今作ってるADVスクリプトインタプリタのまとめ

投稿記事 by 結城 » 14年前

はい今作ってるADVスクリプトインタプリタのまとめです、と
まぁ自分が忘れないようにするいわゆる備忘録ですね
うちのサークルとかで使用予定……かも

環境:WinXP Home SP3 x86に置いて作成中 (来年Win7になる予定 8が出たら乗り換えたいなぁ・・・)
スペックは書くまでもなし、AMDさんちの2コアですとさ……(何年前のノートだろうねw

使用してるのはDirectX 9 (June 2010)

とりあえずつけておきたい機能は以下の通り
(もはやそういうゲーム用に特化してしまっているwwいやそのために作ってるんだけどw
  • セーブ
  • ロード
  • オートセーブ
  • クイックセーブ
  • クイックロード
  • クイックジャンプ
  • フラグチェッカー
後は力が余っていればつけたい機能というかやりたいことw
  • ネットワーク通信
  • アップデータ自動ダウンロード機能
  • コードのアセンブリ化による高速化を期待
  • 最適化
シークエンスの確認

まず、スクリプトをどのように読み込むか
とりあえずスクリプトを一括して読み込んでも今のパソじゃあパンクすることはないでしょうから
とりあえず一気にキューに溜め込みます

してタイトルとかは特別な処理がいる気がするので別の工程として
キューも別に作り、起動時にシステム情報とかまとめてエンキュー
エンキューが終わった時点でタイトルを表示

同じように、シナリオもある時点で一度にある区間まで(現在1ファイル単位)を
一度にキューへ積み込む
そしてシナリオが再生されるときに一つずつデキュー
(ただしキュー内に実体は残したまま、クイックジャンプのためですかね……これじゃあデキューじゃない気がしますけどw)

果たしてこれが早いのか早くないのか
少なくとも読み込みつつ進めるという方式よりは早いと思いますが……
アルゴリズム次第ですかね?

アバター
へろりくしょん
記事: 92
登録日時: 15年前

Re: 今作ってるADVスクリプトインタプリタのまとめ

投稿記事 by へろりくしょん » 14年前

どういう状況なのかよく分かりませんが。

とりあえず、一括してコンパイルすればいいのでは?
構文解析が終わり、構文木が出来上がったら、それを元にバイトコードを生成するようにすれば、だいぶ高速化できますよ。

仮想マシン自体は、いくつかのレジスタとスタックを実装するだけのシンプル構造でも、問題ありませんので。

教義的にインタプリタとは呼べないですけども。