その14
Advシステムは簡易スクリプト形式で文法を記述していくのですが、
プログラム用言語、プログラム用スクリプトと違って単純明快でなければなりません。
プログラミングをしたことがない人でもすぐ覚えられ、且つ開発効率が良いこと、さらにメンテナンス性が求められます。
例えば立ち絵表示の場合で、毎回(または単位ごと)にloadして必要無くなればdeleteして、だと
メモリの無駄などは全くないのですが、タイピングが多い上にdeleteのタイミングを考えたりとか面倒です。
その場その場でloadしたのでは遅い上に自由度がありません。どこでどんなファイルを参照しているかも分かりません。
そこで、先頭に全てのファイルをloadすることにします。
全てを一気にメモリに載せるわけにはいかないので、そのタイミングをマネージメントする機構を作ります。
struct manager {
int using; // メモリ使用量fast_list<file*> files;
};struct file {
int filesize;
string filename;free(); // メモリを解放
};
draw時にメモリになければloadし、manager::filesにpush_back()します。
その際にメモリ使用量をチェックし、超えているとmanager::filesの先頭をfree()&pop_front()し続けます。
既にメモリ上にあるものをloadすると、manager::filesでの位置を一番最後に移動、つまり削除されにくくなります。
タイムクリティカルな処理には明示的にload関数を呼ぶことで、pre-loadしておくことができます。
(1)処理速度と自由度
(2)開発効率とメンテナンス性
ああ、文章がまとまらない。・゚・(ノД`)・゚・。