日本のパチスロ(回胴式遊技機)の内部構造 —— 内部抽選・リール制御・状態機械 —— を学び、遊べるシミュレータ。 WebUI で機種仕様(役・リール配列・RT・ストック・ナビ…)を設定して保存すると、そのままオリジナル機種として遊べる。 「だれでも」機種が作れて、作った機種は URL 1 本で共有できる。
- 実在機種の再現ではありません。 実機の ROM データ・抽選テーブル・リール配列・図柄・サウンド等は一切使用していません
- 換金・課金要素はありません。 プレイマネーのみの教材・おもちゃです
- 実機に対する攻略・解析を目的とした機能は含みません
ブラウザで遊ぶ: https://sr2mg.github.io/daredemo-slot/
ローカルで起動する場合:
npm install
npm run dev # http://localhost:5173| 操作 | キー |
|---|---|
| MAX BET | B |
| レバー ON | Space |
| 左・中・右リール停止 | J・K・L |
(すべてボタンクリック / タップでも操作可)
機種選択の横にある ⛶ 大画面 を押すと、Chrome の表示領域に合わせて筐体とリールを再レイアウトする。 3840×1600 などの高解像度モニターでは、CSS の拡大コピーではなく目的サイズで再描画するため、高精細なまま大きく遊べる。
UI は 4 つのタブに分かれている: 🎮 あそぶ / 🎵 サウンド / 🔧 機種づくり / 🔬 検定・実測。
-
プリセット 6 機種 — 4 号機時代の代表的な「型」を 1 機種ずつ再現(仕様はオリジナル):
機種 型 学べること サンプル A タイプ ボーナスのみの王道 内部抽選・引き込み制御・リーチ目の成り立ち サンプル AT 機 押し順 AT(獣王型) メイン抽選と独立したナビ層(サブ基板)、押し順ベル 3 択 サンプル ストック機 ストック + 蓋(吉宗型) ボーナスの貯留と放出モード(通常/天国)による連チャンの波 サンプル SB ストック機 シングルストック(サラ金型) 純ハズレ解除と毎ゲーム自動放出ゾーン サンプル CT 機 チャレンジタイム 目押しできる人だけ得をする技術介入 サンプル 集中機 C タイプ(3 号機) 4 号機で禁止された「集中役物」の歴史教材(適合試験に落ちるのが正しい機種) -
設定 1〜6 — 基底テーブル(設定 1)+ 差分オーバーレイ方式。「設定?(ランダム)」でホール気分も味わえる
-
告知演出モード — 告知なし / ボーナス成立で点灯 / 放出可能で点灯 を切り替え
-
教材モード — 「成立フラグを見る」で内部抽選の結果と制御対象を覗ける。さらに:
- 強制フラグ: 次のレバー ON で任意の役を強制成立(リーチ目や制御の観察に)
- 即入賞: ボーナスを強制成立 + 完全打ちで即揃え(目押し練習を飛ばして状態遷移だけ見たいとき)
-
遊び方ガイド — 機種ごとの狙い所・波の作り・スペック表。カスタム機種は定義から自動生成
BGM は曲ごとに OPLL(YM2413) または ファミコン 2A03 を選べる。効果音・操作音は OPLL。どちらも当時の音源制約に沿った内蔵レンダラーで鳴らしている。
- BGM 作成 — コード進行・音源・尺・テンポ・キー・スタイル・シードを選んで作曲。同じシードからは同じ曲を生成する。OPLL はパートごとの音色、2A03 はパルス 2ch のデューティを調整できる
- BGM 割り当て — 自作曲・プリセット曲を BB / RB 中の BGM に割り当て。曲の保存実体は作曲パラメータのみ(数百バイト)
- 効果音作成 — サウンドデザイン理論のレシピ(確定 = V→I の完全終止、操作確認 = 完全 4 度上行、警告 = トライトーンへのベンド…)から効果音を設計し、ゲーム内契機(ベット・レバー・停止・払い出し…)に割り当て。既定の効果音もすべて同じレシピ製
- サウンドテスト — 全効果音・BGM の単体試聴
難度別の 4 ティアエディタ。どのティアで作っても同じ機種定義 JSON に落ちる:
- かんたん(ウィザード) — タイプ・甘さ・波を選ぶだけ。出玉設計と配列は自動生成し、適合試験に通るまで自動リトライ
- ふつう(つまみ調整) — 抽選テーブルの重みやボーナス性能をつまみで調整。理論機械割をライブ表示
- 上級(構造から作る) — 役・図柄・リール配列・RT・蓋・ナビまで構造化フォームで自作。配列は制約を与えて自動生成(焼きなまし)も可
- JSON — 機種定義を直接編集
- 逆算ソルバー — 目標機械割を指定すると抽選テーブルを自動調整(二分探索)
- 保存時検証 — 構造検証 → 配列総当たり検証(蹴飛ばし・リプレイ取りこぼし)→ スペック実測 → 適合試験、をすべて通してから保存
- 共有 — 機種定義を deflate + base64url で URL ハッシュに埋め込み(
#m=...)。サーバー不要で 1 本のリンクとして共有できる。JSON エクスポート / インポートも可
- スペック実測 — 適当打ち / 完全打ちの機械割をモンテカルロ実測(両者の差 = 技術介入度)
- 配列チェック — 全停止位置の総当たりで、蹴飛ばし失敗・リプレイ取りこぼしを検出
- 適合試験(試射試験風) — 4 号機基準(400G ≤ 300% / 6000G ≤ 150% / 17500G 60〜120%)の出玉率チェックを Web Worker プールで並列実行。シード焼き込みで並列でも結果は決定論
リール図柄と筐体パネルは AI 画像生成 + 後処理パイプラインで差し替えられる:
npm run symbols -- sheet.png --grid 4x2 --names seven_red,bar,... # 背景除去 → 切り出し → 32 色量子化 → 検証
npm run panel -- panel.png # 筐体上部パネル
npm run symbols:check # 既存アセットの機械検証生成プロンプト仕様・様式ルール(4 号機期の印刷シール調、規格根拠つきの横長 1.6:1)・権利ルールは docs/asset-prompts.md を参照。採用した生成物はプロンプトごとコミットする(曲のシード保存と同じ「再現手順ごと残す」思想)。
- 実機データ不使用 — 抽選値・配列・音・絵はすべてオリジナル。様式(4 号機らしさ)だけを理論と公開規格から再現する
- 決定論 — RNG は Xoshiro128 のシード指定。作曲・効果音・適合試験まで「同じ入力 = 同じ結果」で、保存物はパラメータだけ
- 当時の制約ごと再現 — 音は OPLL / 2A03 のチャンネル制約内、絵は少色数の印刷シール調。制約が様式を作る
- コアは純関数 — 抽選・制御・状態機械(
src/core/)は UI 非依存で、Node からもブラウザからも同じに動く(テストが速い理由)
| ドキュメント | 内容 |
|---|---|
| docs/design/00-overview.md | 全体像: パチスロ内部構造の 5 軸モデルとコンポーネント構成 |
| docs/design/01-machine-model.md | 5 軸モデル詳細と機種タイププリセット |
| docs/design/02-lottery.md | 内部抽選エンジン(フラグ・テーブル解決・持ち越し) |
| docs/design/03-reel-control.md | リール制御(引き込み・蹴飛ばし・打ち分け) |
| docs/design/04-reel-layout.md | リール配列の制約・検証・自動生成 |
| docs/design/05-config-schema.md | 機種定義 JSON スキーマ全解説 |
| docs/asset-prompts.md | 画像アセットの生成プロンプト仕様と権利ルール |
npm test # 高速テスト(数秒。ロジックの性質テスト中心)
npm run test:all # 全テスト(実測系・レンダリング系の重いテスト含む)
npm run typecheck
npm run buildテストは fast / slow の 2 層。日常は npm test、出玉調整や音源まわりを触ったら npm run test:all を回す。
MIT。同梱するサードパーティコード(OPLL 音源コア emu2413 = MIT)の表記は THIRD-PARTY-NOTICES.md を参照。