-ADVシステムを作る話

スクリプトの仕様

最近、他のADV系スクリプトエンジンを見てまわっていたりします。 既存で同じものがあるなら、公開する意味もないですし… その中で有名な吉里吉里のW.Deeさんの日記を読みました。http://kikyou.info/diary/?200809#i28 主な内容としては、吉里吉里の設計思…

フラクション演算

今回は新しく追加してみたフラクション演算についてです。 サンプルとして、BMSを使った音ゲーを書いてたのですが、 時間単位から描画単位に変換する式で乗算除算がでてきます。 例えば小節単位で変換すると 描画位置 = 描画範囲 * (時間位置 / 時間範囲)整…

その14

Advシステムは簡易スクリプト形式で文法を記述していくのですが、 プログラム用言語、プログラム用スクリプトと違って単純明快でなければなりません。 プログラミングをしたことがない人でもすぐ覚えられ、且つ開発効率が良いこと、さらにメンテナンス性が求…

その13

アップデート時のセーブデータの整合 http://d.hatena.ne.jp/nepo_n/20051030 一つは、ラベル名と読み取り位置をもち、スクリプトのバージョンが変われば 読み取り位置ではなくそのラベルから開始する、というものです。 これは処理が簡単で、ラベルごとの画…

その12

その11

返り値 これは引数に関数を指定できるようにする為のものです。 スクリプトがややこしくなるのでしなかったんですが、 いろいろ追加してくうちに結果を変数で受け取って、ifで分岐して、とか 余計にややこしくなってしまったので実装することにします(*´∀`)>…

その10

ループ構文 part2 しくしく…。

その9

・マルチスレッディング part3 後で更新

その8

マルチスレッディング part2 内部では単一スレッドにしようと考えてますがスレッドの制御が面倒です。 スレッドには忙しい状態と暇な状態があります。 忙しい時はCPUを独り占めして働き続けます。 60fps、30fpsでフレーム管理されてまして、暇なときはsleep…

その7

マルチスレッディング 現在、には画像の表示には同期式と非同期式を用意しています。 同期式は立ち絵の変更など、スクリプトの実行が止まるもので、 非同期式は雪や雨の天候エフェクトなどです。 後者は少し頑固に実装しています。 load "大きめ","中くらい"…

その6

変数名、ラベルの扱い Advシステムではいつ・どこでセーブされるか分かりません。 whileループの途中で割り込みが入って、そこでセーブされてもロード時にはメモリ内容が再現されなければなりません。 さらにパッチで変数を追加されても識別できるように、変…

その5

ループ構文 前回loop,forをwhileに変換しました。 次はwhile内部をif〜gotoに変換します。 while(i) { i--; }↓↓↓↓↓↓↓↓↓↓↓*Begin if (!(i)) goto *End; i--; *End continue→goto *Begin break→goto *End CやC++ならここで終わりなのですが、ここでは終われま…

その4

ほぼ必須なセーブについて。 セーブデータに必要な情報は現在表示してるCGだとか、鳴らしてるBGMだとか、シナリオファイルの読み込み位置だとか、大体そんなのです。 その中で読み込み位置を考えていきます。「あいうえお」という文章があって、「い」を表示…

その3

ループ構文について。 whileひとつ実装すれば他はwhileに変換して済ますことができます。 (プリプロセッサとかで)

その2

前回の続き。 newを必要最低限しか行わない→newした領域は無駄なく全て使用します。 popしようがclearしようが、領域はdeleteされません。 概要 領域の使用開始位置(offset)と使用サイズ(size)を記憶しておき、 pop_backされたらsize-1、pop_frontされた…

その1

Advシステムを作ると速度にも拘ります。 メインのAdvゲーム自体に速度はあまり関係ないですが、簡単なシューティングなど書きたいものです。 関数を作る 当然引数を取得するわけですが、それを何に格納しようかという話です。 メニューを作る関数など、ユー…