汎用的に使えるガチャシミュレーター2

どうも、つい10分前にダイヤ3000くらいがチャ回して☆3しか出なかったマントマンです
まあ10回未満で出る方が運がいいので、しゃーないが…
活躍度達成する分(☆4を1枚以上)くらいはでて欲しかったなー

結構前の記事で書いた通り、課金を今月バイト給料入るまで出来ないので…
これ以上追撃したくてもできない…

あーガチャしたい…ガチャしたい…ガチャしたい…
そうだ!こんな時はがチャシミュレーターをやってガチャッた気になるお

…ということで、ちょっと頓挫してた汎用的に使えるガチャシミュレーターの作成を再開しようかなと
自分が暇があればアイギスのガチャシミュレーターとかやってる人間なんで、自分のためにも作っといたほうがいいよなw

記事と言うかほぼ自分用のメモになると思うが作成状況まとめてみる


まずこれまでの経緯を振り返ってみると

こちらの記事で一応、.iniファイルにデータを持たせてそれを読み込む型の汎用シミュレーター作ったんだが
思いっきり失敗して、失敗した理由としては
 
 ・IEのセキュリティで.iniファイルの読み込み処理が弾かれて動かん
 ・そもそもダウンロードしてローカルで動かすとか面倒
 ・.iniファイルの設定が面倒

…ということがあったので、それを反省して
「ダウンロードは不要でオンライン上で動作するようにする」
と言うのを大前提とすることに決めた

そんで作ったのがオンラインで動作するDGのガチャシミュレーターで
こっちの記事にまとめてあるように、色々なガチャを量産することに成功した(`・ω・´)

仕組みとしては

2015081301jpg.jpg

カード名や確率の設定をしてある変数の値を変更するだけで、別のガチャとして動作できるようなコーディングをする
該当箇所以外は変える必要がないので、あとは公式とかからカード名の一覧をコピッて入れ替えればいいだけ

ただ、これは…
俺自身がガチャの作成を楽するための仕組みであって、実際ホームページに来てくれる人がjsファイルをいじれるわけではないから
結局俺がいろんながチャを用意する必要があるのであって、当初の目標だった「どんなゲームでも使えるような汎用シミュレーター」とは違う

そこで、俺以外の人がガチャの設定を変更できるようにするにはどうしたらいいか考えたところ…
入力フォーム作って、確率とかカード名を入力してもらって、それを動かすしかないよねって言う結論に
何でこんな基本的なことを今まで無視していたんだろうか

と言うわけでサクッと作ってみたのがこちら

http://blogdivine.web.fc2.com/hanyogacha.html

レイアウトが糞だったり、処理がガバガバなのはテスト段階と言うことでご容赦いただくとして…
初期値だとカルヴァの不動祭パックのシミュレーションができる

2015081302jpg.jpg

↑みたいに設定値を変更することで…

2015081303jpg.jpg

ガチャからフェニックスやセラフィムが出るように変更できる
当然、項目を全部入れかえればダイヤパックの内容に変更したりとかもできる
これしか機能がないので正直全然面白くはないですが、一応方向性としてはよさそうに見える

ただ、解決できない問題点がかなりたくさんある;;
1.データの保存ができない
2.50連ガチャとかに対応できない
3.ブースターパック形式に対応できない

まず1のデータの保存ができないだけど
例えば、ガチャの内容を不動祭パックからマジカパックの内容に直したとして
次の日にもう1回マジカパックをシミュレートして遊ぼうってなった時に、また1からデータを書き換えないといけない
正直面倒にもほどがある

なので1度作ったデータは何とか保存して呼び出せるようにしたいんだが、1番いいのはサーバに設定を保存出来てそれを呼び出せるって感じっすね
設定ファイル的なのをサーバ上に作成するか、もしくはDBに情報もたせることになると思うが、正直言って面倒くさい><
FC2ホームページでサーバサイドのプログラム動かすことができないし、別でDBサーバ立てるとか考えたくもないし
なので、なんとかクライアント側でデータを保管させて呼び出せるような仕組みがいいよね

解決案1
セーブデータファイルをPC上に出力する機能を作成し、それを読み込むと保存した設定が画面に反映される
→セーブデータを保管するとか面倒くさいボツ

解決案2
HTMLファイルを出力する機能を作成し、そのHTMLファイル上にあるリンクをクリックすると保存した設定が画面に反映される
JavaScriptでリンクを開いて、さらにフォームにデータを入れるってのは結構容易っぽいので実現は出来そう
→HTMLファイルを保管するとか面倒くさいボツ

解決案3
フォーム上のデータを格納したURLを出力し、そのURLパラメータから値を読んでフォーム上にセットする
これは実際に作成してみた

2015081304.jpg

画面下のURL作成ボタンを押すとURLが作成されて、そのURLから飛ぶとデータがセットされている

例えばガチャの内容を九十九姫のガチャに置き換えてみた場合のURL↓
http://blogdivine.web.fc2.com/hanyogacha.html?kazu=3&hikeru=1&name1=金&cards1=翠玉kgr小貝姫kgr干将kgr莫耶kgr天照&kakuritu1=4&name2=銀&cards2=翠玉kgr小貝姫kgr干将kgr莫耶kgr天照kgr卯娘kgr辰娘kgr巳娘kgr五月雨&kakuritu2=60&name3=鉄&cards3=翠玉kgr小貝姫kgr干将kgr莫耶kgr天照&kakuritu3=36

この形式だといいのは、URLがわかればみんな使えるので作ったガチャを他の人に公開できるって点
まあ…そんな機会はないって言われれば確実にそうだと思うが…

あと問題になるのはURLの長さで、URLは2000字までという制限があるらしいので
アイギスとかみたいに出現カードが半端なく多いやつだとエラーになるかも…
それにURLを管理するのも面倒だしね
と言うわけで没に

解決案4
フォーム上のデータをCookieに突っ込んで、次にページを開いた時にそれをロードする

これも実際に作ってみた
先ほどのURLのボタンの右のボタンを押すと現在の設定内容がCookieに保存されて
ブラウザを落として接続し直してもフォームの内容が復元される

まあー実際に使うとしたら、自動でCookieから読むんじゃなくて「ロードする」みたいなボタンも作ったほうがいい気がする

ただ、この方法はさらに問題点が多くて、まずCookieは常に上書きされるから履歴を持てない
つまりセーブ数が1つしかないってことで以前に作ったがチャをやろうと思っても無理
まあ作りこめば過去何回かのデータを全部持たせられるから、選択肢だしてどのデータロードするか選ぶみたいのもできるけど
その莫大なデータにCookie耐えられるんか?

さらに問題なのがセキュリティっすね
ブラウザの設定でCookie保存しないようにしたり削除したりする設定にされてたらアウト
どうしようもない
どう考えても没です

解決案5
………
………………
………………………

もう思い浮かばねえよ!
オワリ
頓挫じゃねえか…

と…とりあえず、この問題は後々に解決するとしよう…(震え声)

さて残る問題は
2.50連ガチャとかに対応できない
3.ブースターパック形式に対応できない
だが…

長くなったので後日にしよう
こんなチラ裏記事を続き形式にすることになるとは…