スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゲーム制作日記<47> 言霊システム

op.png



みなさん、こんばんは。
ネコタです。



今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介。


今回ご紹介するシステムは、パスワードシステムを応用して作った文字入力型システム、名付けて「言霊システム」です。


このシステムは、文字を入力し、任意の暗号に変換するシステムとなります。

その暗号化されたコードを利用し、様々な挙動へと分岐させるためのシステムですので、これ単体で何かできるというわけではありません。


使い道はいろいろとありますが、今回のシステムを利用した例を紹介しましょう。


tc33-01.png


ということで、4文字の言葉を入力します。


tc33-02.png


文字入力は、1文字ずつ行います。

機能的には4文字一気に入力もできますが、作成する処理が膨大になるので、勘弁してください(笑)


tc33-03.png


最初の一文字目は、『た』を入力します。
オリジナル暗号文ですので、理由は教えません。


tc33-04.png


次に、『く』を入力します。


tc33-05.png


そして、『あ』を入力します。


tc33-06.png


最後に、『い』を入力します。


tc33-07.png


暗号文は『たくあい』です。
これで、決定します。


さあ、この言霊は何を意味するのでしょうか?


tc33-08.png


このように、『たくあい』→”火”に変換されました。

わー、すごい。



という、システムです。

これだけだと、「だから?」で終わりですけどね(笑)



さて、システムの作り方を紹介していきますが、初めに言っておくことがあります。

このシステム、理屈はそれほど複雑ではありませんが、作業量が超膨大です(笑)


まず単純に、文字入力に使われる文字の数だけ暗号コードを作成しなければいけません。


ちなみに、文字数は255文字あります。
はい、条件分岐を255個組みます(笑)


次に、暗号コードを考える必要があります。

今回は、例として私のコードを紹介します。


tc33-14.png


2進数を使って、順番に番号を振っています。

あ=1
い=10
う=11
え=100
お=101

といった具合に、番号が設定されています。


そして、4文字のコードを独自の計算式に当てはめて計算し、対応する文字コードを作り出しています。

これも、自分で頭をひねって考えなければいけないので、シンドイです。
もう、コマンド入力と関係ない部分ですね(笑)



面倒くさいシステムだという事が分かったところで。

それでは、必要なモノから確認していきましょう!



【必須】
・変数×5
・アクター(名前入力用)


【推奨】
・コモンイベント×5


推奨のコモンイベントですが、無くても作れます。

無くても作れますが、イベント編集が非常に煩雑となるため、あった方がよいです。

これから説明する作り方は、コモンイベントの枠を用意して作成しています。



では、イベントの解説をしていきましょう。


tc33-09.png


まずは、パスワードシステムと同様に、名前入力用のアクターを用意します。

名前の欄はシステムで使用しますので、空にしておいてください。



tc33-13.png

