【PS4】VA-11 Hall-A Cocktail Vending Machine の作り方
■VA-11 HAll-A というゲームについて
バーに訪れる客と会話しながら、カクテルを作ってお出しするバーチャルバーテンダーゲーム。カクテルの作り方は何種類かの材料を組み合わせることでできる。
■本題
カクテルは全25種類あり、ゲーム内で都度レシピを確認できるとはいえ、正直めんどくさい。そのレシピが完全に頭に入っていて、会話しながらよどみなくカクテルを作ることができるのがプロのバーテンダーかもしれないが、なかなかストーリーを進められないのがネックだった。
結論から言うと、レシピは毎回同じものを作っているので、自動販売機のようにカクテルのボタンを押すことで操作を自動化できないかということ。
で、出来上がったのがこれ。カクテルの要素は
アデルハイド A ブロンソンエキス B デルタパウダー D フラナガイド F カルモトリン K
氷ice 熟成Aged ミックスorブレンド Mix
の8要素から構成されていて、その組み合わせ次第。例えばバッドタッチは
A,B,C,D,F,K = 0,2,2,2,4 で氷あり、というように
カルモトリンはいわゆるアルコール分で、レシピによっては多く入れてもいいし、完全にゼロにしてノンアルコールカクテルを作ることもできる。あとは、材料の量を2倍にしてLサイズドリンクを作ることもできる。
■詳細
・実際の動作はps remote playでpcから操作した。ds4 emulater でキーボードの入力をコントローラーの各ボタンに割当。wasdキーが左スティックの各方向に対応している、といったように。注意点はps remote playはver5ぐらいの途中のバージョンを使用しないとならない。最新版では対策されていて機能しないらしい。そのため、リモートで操作することはできず、家庭内の同一ネットワーク上のPCからでしか接続できない。
・Cocktail Vending MachineのGUIとキーボード操作はpythonで作成。ktinterとpyautogui。試行錯誤の連続でステップバイステップでしか進められなかったが、なかなかそれも面白かった。最初は単に、引数をカクテルの8要素にしたCocktail関数を作り、そこから、25種類のカクテルに派生させた。ボタンを押して、そのカクテル関数が呼び出され、自動でカクテルをシェイクする。ポイントはカルモトリンの量を調整する、のチェックボックスとscale=倍数の入力ボックス。scaleはデフォルトでは1だが、2にすることで2倍量作れる。ゲーム上意味はないが整数ならどんな数字でも入れられる。
・チェックボックスにチェックを入れるとカルモトリンの量を聞いてくるので、0でもなんでも好きな数字を入れればよろしい。チェックを入れなければ、元々のレシピの規定量を入れる。ここが大変で、入力欄にしたとき空欄だとカルモトリンが0になってしまうし、カルモトリンを調整してもいいカクテルと規定量入れないと失敗するレシピがあって、デフォルトの数字を決められない。だからこういうやり方にした。
■終わりに
人はゲームに何を求めるのだろう。ゲームの楽しさとは一体何か。
自分なりにこの2つの問いに対する答えを考えると、ゲームの楽しさとは「困難さを克服すること、学習すること、成長することに対する快感」が一つ。「ストーリーを楽しむこと」が一つ。「キャラクターを愛でたり、グラフィックや音楽を味わう」ことが一つ。みたいな感じに考える。
「カクテルを作るゲームでその操作を自動化したら、それはゲーム性の放棄、破壊何じゃないの?」みたいな指摘が自分の中から生じたため、それに対する言い訳として言っている。さらに言えば、たとえその操作がなくなったとしてもストーリーを読み込むとか他の楽しみ方はあるわけで、カクテルづくりはむしろその弊害となっている節がある。
■ゲーム性の破壊?
何度もカクテルを作らされて、アデルハイド1杯入れなかったor入れすぎたせいで失敗して先に進めない(ゲーム下手すぎか?)みたいな事態を回避することができたわけだ。純粋にストーリーを楽しむにはこの要素無駄なんじゃない?いや、むしろこれが全体の世界観を作り出している、唯一無二の部分では?
あとは、このカクテル自動販売機マシーンは逆にゲーム性を理解していないと作れない。と思う。このゲームのバーテンダーの本質は【基本のレシピを作れる→客に合わせてカルモトリンやカクテルのサイズを調整できる】こと。調整機能がないとプレイしてても、客の要望に答えられず、苦労するのこの先どんなカクテルが要求されるのかわかってないとこうはできない。だからゲーム性の破壊などではない、としておく。ただし対戦要素のあるマルチゲーなどでは条件が不利になったりして公平ではないので、ツールの使用は推奨されない、という事かもしれない