壁紙取得状況の記録方法の案と歴史

Last-modified: 2022-04-20 (水) 20:44:27

ゆめ2っきにおける壁紙のシステムの歴史をなぞりつつ、その途中で出た案なども書き残した。
「自作品でのベストな収集要素の管理」を考えるヒントとなれば幸いである。

 

最初期の壁紙取得状況はどのように記録されていたか

ページ作成者は壁紙のシステムを実装した20氏本人ではないので細部は異なるかもしれないが、
ゆめ2っきにおける"壁紙"の仕組みは当初、おおむね以下のような構造になっていた。

  • 壁紙の条件を満たした際に特定のスイッチをONにする
  • 壁紙の取得条件を満たしているか確認する際、
    特定のスイッチがONで特定の変数が2以外であれば1にする
  • 特定の変数が0以外であればその壁紙を取得済みである
  • 特定の変数が2以外であればその壁紙はまだNew!が表示されている

壁紙1枚に対してスイッチ1つと変数1つを消費することになる。
ぶっちゃけ、当時としてはこれで別に困らなかった。

 

ある程度の枚数が実装された辺りから、
「必ずしもスイッチほしいわけじゃなくない?」という感じで
プレイ時間や睡眠日数、特定のマップ訪問などが条件の壁紙はスイッチが使われなくなった。
実は元々壁紙1枚ごとにスイッチを使う必要性が薄い構造をしていた。

 

改善したい点およびその際に出た案

上記の壁紙システムにはいくつかの困る点があった。

そのの中でも、最も困るポイントである
壁紙1枚に対して変数が必ず1つ必要となる
という構造の根本にある難点はなかなか手が出せず、そのままとなっていた。

 

壁紙は当時すでに250枚を超えており、当然250もの変数が必要となる。
ここから壁紙が増える場合、更に変数がほしい。

変数は他の事にも使いたい、壁紙も実装したい。
「使う変数をどうにか減らせないだろうか」
そう思った人々はいくつかの案を考えた。

 

特殊技能によって取得状態などを管理する案

当初このページに書いてあったのがこの案。

 

通常プレイではパーティメンバーにならないキャラクターを用意し、
"取得済みの壁紙No."とまったく同じID番号の特殊技能(魔法)を覚えさせる方法。

キャラクターの数を増やせば記録できる情報の種類が増えるため、
"New!を見た壁紙No."も同様に記録することができる。

そして何より変数をそもそも使わないことが大きな魅力なのだが、
RPGツクール2003の検索機能でもRPGデバッガー200Xの検索機能でも、特殊技能は検索できないのが大きな欠点となる。
つまりメモし忘れると後から探すのがクソめんどい。

多人数制作であるゆめ2っきにおいて、検索ができないというのは非常に困るもの。
他の案は無いのだろうか?と人々はより管理しやすい案を考えた。

 

変数の桁ごとに壁紙の取得状態を記録する案

そもそも、壁紙に関して記憶しておくべき情報は

  • 壁紙を取得したのか?
  • 壁紙のNew!を見たのか?

この2つだけ。
そして、取得しなければNew!を見ることもない。
数値としては 0,1,2 の3パターンだけで済んでしまう。

 

それならば、999999まで記録できる変数が非常にもったいない。
桁ごとに壁紙の取得状況を記録すれば、1つの変数に6枚分の情報が入る。

特定の桁だけを取り出す方法も、
◆変数の操作:除算,10 と◆変数の操作:剰余,10 の組み合わせで可能だ。

これなら250枚分が42個の変数に収まる。
変数の少なさ、実装のしやすさを両立する意味では良い案だろう。

 

2進数に変換して壁紙の取得状態を記録する案 (現行の仕組み)

RPGツクール2000には2進数を取り扱うコマンドやモードは存在しない。
が、別に2進数を使えないというわけではない。変換する仕組みを作ればよい。

限定的ではあるが、kuraud氏が10進数を2進数に変換し表示する構造を作成しており、
それを使うことで2進数から10進数へと変換することも可能だっただろう。
しかし、その処理は即値による多数の条件分岐や使用変数の多さなど、改良の余地が大きいものだった。

 

現実的なものとなったのはqxy氏による自販機の改変である。
購入した商品の記録に2進数が用いられており、
特定の桁の読み書きが素早く行えるような処理が組まれていた。
これならば1つの変数で19種類、商品を購入済みか記録できる。

それを見たkuraud氏は、これを壁紙の仕組みに転用することを提案。
居合わせたqxy氏が、SR分室の"既に曲を解放したか否か"は基本的に記録せず
"条件を満たしていれば解放済み"として扱う仕組み
と組み合わせることを提案した。

 

つまり"条件を満たしていれば壁紙を取得済み"とし、"New!の表示を見たか否かを2進数で管理する"構造である。
(後から再び条件が満たされなくなるものは専用のスイッチで管理される)

根本的な構造そのものから変更する必要があるため、作業にはかなりの時間を要すると思われたが、
大規模な調査、試作、改良を得て、ver0.115bにて実装された。
構造自体もSR分室と似せたものになり、新たな壁紙を追加する際の敷居も下がった。

 

おわり

  • ぶっちゃけた話、プレイ中はパッと見そんな変わってないように見えるけど実はすげーんだぜ!頑張ったヤツが向こうに居るんだぜ!って言いたかった。すげーんだぜ!! - kuraud