見出し画像

東方VGS実機版をより「ゲーム機」っぽくしてみる(後編#1)

前回記事で、東方VGS実機版にゲーム向けのグラフィックス機能(VDPエミュレータ)と効果音再生機能をつけてみましたが、今回はその続きでゲームパッド機能の対応状況を記します。

なお、まだ完成してません。

過去2本の記事が1万字オーバーで少し長すぎるかも?と思われたので、なるべく少ない文字数に抑えてみる試みです。(本記事はだいたい4,000字ぐらいで、ざっくり図込みで2〜3時間ぐらいで作成)

今回の記事は、ゲームパッド機能の基本設計(デザイン)と部品発注したところまでの途中経過です。


Ph1. タッチパネルじゃダメなのか?

東方VGS実機版の画面(LCD)は静電容量式タッチパネルがついているので、スマホと同様の快適なタッチ操作ができます。

スマホが世界的に普及した昨今、タッチパネルは東方VGS実機版のようなハンドヘルド・ゲーム機(携帯ゲーム機)では必須の入力インタフェースだと思いますが、それだけではゲームは遊び難いです。

もちろん、全てのゲームが遊び難い訳ではなく、パズドラ、モンスト、スクフェスなどスマホやタブレット向けに特化したものは遊びやすいと思いますが、マインクラフト、フォートナイト、荒野行動などのバーチャルパッドを要するタイプのゲームは、物理ゲームパッドがあった方が遊びやすいと思います。

もちろん、バーチャルパッドの研究が進み、ユーザー(特に若いユーザー)の学習(慣れ)も進んできているとは思われますが、入力形態によってどうしても「タッチパネル向きのもの」と「物理コントローラ向きのもの」に分かれます。

例えば、項目の選択をするシーン(選択型入力)はタッチパネルの方が簡単で、プレイヤーの操作指示をするシーン(指示型入力)はジョイスティックや十字キーなどの物理コントローラの方が簡単です。

入力機器毎に得意な入力形態

選択型入力中心のゲームが「スマホだけでも面白いゲーム」となり、指示型入力中心なら「物理パッドがあった方が面白いゲーム」となるものと私は考えています。

スマホ普及以前は、大半のゲームが指示型入力中心だったのに対し、スマホ普及により選択型入力中心のゲーム(パズドラやLINEツムツムなど)も多く現れるようになりました。

もちろん、スマホ普及以前からポートピア連続殺人事件、ときめきメモリアル、同級生、ミサイルコマンドー、ソリティアなどの選択型入力中心のヒット作も沢山ありましたが、主役はスーパーマリオブラザーズやドラゴンクエストなどの指示型入力中心のゲームだったものと思われます。

つまり、「タッチパネルじゃダメなのか?」に対する私の問答は「タッチパネルも物理ゲームパッドも現代のゲームには必要である」となります。そして、それが現代のハンドヘルドゲーム機を創る上で考慮しなければならない基本的なポイントだと私は考えます。

Ph2. 必要なボタン数について

物理ゲームパッドにおける必要なボタン数に関する議論も必要かもしれません。

幾つかの具体例で振り返ってみます。

  • Atari規格: 6ボタン

    • 1ジョイスティック or 1方向パッド(4ボタン)

    • 2トリガー(2ボタン)

  • ファミコン: 8ボタン

    • 1方向パッド(4ボタン)

    • A/Bボタン(2ボタン)

    • SELECT/STARTボタン(2ボタン)※旧式は1Pのみ

  • スーパーファミコン: 12ボタン

    • 1方向パッド(4ボタン)

    • A/B/X/Yボタン(4ボタン)

    • L/Rボタン(2ボタン)

    • SELECT/STARTボタン(2ボタン)

  • デュアルショック2: 23ボタン

    • 1方向パッド(4ボタン)

    • 2アナログスティック(4ボタン×2と換算)

    • ◯/△/□/✗ボタン(4ボタン)

    • L1/R1ボタン(2ボタン)

    • L2/R2ボタン(2ボタン)

    • SELECT/STARTボタン(2ボタン)

    • ANALOGボタン(1ボタン)

ボタンが多い方が操作の幅が広がるのは確かだと思いますが、ボタンが多くなると操作を覚える手間が増えるため、ボタン数が多ければ多いほどUXが「マニア向け」になります。

キーボードを駆使した昔のパソコンゲームのUXはほぼマニア専用で、マニュアルを見なければまともな操作できないものも多くあり、その点もパソコンゲーム=マニアックというイメージが定着する大きな原因のひとつだったのではないかと思われます。

マニュアルを読まなければ遊べないゲームはUXデザインとしては、敢えて「マニア受け」のみを狙う戦略ならアリだと思いますが、「一般受け」を狙うものとしては微妙です。

本気で一般受けを狙うのであれば、マニュアル(※チュートリアルを含む)など、眠たくなるものをユーザーが読まずとも遊べるようにすべきです。

お金を出して買ったゲームであれば、ユーザーも(渋々)マニュアルを読んでくれるかもしれませんが、無料でダウンロードできるゲームなら即アンインストコースだと思われます。

その点を踏まえると、スーパーファミコンの時点で既に「ボタン数が多すぎでは?」と考えられます。

その根拠は、どのボタンが何の役割があるかが直感的にイメージし難いためです。スーパーファミコンにおけるAボタン、Bボタン、Xボタン、Yボタン、Lボタン、Rボタン、SELECTボタン、STARTボタンの全てのボタンについて、「誰もが腑に落ちる一般的な役割」を明確に回答できる人は居ない筈です。

仮に全てのボタンの役割を直感的にイメージできれば、マニュアル不要でゲームを操作できますが、そうでなければゲームをプレイするためにいちいちマニュアルを読まなければならなくなってしまい、ユーザーに不便をかけることになります。

その点、ファミコンであればSELECTを除けば全てのボタンの役割について明確かつ不文律な仕様があります。

  • 方向パッド → 移動

  • Aボタン → ジャンプ・決定

    • 慎重に押す(押す頻度が少ない)ボタン

  • Bボタン → 攻撃・キャンセル

    • 連打するレベルで叩く(押す頻度が多い)ボタン

  • STARTボタン → ゲーム開始やポーズ等

  • SELECTボタン → ???(ゲームによりけり)

SELECTボタンは「明確にどのようなシーンで使われるのか」をパッとイメージできません。

実際、あるゲームではタイトル画面の難度セレクト、あるゲームではポーズ(そのゲームのシリーズ2以降では未使用)などといった形でボタン用途がゲーム毎に揺れがあることに加え、難度セレクトなら十字キー、ポーズならSTARTボタンでも代替可能で、むしろ代替案の方が直感的に操作できます。

あるデザイナー曰く、足し算のデザインは簡単だから人は安直に冗長(無駄)なものを付けてしまいがちで、最もセンスが問われるのは不要なものを大胆に省く引き算のデザインだとか。

つまり、SELECTボタンは引き算(排除)すべきものと考えられます。

最も無駄の無い美しい設計が実現されている物理ゲームパッドはゲームギア(1方向パッド+2ボタン+スタート)あたりかもしれません。

ただし、ゲームギア・スタイルのゲームパッドは売ってなさそうな雰囲気だったので、東方VGS実機版がサポートする物理ゲームパッドはAliexpressで300円前後で購入できたファミコン・スタイルのものをリファレンス機にしました。

東方VGS実機版のゲームパッドのリファレンス機
(Aliexpressで単価300円前後で調達)

Ph3. 技術選定準備(部品調達)

ゲームパッドについてはUSB規格のものが最も普及している(=簡単に調達できる)ので、USB規格のゲームパッドなら基本的に何でも使えるようにする方向で検討を進めています。(※技適関係の問題回避のためBluetooth接続のゲームパッドには対応しません)

なお、USBには幾つかのバージョンがありますが、USB3.0以降にするメリットは(ゲームパッド接続のみの用途なら)ほぼ無さそうだったので、USB2.0をターゲットにしました。

また、市販USBゲームパッドのコネクタは概ねType-Aだったので、Type-Aのホストコネクタを幾つかAliexpressで発注してみました。

まずは、最もベーシックなUSB2.0ホストです。


USB2.0 Type-Aの基本モジュール
(ロット単価31円ほどで発注)

電源ポート(VBUSとGND)以外にD+とD-というポートがあり、これを用いてシリアルデータ通信を行うものと考えられます。

以下のドキュメントに分かりやすく書かれてました。

https://www.cqpub.co.jp/interface/sample/200701/I0701058.pdf

ホスト処理でD+/D-の頻繁な読み書きが必要なので、間にArduino Proあたりを咬ませてゲームパッドの機器判定&入力状態を揮発メモリ(RAM)に記憶しつつ、RP2040とArduino ProをI2Cで接続してArduinoに記憶されている入力状態を読み出すようなロジックが必要になるかも…(面倒くさっ😅)

少しロット単価が上がってしまいますが、D+/D-の信号をUART通信に変換するモジュールもあったので発注してみました。


USB2.0→UART変換モジュール
(ロット単価75円ほどで発注)

これなら間にArduino Proを挟む必要が無いかも…と期待してます。

上図のCH341TというICチップがD+/D-をUARTに変換しているようです。

TXD、RXDというのがUART通信で、TXDがデータ転送(transfer)、RXDがデータ受信(receiver)です。

CH341Tのデータシートを斜め読みしたところ、SCL/SDA(I2C)があるものも存在するらしく、追加で調べてみたらありました。(もう少し単価が上がってしまいますが…)


USB2.0→I2C/UART変換モジュール
(ロット単価275円ほどで発注)

それほど高額なものでもないので、上記を全て(各数ロット〜数十ロットぐらい)発注しておきました。

リードタイムが10日ぐらい発生するので、まだ実物が手元にありません。

多分、UARTあたりで大丈夫じゃないか?と予測してますが、到着したら一通り動かしてみて技術選定して最もコストパフォーマンスが良いものを採用するつもりです。

この記事が気に入ったらサポートをしてみませんか?