≪実行内容≫
文章:なし, ウィンドウ, 下
文章言霊システムを紹介します。
文章始めに4文字の言葉を入力すると、
文章対応した意味を検索できるシステムです。
文章では、実際に入力してみましょう!
ループ
変数の操作:#0389 文字列2進数(合計) = 0
コモンイベント:文字列2進数作成(1文字目)
コモンイベント:文字列2進数作成(2文字目)
コモンイベント:文字列2進数作成(3文字目)
コモンイベント:文字列2進数作成(4文字目)
文章:なし, ウィンドウ, 下
文章『\v[381]\v[382]\v[383]\v[384]』でよろしいですか?
選択肢の表示:はい, やり直す, 文字入力をやめる (ウィンドウ, 右, #1, #3)
はいのとき
ループの中断

やり直すのとき

文字入力をやめるのとき
ラベルジャンプ:文字入力終了

分岐終了

以上繰り返し
コモンイベント:文字列2進数参照
ラベル:文字入力終了


文章や選択肢は演出ですので、適当に組んじゃってください。

最初の変数リセットだけは、忘れないようにしましょう。



システムの根幹は、ほとんどがコモンイベントで構成されています。

この後にコモンイベントの内容が出てきますが、きちんと作成すると内容がとんでもなく長くなります。

コモンイベントにして、通常の記述と分けておかないと、編集の必要が出てきたときに追記するのが面倒くさくなります。



では、コモンイベントの内容を見ていきましょう。


コモンイベント : 文字列2進数作成(1文字目)
tc33-10.png

≪実行内容≫
名前入力の処理:#0044, 1文字
変数の操作:#0381 文字入力(1文字目) = $gameActors._data[44]._name
条件分岐:#0044の名前があ
変数の操作:#0389 文字列2進数(合計) += 1

分岐終了
条件分岐:#0044の名前がい
変数の操作:#0389 文字列2進数(合計) += 10

分岐終了
条件分岐:#0044の名前がく
変数の操作:#0389 文字列2進数(合計) += 1000

分岐終了
条件分岐:#0044の名前がた
変数の操作:#0389 文字列2進数(合計) += 10000

分岐終了


実行内容ですが、まず、最初に用意したアクターの名前入力を行います。

そして、その名前を変数に格納しておきます。この変数は確認メッセージで使うだけですので、メッセージ表示をさせない場合、代入させる必要はありません。


つぎに、条件分岐で指定したアクターの名前が”あ”の時に、コード計算のために用意した変数へ値を突っ込んでいきます。

例を見て頂ければ分かりますが、私の独自計算式は単純に足し算しているだけです(笑)


複雑な計算式を用いる場合には、一時的に格納しておく変数も必要になるかもしれません。


本来は全ての文字に対して条件分岐を用意しなければなりませんが、今回の例では4文字しか使っていないので、4文字分しか作成していません。

コピペと内容編集で、頑張って255個作ってください(笑)


コモンイベント : 文字列2進数作成(2文字目)
tc33-11.png


2つめ以降のコモンイベントは、簡単です。

まず、完成した1つ目のコモンイベントをまるっとコピペします。

そして、代入させる確認メッセージ用の変数(赤枠の部分)を変えて、おしまいです。


この操作で、4文字分のコモンイベントを作成していきます。



ちなみに、コモンイベントを使わない場合には、255個の条件分岐×4=1020個もの条件分岐が並ぶので、イベントにこれを直接書き込んでしまうと後に編集するのがかなり面倒くさくなります。

なので、コモンイベントに区分けして書き込むことを推奨します。



コモンイベント : 文字列2進数参照
tc33-12.png

≪実行内容≫
条件分岐:文字列2進数(合計) = 11011
文章:なし, ウィンドウ, 下
文章その言霊は”火”です!
ラベルジャンプ:参照終了

分岐終了
注釈:何も該当しない場合
文章:なし, ウィンドウ, 下
文章その言霊は”該当なし”です!
ラベル:参照終了


最後のコモンイベントは、計算結果を条件分岐として、対応するメッセージを表示させています。

一応、工夫としては、対応するものがあればラベルジャンプを使って終了まで持っていき、対応するものが無ければ最後のメッセージを通過するようにしているくらいですね。

これで、実質的には「対応するコードが無い場合」という条件分岐のような形となります。



そして、計算結果に対するコードですが、好きなだけ考えて書き込んでいってください。

テンプレートなんかがあると楽かもしれませんね。


ここの条件分岐は、思いつく限りとなりますので、無限です。

アイディア次第では、この作業もけっこう膨大なものになるかと思います。


頑張ってください。





以上、言霊システムでした。

テクニックよりも、アイディアが必要なシステムですので、採用できる方は限られてくると思います。



ちなみに、最初の入力を2文字一緒にした場合には、分岐の文字列が2文字分となるため、”ああ”、”あい”・・・のようになります。

対応文字は255個ありますので、255×255=65025個の条件分岐が必要となります。

こんな感じで考えていくと、3文字列の場合には16581375個の分岐、4文字列の場合には4228250625個の分岐となりますので、事実上、作成不可能と言えます(作ったらすごいと思いますが、そこまでするほどのシステムかどうか、考えてみた方が良いかもしれません)。



なので、1文字ずつ入力してね!っていう結論となるわけでした。




余談ですが、私のオリジナル暗号化式では、言葉によっては複数の文字列が該当することになります。

今回の例でも、『たくあい』のそれぞれの文字は順番を並び替えても成立しますので、『あくたい(悪態)』でもいいわけですね(笑)



私のゲームでは、そういった攻略もほしいなと思っていて、そういう意図で作ったシステムだったりします。

また、派生システムがあるので、それとの組み合わせも考慮したシステムなんですね。


もし、きちんとした1対1の暗号を作る必要がある場合(完全一致のみを前提としている場合)はパスワードシステムで作った方が良いでしょう。







ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村
スポンサーサイト

コメント

Secret

No title

おつかれさまです。
たくあいって…何すか(笑)
たくあんかと思ってたらたくあい(笑)
それが気になってしかたない(笑)

ピラミッドのギミック…
合言葉を言わないと通してくれない
スフィンクスとかで使えそうですね。

でも65000通りの条件分岐は無理です(笑)

Re: No title

いつもありがとうございます。

たくあいは、託愛と書きます(笑)
というか、意味はないんですけどね。


合言葉なら完全一致になるので、パスワードシステムの方がよさそうですです。
プロフィール

猫民のんたん

Author:猫民のんたん

ネコタ:ゲーム作りが趣味の薬剤師。本職とゲーム作りの2足の草鞋を履きこなそうと日々奮闘。

毎週曜日と曜日or曜日に更新予定。


ミノン:ゲーム作り初心者で1児の母。前職はSE/PG。子育てをしながらゲーム作りを行おうと、日々奮闘中。

毎週曜日にブログ更新予定♪

最新記事
最新コメント
月別アーカイブ
カテゴリ
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。