- パチセブントップ
- コミュニティ
- パチ7自由帳トップ|ブログコミュニティ
- コラム(ブログ)詳細
「スロットのリール制御」を作ってみる。
「スロットのリール制御」を作ってみる。
-
sin sparkさん
面白いものを作る人になりたい。 ちょっとプログラミングができるアクロスおじさんです。 - 投稿日:2023/06/26 23:59
ご無沙汰しております。sin sparkです。
近ごろ新作のオリスロ創作モチベが高く、ごりごり進めています。
ここで稼働に全然行っていないのは言っちゃだめです(
して、今手にかけているのはリール制御です。
ここをどれだけこだわるかで、新作の面白さが半分くらい決まると思っています。
もう半分は、これから作る演出とどのように組み合わせるか、でしょうか。
ただ、シンプルにリール制御を作るだけなら前作のTriSparkで既に実現しているし
改めてこんな大それた記事は書きません。事実作ったリール制御に欠陥は
(自分のデバッグでは)見つかりませんでしたし、満足のいくものでした。
ではなぜ私は、この記事を書いているのでしょう。
それは今私が作っているのが、「次回作のためのリール制御」ではないからです。
今私が作っているものは…
「スロットのリール制御」そのものです。
分かりやすく言い換えると、「リール制御を作るためのツール」を作っています。
考えるより見る方が早い、まずはメイン画面のスクリーンショットをどうぞ。
【このツールでできること】
・チップ画像読み込み
→ 基本サイズ:660×300[px]
・リール配列作成
・有効ライン / キャスト作成
→ 3リールチェリー・ANY・規定数(=BET数)個別の有効ライン設定可能
・フラグ作成
→ 作成したキャストを複数組み合わせて小役フラグを作成。複雑なキャスト定義も可能
・乱数テーブル定義
→ 最大8種類のRTテーブル対応。規定数/モード毎に乱数テーブル設定可能
・メインROM管理のフリーズ定義
・リーチ目定義
→ 各第一停止箇所で個別にリーチ目作成可能。共通・BB確をサポート
・リール制御定義
→ 定義したリーチ目の回避・引き込みをサポート
…あれ、書き出してみるとリール制御だけではなかったですね((汗
これじゃまるで「スロットの本質」そのものを作っているようです。
せっかくなので、主要な機能の大まかな解説をしてみましょう。
もっと厳密に描くと取扱説明書になるんですけど、そのドラフトといった所になります。
すごく雑ぱくな文書を書いた自信があるので、質問があればお気軽にコメントをください(((
※以降、次回作のネタバレを避けるため公開できない情報は塗りつぶしにて検閲しています。
【有効ライン / キャスト作成】
画面左上で有効ラインを最大6種類まで視覚的に定義できます。
設定した有効ラインから、各規定数で使用するデータを選んでスロットを組み立てます。
画面下部では図柄の組合せを指定し、払い出しまたはボーナスの始動を定義します。
この画面には出ていないですが、各リール複数の図柄を選定できます。全選択でANYにも。
実は配当の定義順を工夫することが必要です。なぜかは次のトピックで分かります。
【フラグ作成 / 乱数テーブル定義】
画面左側が「フラグ作成」を行う画面です。フラグ名を決め、成立するキャストを定義します。
ここで成立キャストには「連続したデータを複数登録できる」という特徴があります。
例えば画面のB2、いわゆるベルBはベルと1枚役Aの重複としています。
PC、すなわちチェリーは10種類あるチェリーのキャストをすべて重複させています。
必要なデータを重複できるよう、キャストの登録順を工夫してやることが重要になります。
画面中央が「乱数テーブル定義」を行う画面です。中身は簡単、フラグ確率の指定ですね。
ボナに成立ボーナスを指定することで、単独・重複のボーナス成立を定義することが可能です。
ボーナスが成立しないリプレイのみ、抽選対象とするRTモードを選ぶことができます。
例えばRT0, RT1, RT2それぞれの乱数を定義しておくと、リプレイ以外のフラグと併せて
抽選を行うことでRTごとにハズレ確率を変動させることができる仕組みになっています。
ユーザは「ハズレ」の確率を定義できません。全フラグの抽選漏れを「ハズレ」と扱います。
【リーチ目定義】
第一停止箇所を指定したうえで、視覚的にリーチ目の作成を行います。
画像はみんな大好き右上がりボーナステンパイの定義です。(新作でも2確目です!)
ここで2確目は「小役の揃わない小役ハズレ目」として定義を行います。
もちろん3リールから構成されるリーチ目(中段リリべ)なども定義することができます。
定義は並び順により「共通」と「BB確」の2種類を選択できます。
リーチ目に載せる図柄は、組み合わせテーブルにより複数選ぶことが可能です。
例えば「7/A/うさぎ/BAR」の組合せを定義すると、ボーナス直線の形が容易に定義できます。
【リール制御作成】
仮にもタイトルが「リール制御を作ってみる」なので、ここは詳しく語りましょう。
リール制御は「第一停止」「第二停止以降」から構成されます。
リール制御を定義するために、システムは以下の情報を使用します。ここまでの集大成です。
①すべりコマデータ
②キャスト(配当)および成立フラグ
③停止位置データ
④リーチ目データ
リール制御は、下記のようにして決定します。
文字だけだと分かりにくいので、いずれもっとわかりやすい説明を設けるつもりです…。
1. ①すべりコマデータにて、採用するすべりコマに評価優先度をつける
すべりコマデータは「21コマの規定すべり数」と「すべり増分」から構成されます。
例えばあるコマの規定が2コマ、増分が3の場合、すべりコマ数の評価優先度は
「2→0→3→1→4」の順で行われます。計算は「加算して5で割った余り」によります。
2. ②キャストおよび成立フラグから、払い出しが最大となるものを抽出する
停止可能な0~4コマのスベリにて、成立フラグが最も引き込める位置を確認します。
最も引き込める位置以外のスベリ数を評価から除外して、最大限の引き込みを実現します。
併せて、第三停止の制御を行う場合は非成立フラグの入賞回避を行います。
この評価で停止できる位置が無くなってしまった場合、判定結果をエラーとします。
本評価をリーチ目評価等の前に行うことで、リーチ目より引き込みを優先させています。
3. ③停止位置データにより、特定図柄の回避または引き込みを行う
例えば第二停止で2確目や小役ハズレ目を回避する場合に本定義を使用します。
画像右下が定義画面の例で、逆押し時のリプレイ定義を行っています。
左リールのチェリー位置の関係でリプレイは絶対に右上がりに揃ってほしいため、
画像では左リール下段に「リプレイ"以外"を停止させない」旨の定義を行っています。
4. ④リーチ目データにより、リーチ目の引き込み・回避を行う
予め成立フラグにリーチ目の停止可否、および引込・回避を設定しておきます。
第三停止限定で停止結果がリーチ目かどうか判定、状況により優先・回避を行います。
ボーナス成立時にリーチ目停止フラグを設定することで、
最終的には自然にリーチ目が停止するよう工夫がされています。
いかがでしたでしょうか。
思えば自由帳でオリスロの進捗を書いたのって、これが初めてかもしれません((汗
このツールは現在、新作の制御を打ち込むのと同時にデバッグを行っています。
一通り新作のリール制御が納得いくものになったら、せっかくいいものができたので
このツールは公開したいと思っています。誰か取扱説明書を作ってくだs((殴
ちなみに制御作成ツールを作るのはいいんですけど、このあと作成したデータをもとに
スロットを動かすゲームエンジンとか、演出データとかを作らないといけないんですよね…。
まだまだ先が思いやられるので、とりあえず筐体イメージだけは作っておいてあります。
……次回の報告をお楽しみに。
3
sin sparkさんの
共有する
このコラムへのコメント(2 件)
ありがとうございます。
流石に複雑すぎて全く説明できなかった感が((汗
本文と関係ねえなコレ(笑)