遊技機開発ならではのノウハウ　【パチンコ】

# 概要
一般的なゲーム開発と共通する作業が多いと思われる遊技機開発ですが、特有の開発フローや開発手法が多くあります。

私自身、数年前の仕事で複数のパチンコ / パチスロ プロジェクトのメインプログラマー・サブプログラマーを経験しましたが、苦労する事が多くあり、徹夜の残業続きでボロボロになっていました。
昨年のUnite 2019で「[Unityでこんなに変わった！ぱちんこ映像開発ワークフロー](https://learning.unity3d.jp/3318/)」を拝聴し、現在では開発フローや手法が効率化され、改善されている事に感動しました。

旧来の開発フローや手法ですが、用語の解説も合わせてザックリと紹介します。
 *※ 秘密保持契約（NDA）に基づき、すでに公開済みのものや独自にないし別ソースから入手されたものなどの紹介です。*

**Unityでこんなに変わった！ぱちんこ映像開発ワークフロー - Unite Tokyo 2019**
https://www.youtube.com/watch?v=fQfpEbEyKro

> **メインプログラマーとは**
仕事内容 は主にパチンコ・パチスロの当り、ハズレを判定するプログラムを設計します。言語はサブプログラマーとは異なり、かなり昔のプログラミング言語であるアセンブラ言語（Z80）を用いてプログラミングします。また、遊技機知識を中心とした法知識も必須となります。

> **サブプログラマーとは**
仕事内容は 主にパチンコ・パチスロの液晶映像部分のプログラム設計を行います。企画や映像企画が考えたアイデアの実行役として、プログラミングを行う仕事です。そのほかに、遊技機開発を効率的に行うための社内開発ツールの制作や出玉設計と連携を図りながら出玉シミュレーターツールを制作するなど、幅広い業務を行います。プログラミング言語はCやC＋＋です。

## 参考になる本
『[CGWORLD (シージーワールド) 2013年 01月号 vol.173 雑誌](https://amzn.to/3y5HoWk)』

# パチンコ開発について

パチンコの開発フローについてまとめます。スマートフォンのアプリ開発とは異なり、実機での確認にはかなりの時間がかかる開発フローでした。現在では、Unityの導入でかなり開発効率が上がったようです。

## 開発フロー

<img width="748" alt="スクリーンショット 2020-03-01 19.16.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/52e7acd8-cf87-fbe4-121c-cb23656eedd1.png">

### 企画
パチンコ・パチスロのゲーム性やシステムなどを企画立案します。機種のコンセプトやテーマを企画して、出玉設計やデザイン、サウンドといった幅広い部署と密に連携をとりながら、開発業務全体の全工程を考えます。

> **出玉設計**
 パチンコ・パチスロのスペックを算出します。パチンコでいえば大当り確率や確変突入率、大当り時のラウンド振り分け等、出玉仕様をつくりあげることが出玉設計の仕事です。また、パチスロの場合は、ボーナス確率や小役確率の設計はもちろんのこと、プログラマーと一緒にシミュレートすることで数値の微調整を行い正式な数値をつくります。ほかにも、リール配列作成や停止制御作成の業務もあるため、プログラマーとの密な連携が求められる仕事といえます。

### サンプル作成
 パチンコ・パチスロの企画に基づいた映像演出のアイデアを立案します。アニメ制作のように絵コンテやタイムテーブルなどを作成し、企画や映像制作、サブプログラマーと連携を図りながら作業を進めていきます。

### 素材作成
サンプルで考えたアイデアを元に、AfterEffectsを使用して、パチンコ・パチスロに使用される画像データを作成します。

**図柄表現のつくりかた**
[第1回 「企画＆ベースデザイン」](https://cgworld.jp/regular/1406-polygonmagic.html)
[第2回 「図柄のモデリング」](https://cgworld.jp/regular/1407-polygonmagic02.html)
[第3回 「オーサリング（前篇）」](https://cgworld.jp/regular/1407-polygonmagic03.html)
[第4回 「オーサリング（中篇）」](https://cgworld.jp/regular/1409-polygonmagic04.html)
[最終回 「オーサリング（後篇）」](https://cgworld.jp/regular/1410-polygonmagic05.html)

[遊技機映像のプロが解説 遊技機向けモデリングTIPS](https://cgworld.jp/feature/1402-directionseeds.html)

オーサリングツールについては別でまとめます。

### 実機化・プログラム
液晶開発、電気回路設計、ランプ制作を作成します。
「[潜入!SANKYO調査隊!～開発篇～](https://www.youtube.com/watch?v=mEOyjJy8vNo)」が分かり易く動画でまとめられています。

**潜入!SANKYO調査隊!～開発篇～**
https://www.youtube.com/watch?v=mEOyjJy8vNo

### 実機確認
デバックはもちろんのこと、開発されている機種の仕様チェックや動作確認のために実際に打ち込み検査していきます。

## 開発基盤
パチンコの主要なLSIについてまとめます。
(もしかしたら、現在は別の物が使用されているかも知れません...)

### 「AG」シリーズ
「AG」シリーズの強みは、高圧縮・高画質の独自画像コーデックとハイパワーなグラフィックス機能です。現在はそれら機能も強化しつつ、サウンド、LED/モータ制御などマルチな機能をワンチップに統合されています。パチンコ・パチスロ機の演出全体を支えるLSIに進化しています。

参考：
https://www.axell.co.jp/business/semiconductor.html

### 「GP」シリーズ
GPシリーズは、パチンコ機、パチスロット機向けのリアルタイムデコード方式のパターングラフィックスVDPです。高性能動画デコーダを搭載し、専用のオーサリングツールを使用することで、効率良くクリエイティブなグラフィックス開発が可能です。

参考：
http://device.yamaha.com/ja/lsi/products/graphic_controller/

## オーサリング
制作した映像素材を遊技機に正常に表示させるための映像制作・編集作業をオーサリングと言います。
また、遊技機開発に於いて、制作に最も時間がかかるのは、液晶開発です。

### オーサリングツール
遊技機映像を制作するのに必要不可欠な代表的なツールについてまとめます。

#### Photoshop
adobeのグラフィック編集ソフトで写真の加工、合成の他に絵を描くことも可能なソフトです。
遊技機映像でも図柄制作、テキスト制作、筐体イメージ、等に多くの作業で使用します。

#### After Effects
adobeの映像加工ソフトで、モーショングラフィックスや、動画映像の加工や合成といった作業に特化したソフトです。複雑なエフェクトの細かい設定ができ、パチンコ・パチスロ遊技機の液晶演出において幅広く利用されています。
拡張プラグインの「[Trapcode Particular](https://flashbackj.com/product/trapcode-particular)」で様々なエフェクトを作成することが出来ます。

#### Maya・３dsMax
遊技機映像は、液晶画面のサイズアップ、表示機能の高性能化に伴い、より一層綺麗でハイクオリティーな3次元的なエフェクト表現が求められるようになりました。Maya・３dsMaxは効率よく3次元的のエフェクト表現を制作できる３DCGソフトです。遊技機でよく行われる版権キャラのCG化は演出用のオリジナルムービー制作に効率がよいです。最近では、セル風アニメ制作にも３DCGソフトが使われています。

### ムービーデータの仕組み
ムービーデータは、何枚もの絵がパラパラ漫画のように連続しているものであり、その中の一枚一枚の絵を「フレーム」といいます。
![1234098.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/10542f4a-4a0b-c410-5a1f-a94b25ee8b1c.png)
fps(frames per second)フレームレートは、１秒間に何枚の画像を表示するかです。
ムービーデータは「圧縮のアルゴリズム」を使用して、色々な方法で圧縮します。

#### 圧縮のアルゴリズム
主に以下の2種類に分類できます。

1. フレーム間で似たような部分を圧縮する方法（フレーム間予測）
フレーム間にある無駄な情報を圧縮する方法を「フレーム間予測」と言います。
2. フレーム内の情報を圧縮する方法（フレーム内圧縮）
1つのフレーム内で無駄な情報を圧縮する方法のことを「フレーム内圧縮」と言います。

#### Iフレーム･Pフレームの違い
「Iフレーム」は、他のフレームを参照しない完全に独立したフレームであり、このフレームのデータだけで再生が可能です。これに対し「Pフレーム」は、直前のフレームから変化した差分のみをデータとして記録しているフレームになります。Iフレームは独立したフレームなので単独での表示が可能ですが、Pフレームは、参照するIフレームなしに表示することはできません。Iフレームが少ないと、部分的情報で済む画像が多くなるので、動画サイズが小さくなります。

### リーチ映像演出の仕組み
パチンコ機において、予め行われる抽選の結果に応じて、複数の図柄群に含まれる図柄を各図柄群ごとに変動表示し、順に図柄を停止表示した後、抽選結果が大当たりの場合には、最終的に特定の図柄の組み合わせを表示するように各図柄群の図柄を停止表示にします。

リーチ演出では、ノーマルリーチ（最後に停止表示される図柄群の図柄が低い確率で大当たりの図柄となるリーチ）から、一定の割合でスーパーリーチ（最後に停止表示される図柄群の図柄が、より高い確率で大当たりの図柄となるリーチ）に移行する方式があります。
スーパーリーチに発展させないときには、変動表示を所定図柄数進行してはずれの演出を行い、ノーマルリーチからスーパーリーチに発展させるときには、低速変動表示状態からスーパーリーチの表示状態に変化させ、再度、低速変動表示状態とした後、抽選結果に基づいて、大当たりの演出あるいははずれの演出を行います。

リーチは機種によって様々な種類があり、名称も様々です。
パチンコ機においては、遊技の興趣を向上させるために液晶表示装置へ表示させる映像をどのように変化させて遊技者を満足させるかが各社の競争になっており、その為、液晶表示装置に表示させる画像に様々なバリエーションを持たせる等の工夫がなされています。

# まとめ
今回は、遊技機開発ならではのノウハウについて、旧来の開発フローや手法と用語を紹介しました。
また別で、Unityを用いて図柄と変動や演出の実装方法を紹介できればと思います。

## 追記 （2021.12.8）
ザックリとパチスロもまとめてみました。

https://qiita.com/nekoharuyuki/items/cbc7763561777bede794