ライブラリ関連あれこれ

タイピングサンプルの改造

http://2ch.jpn.org/ama/moe/js/typing/typing_1.html
Firefoxに対応させました。


JavaScriptとDHTMLによるタイピングゲームの作成
コードの内容は説明しませんが、上を見れば同じものが作れます。
ただし、こちらの方はonloadのようなイベントハンドラではなく、
イベントとリスナーを使ってます。またFirefoxに対応してます。

Ajaxを使ってみるテスト

http://2ch.jpn.org/ama/moe/js/test/ajax.html
ただテキストファイルをAjaxで読んでるだけです。


Ajaxでエロゲーを作るブログ
当面の目標は、このブログに追いつくことです。

ライブラリ構想がまとまってきた

一次

  • テキスト
  • スプライト
    • グラフィック関連。衝突判定とかも。
  • サウンド
    • そのまま音声関連。FLASHを使うかも。
  • イベント
    • キーやマウスなどの入力判定関連。


二次

  • フラグ
    • フラグ・パラメータなどイベントの判定。
  • コントロール
    • テキストとスプライトで表や図を描画する。
  • ターン
    • 非アクションのゲーム場面の状態遷移。
  • ルーチン
    • 探索とかソートとか。


三次

  • ボード
    • 升目。フラグが並ぶ二次元配列。
  • アイテム
    • パラメータを関連付けたデータ。
  • ユニット
    • 分岐で自ら選択できるアイテム。
  • ストラテジー
    • ユニットがルーチンを使う方法。


例えば落ち物もボードを使って処理する。
戦略SLGと同じ枠組みに分類してしまう。
カードゲームもアイテムを使って処理する。
麻雀とか複雑なのはそれだけでは作れない。


ライブラリを作るのは初めてなのであまり
気が利いてない分類&命名な気がするけど、
汚いコードと合わせて、あまり気にしない。


あとラジアンとかベクトルとか数学関連と、
重力とか反発摩擦とか、物理シミュ関連が
あると便利だが、リアルタイム系は後回し。

フラグについてもう少し考えてみる

IFをなるべく重ねない判定

選択が無ければ、もしくは進行に関係無ければ、フラグはいらない。
全ての選択を正しく選ばなくてはならないなら、フラグは一つ必要。
では選択の内幾つかがエンディングに関係する場合はどうなるのか。


単純な例から考えてみる。時間順で二択が続く一本道の場合を考える。
この場合も必要な選択の場面にだけフラグ判定を設ければ一つで済む。
複数の基準がある場合はどうか。ここで二進の変数が一つ必要になる。


正解が1、不正解を0として「11011010」のように選択肢を並べて、
展開に関係する選択肢は0、無関係なら1で、「10101101」のように
並べた判定基準を用意して、ビットごとにORを取って「11111111」と
なれば基準のフラグをクリアしている。別の基準でも同様に判定する。

二進数から文字列へ

だがストーリーが分岐するだけで、一つでは足りなくなる。
また、一つの選択肢の正解が、基準ごとに違う場合も適用できない。
しかも、A地点で1を選択したらB地点で2が正解だが、
A地点で2を選択したらBを地点で1が正解になる、
という条件付き選択を許しても、一元管理できなくなる。


そこで文字列変数を使えば、ある程度までなら
パターンマッチでカバーできそうだと前回思ったのだ。
「AABBBCCA」などと選択肢を表現する。複数の基準を許す。
分岐は、αルートはABCの三択で、βルートはDEFとか…。

更に探索する者達

しかし更に複雑化するとどうなるか。
選択によって新たな選択肢が出現するとか、
YU-NOのようにループしたりワープしたりするとか。


どう選択してフラグを立てても見れないシーンを調べる
飛び地検出をライブラリで用意すれば便利だと思ったのだが、
実際のノベルゲーム…エロゲではどうしてるのだろう。


スタックを積んで探索すれば何とかなりそうな気はする。
塗りつぶしとか迷路探索の要領だ。だが、実際にどう
実装するのかまだ分からない。YU-NOの飛び地検出は難しそうだ。


こういうのってエロゲ業界とかでノウハウが蓄積してて、
パッと思いつかないような方法でやってたりするのだろうか。
調べてみるけど、状態遷移とか難しい話にならないといいな。