ちょっと前に、もうプレイできないはずのハー子がプレイできるようになりました、ということで、もうこのタイミングしかないハー子解説その1。その2があるかは不明。
かなり前にメールで頂いた『こういうのを作ってみたいがどうやって作るのん』みたいな問いに対して書いた返信を一部編集して貼ってみます。
===
ご質問のスロットゲーム作成方法についてですが、
ハー子はFlash(ActionScript2)で作成されています(ランキングシステムはCGI)。
Flashの勉強ということで、手探りで作っていたのであまり美しくないですが、ざっくりとした考え方、仕組みは以下となります。
(1)スコアを球数に見立てて、ランダムで消費してドラムが回転します。
バラバラになるように、回転が早くなるタイミングでドラム数値をランダムに飛ばしてます。
※補足:分かりづらい説明。最初数字が揃ってるドラムは、薄く速くなるタイミングでランダムで別の値になる、ってこと。
(2)1~100くらいまでのランダムの数値を生成して、ステップアップ予告に振り分けます。
JSでも似たような感じだと思うのですが、Math.round (Math.random () * 100) + 1; とかです。
ステップアップ予告というのはハー子でいうと、食堂にロウソクが増えたりとか、幽霊が現れたりとかで、5段階くらい。この変数にハマリ回転数を足してあげたり、ハマリ防止とかしてます。
(3)ステップアップ予告が高期待度なほど、『各種リーチへの振り分け変数』(『リーチ変数』とします)が多くなります。
(4)ドラムが2つ止まります。リーチ変数によって、確実にリーチになる処理をします。
例えば2つ目のドラムの回転がゆっくりになる瞬間に、1つ目のドラムの数値を参照してドラムを調整する、
といった感じです。
または、ドラムの回転を調整せずにたまたま(1/12)リーチになります。
ドラムそれぞれが変数をもっていて、
if(drm1 == drm2){} というように、ifで比べて同じなら、って仕組みですね。
というかハー子は概ねifとelseで構成されています。
まずはこのドラムの処理やコントロールが壁だったりしました。
今ならスクロールするドラムとかも作れるとおもいますが、当時はこれが精一杯。
(5)リーチ変数によってリーチの振り分けをします。
ノーマル、ハー子、ダブル、トロル、ホウキの5種類。
一番最初の公開ではノーマル、ハー子、トロルだけでした。
リーチ変数に、リーチ時の特殊演出(カットインとか特殊音)を加味してうまいこと振り分けます。
(6)各リーチは、作った時期が違うのでそれぞれ仕組みが違ったりするのですが、
基本的には『乱数を作って、その数値によって振り分ける』という方法でやっています。
プログラム的なご質問だと思うので、演出については割愛します。
(7)当たり演出だとか、タイマーやスコアなど、ゲーム的な体裁をなんとか整えていきます。
上記の方法は、思いつくままに足していけるのはよかったのですが、最終的なデバッグの際、当たり確率や、各リーチの確率を調べるのが大変でした。
今やるとすれば、一般的なスロットやパチンコのように、最初にまず当りかはずれかだけを1/256等でつくって、
その先はそれぞれの演出ごとに細かく確率を調整する方式をとるかと思います。普通そうなんです。
例えばハー子が杖を振るリーチの場合
当たりフラグが発生しているならばプレミア演出を1%、やり直し発生率を19%、当たり率を80にして、
やり直しが発生した場合同じ当たりフラグ抽選をもう一回繰り返す。
ハズレフラグの場合はやり直し発生率を20とかにして、ハズレルートに飛ばすだけです。
例があまり良くない気もしますが、この辺りはパーセントでの管理ができるよう意識すれば後々ラクかと思います。
パチンコはかなり単純で、全体的な当たり確率、確変率だけちゃんと意識してればあとは演出を頑張るだけかと思います。
最近はパチも色々なモードがあってユーザを飽きさせない努力に暇がないかと思いますが、ハー子を作ったころは世間のパチも結構こんなもんだったりしました。
確変率を50%にするなら1/512で1がでたら普通当たり、2なら確変当たり、とかラクちんですね。
当たり率を1/500、確変率を70%とかにしたいなら別々でフラグを用意するのもありです。
演出によって確変率が高いとか楽しげです。
この辺ハー子はなんとなくでやってるので厳密には1/2で確変ではありませんし、本職がプログラマーというわけでもないので、上に書いてみた方法が正解なのかもわかりません。
ハー子については、あくまでも内部処理的な話ですが
「もう本当はコレはずれてるんだよなー」というのではなく「ここまできたぜ! この先もいけるかな?」
ということがあって楽しかったりします。
パチンコとかスロットとか4号機とか5号機とかペイアウト率とか色々あるのですが、スロット(ボタンを3つ押すやつ)は、フラグの管理やドラム制御などがかなりめんどくさいわりに、それがユーザ的にどうかという面もあって躊躇しているうちに、
いずれ自分がパチンコ・スロットから離れてしまい、結局作りませんでした。
久々にハー子のことを考えたらちょっと面白かったので長文を書いてしまいました。
一番大切なのは
「ハー子まじ天使(賢者の石時)」「プログラム的なことしてみたいかも」「パチンコおもすれー」
とか、こんなもんです。
これだけで、おそらく***さんと同じくらいの頃に知識ほぼゼロから作りだしました。
ということで制作応援しております!
===
とか。懐かしい……。
懐かしいついでに影響を受けたパチンコについて。
・CRモンスターハウス
初めてホールで打ったパチンコがコレでビギナーズラックで当たってしまいその後しばらくやることに……。これで当たってなかったらハー子は作られてない可能性がありんす。10,11,12が確変数字でキャラクターの絵柄になってるのは完全にコレがベース。
・CRピンクレディー
デフォルメキャラがすごく可愛くて、曲と演出も良くて大変リスペクトしてる。これとか初代バカボン、ミニスカポリスの時代に打ってて、ステップアップ予告とかダブルリーチとかはこの頃のダイイチ機の影響がけっこうあります。ハー子を作ったらパチンコ欲みたいなものは完全に落ち着いた思い出。