パラメーターを増やしたくない
――しかし、お伺いしていると、薗部さんの思考はとにかく事象の抽象化と最少のパラメーターによる表現に向けられているようです。
薗部氏:
そういうところはありますね。
特にパラメーターは、もっと減らせないかと常に考えていますね。レースのパラメータも絞りに絞って最終的に4つにまとめたのですが、今でも常に3つにできないか考えています。
一之瀬氏:
事象を抽出してそれをコントロールするアルゴリズムの作り方が秀逸であるとしか言いようがないですね。
薗部氏:
とはいえ、パラメータは同じでも、データの扱い方は毎度試行錯誤ですよ。
一之瀬氏:
僕の記憶では、馬体重を一時期直線に絡めた時期があったはずなんですよ。
薗部氏:
そういう風に、既にある数値を絡められないかは試行錯誤してきました。でも、ライバル馬のパラメーターを2000頭、3000頭と作るときにパラメーターが多いと大変ですしね。
一之瀬氏:
しかも、『ダビスタ』の場合は実名馬が使われている場合が多いから、それなりのシンクロ感も出さないといけない。難しいですよね。
森本氏:
そう考えると、やっぱり特定の馬に特殊パラメーターを作りたくなってきませんか(笑)?
薗部氏:
いや、だからそれをやっちゃうとね……本当に面白くないっていうかね。
―― 一之瀬さんや田谷さんも、自分だったらここは入れちゃうよなというのはありますよね?
田谷氏:
『ソリティ馬』では、日本ダービーなどの特に大きなレースに関しては特別に、ライバル馬たちが能力を全開にしてくるような処理を入れましたね。
一之瀬氏:
『ソリティ馬』ではペースの管理を徹底していて、そのパラメータで直線の攻防を変えているんですよ。ところが、『ダビスタ』はそこをあくまでも4つの基本変数とプログラムで表現しきっていると聞いて、さっきから驚いています。
薗部氏:
でも、テンのスピードはあるけど、終いのスピードはない馬を作るみたいなことは、上手くいってなくて難儀していますね。正直なところ、今でも気に入ってない部分です。やっぱり追い込みと言っても、前に行っちゃうようになるんです。じっと溜めて後ろから行って、最後にすげるような馬を作るのがなかなかね……このスタートのプログラムは今でも納得していない箇所です。
森本氏:
でも、最近は騎手に指示を出せるようになったから、そこで上手くやれませんか。
薗部氏:
試してますが、なかなか難しいです。
僕の場合は、まずはライバル馬同士の試合でバランス調整をしていくんです。でも、そういう色んな脚質の馬が揃うときには上手くいくのですが、ブリーダーズカップのように、全部「逃げ」や「追い込み」にした場合にどうなるかというと怪しい。
結局、競馬だから、どれかは「逃げ」になるでしょう。そこをどういうプロセスで表現するかは大変な問題です。今度の『ダビスタ』は「逃げ」が有利だぞというと、みんな「逃げ」にしちゃいますし、それは「追い込み」の場合も同様です。みんな途中の場面で後ずさっていく……みたいなね(笑)。どこかで隊列が組まれる以上、必ずそうなるんですよ。そこを毎回いじるのですが、どうにも上手くいかない。
森本氏:
プログラムは機転が利かないですからね。みんな「逃げ」が強いのなら、パッと行ったら勝てそうじゃんとは思ってくれない。
薗部氏:
そこは騎手のプログラムでいいのですが、じゃあ進路の途中にどこで内に入るのか、外に持ち出すのかみたいなことを考え出すと、なかなか難しいですよね。
田谷氏:
そこは……パラメーターを増やすしかないんじゃないですか、やっぱり。
薗部氏:
いや、いや。そこは意地でもなんとかしようと毎回もがくわけです。
まあ、もしかしたらパラメータを増やして、ユーザーが面白がるものが作れる可能性はあるかもしれないですよ。でも、その場合でも僕はやらないと思います。だって、自分が面白くないから(笑)。
やっぱり、僕はユーザーが訳の分からない掛け合わせをしてきて、とんでもない理論を作ってきて「こいつ、すげえなあ」となるのが好きなんですね。
一之瀬氏:
当たっていると嬉しいですよね。
薗部氏:
いや、当たっているかは、どうでもいいんです(笑)。
ただ、何周目にこの条件のときには、セリフがどうこうなっていて……みたいな分析が出てくると、僕も自分でソースコードを見てみるんです。すると、確かに特定の条件でそういうことが起きてしまうプログラムになっている。そして、そんなものを発見してくるユーザーさんは、実に凄いものだと驚くわけです。
1対100万の勝負で勝つためには?
――それにしても、『ダビスタ』にこれだけの攻略要素があったのは、なぜなんでしょうか。
薗部氏:
そりゃ、自分でも最適解が分からないように作っているからですよ。作者が何が起きるかを把握できているような浅いプログラムだったら、すぐにユーザーさんたちには底が割れてしまいますから。
田谷氏:
そのご意見には半分は同意するのですが、作り手の錯覚という気もしませんか。
やはり、一般のユーザーさんには分からない気もするんですよ。とすれば、コントロールされていた方が親切なのではないかと……。
薗部氏:
いやあ、それが出来たら素晴らしいけど、現実には難しいでしょう。
だって、ユーザーは100万人単位で遊んでくるんですよ。この1対100万というメチャクチャな戦いにおいて、せいぜい自分が想定していた程度の範囲で面白さを作ったって、そんな浅はかなものは絶対に勝てっこないと僕は思いますね。
むしろ自分の想像をユーザーが超えていく余地を常に残すことでしか、100万人を面白がらせることなんて出来ないだろうと思います。
田谷氏:
確かに、色々なところのネジを締めて想定の範囲に収まるように作ることは出来ますが、予想の範囲に収まるゲームになってしまう面はあるかもしれないです。
『ダビスタ』のあとにたくさん出てきた競馬ゲームの中には、プログラム内部の調整の過程が見えちゃって、ゴールするよりだいぶ前に、自分の馬が3着以内に入るかどうかが判ってしまうものもありました。これじゃつまらないなと思ったのは事実ですね。
森本氏:
まあ現実的には、要所要所で制御すべきポイントはあると思いますよ。
でも、そこで言う制御というのは、例えば100万回まわしたらロードカナロアが10回中9回は勝って、1回はホエールキャプチャが勝つだろうというバランスで作るということですよね。
もし、そこでレース前に機械がサイコロを振って、9が出たらロードカナロアの勝ち、1が出たらホエールキャプチャの勝ちとしてしまうと、面白くはならないですね。
薗部氏:
そうすれば、確実に9対1にはなるんですよ。でも、それはやっちゃダメなんですよ。
僕としては、3連複で100万馬券を出した報告なんかは嬉しいわけですよ。だって、そんなのほとんど最低人気の馬から3頭が、1〜3着になるくらいでしかあり得ないでしょう。でも、そういう余地を残したプログラムを作っておけば、長い目で見るとあり得ることで、実際にそれが起きたわけです。そういう話こそが面白いのであって、そんなものはこっち側で完全に制御していては作れません。
だから、すごい強い馬が出来る確率にしても、確かに低くは抑えているわけですが、その可能性を僕は完全に潰したくはないんです。
森本氏:
大変に共感します。
『ポケモン』にバトル検定という、プレイヤーのバトルを評価して得点を出す施設があるんですけど、その最高得点は僕にも絶対に計算できないし、たぶんユーザーも計算できていないはずなんですよ。
そういうものを作ると、さぁ最高点はどこまで行くんだろうと、こっちもワクワクするわけですよ。逆に最高点の理論値がわかっていると、なんだか興ざめしてしまいます。それはユーザーも同じですよね。
薗部氏:
ユーザーは大体、我々の上をゆくんですよ。だって、束になってかかってきてるんだから(笑)。
すべて自分の想定内で面白く作っています……なんて言えたら格好いいけど、そんなことは現実には難しいですよ。だから、僕はパラメーターに上限も入れていないんですよ。
一之瀬氏:
ええええ、本当ですか……長年遊んできたけど、知らなかった。
薗部氏:
そうすると、ユーザーが作った値が256を超えちゃって、0になってしまうんですね。本当は255を超えた場合を想定して、if、255と書けばいいのだけど、僕はそれは絶対にやりません。
一同:
(驚いて)ええええ。
一之瀬氏:
それは一周回るということで……普通ならバグじゃないですか……。なぜ入れないのですか?
薗部氏:
やりたくないからですよ!
だって、僕は256まで行くはずがないと思って作っているんですよ。それなのにifを入れるというのは、辻褄があわないじゃないですか。
――でも、実際にバグとして報告されてくるわけですよね(笑)。
薗部氏:
ええ、だから、それを聞いて「ああ今回も超えてきたのか……」と悲しむわけです。また自分の想像を超えてきてしまった、と。
一之瀬氏:
うううむ。なるほど……。
森本氏:
はっはっは(笑)。
――これは、もはや“信念”ですよね(笑)。
田谷氏:
そうですよね。普通はバグを生んじゃう要素ですから、必ずチェックを掛けなければいけないところですし……。
薗部氏:
だって、絶対に256を超えるとは思っていないわけだから、世に出してるんですよ(笑)。それにチェックを入れるというのは、もはや本当は違うと認めているに等しい。
まあ、でもおかげで売りに出たら、怖くて遊べないですよ。バグを自分で発見でもしたら、落ち込んじゃうじゃないですか。
一同:
(笑)
――そういう突き放した作りの箇所って、他にもあるんですか?
薗部氏:
カメラのアングルなんかは、一着馬に固定してカメラを構えるべきなんだけど、やっていなかったのはありますね。おかげで、あまりに強い馬が出てくると、画面から消えてしまうんです(笑)。これも、別に先頭馬の1cm前にカメラを置けば解消するわけですが、それは絶対にやりたくないですね。
でも、やっぱりユーザーはとんでもない馬を作ってきて、僕の想像を超えてしまうんです。
森本氏:
結果的には、すごくよかったわけですよね?
薗部氏:
だって、製作者が想定していたカメラでは追えないような強い馬を作った証ですからね。それはそれで満足していただけると思っています。まあ、僕としては絶対にここは超えないだろうと思って出したので、悔しいんですけどね(笑)。
森本氏:
でも、一着にフォーカスしないということは、カメラは何を基準に動くんですか?
薗部氏:
実は、そこに調味料をいっぱい入れているんです。2番目の馬の方が勢いが良くなれば、そこにカメラを動かしたりね。なかなか大変ですが、ここの作り込みが臨場感を生むんですよ。
そうそう、あと実況の着順のセリフもたまに間違うんですよ。
一之瀬氏:
ええっ!
薗部氏:
実況が「一着は○○か!?」と言うのですが、これはたまに間違うことがあります。
森本氏:
それは、絶対に必要ですね。つまり、セリフを言うタイミングのデータから推測してセリフを生成しているんですよね。
薗部氏:
ええ。セリフルーチンは独立させてます。「一着は……」とセリフを言いはじめたときに推測して、その時点で勝ったと予測できるほうの名前を言うんです。もちろん、実際に一着になった名前を言うようにプログラムで決めてもいいのですが、それは絶対にやりません。
森本氏:
つまり、ワザと完璧じゃない予測を……。
薗部氏:
いや、僕のレースのアルゴリズムは一定の速度ではないので、その時点ではそもそも完璧な予測が出来ないんですよ。だって、馬名の長さによってもセリフがどこで終わるか違うでしょう。ゴールの瞬間では、そのくらいのタイミングが大きく効いてきます。
――つまり、『ダビスタ』で勝負が決まるタイミングというのは、本当に走りきった瞬間なのですね。確かに、『ダビスタ』はレースをスキップできないですよね。
薗部氏:
リアルタイムで走らせてわかるプログラムなので、最初に予測はできません。録画モードも、初期状態の値を覚えておいて、それをもう一度走らせているだけですから。
一之瀬氏:
そういう意味では、検証プログラムは使われているんですか?
『ソリティ馬』は寝ている間に1000回くらいまわしてくれるプログラムを書いて、翌朝に先行・逃げ・差し・追い込みをチェックして、「スローペースのときは先行と逃げがこのくらいの比率になるように……」みたいにパラメータ調整を重ねていったんです。
僕は一回見ただけの印象で判断するのはどうしても怖くて、「100%勝てなかったら怖いな」とかどうしても思ってしまうんです。
薗部氏:
そこまで機械的にはやらないかな。
僕の場合は、自分でライバル馬を走らせてみるんです。すると、「短距離はパラメーター上ではこいつが絶対に強くなる。しかしなぜか勝たない」みたいな問題が出てくるんです。そこを、程よく勝てる程度に何度も繰り返しながら調整していく感じですね。その辺は、もう自分の印象でやってます。
森本氏:
で、これがオグリキャップの動きだよ! みたいな(笑)。
薗部氏:
そうそう、そうなると嬉しいですよね。「よし、もう動かさないでおこう!」と思ったりするんだけど、往々にしてたまたまなわけです。
一之瀬氏:
そういう作り方は……怖くはないですか。
薗部氏:
だから、会心の出来のレースシーンを見たら、「よし、今日はここで帰ろう」って帰宅します(笑)。
一同:
(笑)
森本氏:
結局、自動で回してもわかるのは、勝負の「結果」だけなんですよね。こういうレースだったという「印象」は、やはり自分で見て感じるしかないわけですよ。
薗部氏:
そう、やっぱり全部見るのが大事です。でも、いじるのはキリがないから、「今のイイ感じだったから、これでいっか」みたいな見切りも大事です(笑)。
――それであのクオリティというのは、もはや神業な気がします。
薗部氏:
いやいや、熱心なユーザーからは「バランスがおかしい」と怒られてばかりです。でも、「3のときのバランスが最高でした」とか言われても、そのバランスには戻しようがないんですよ。だって、なんでそうなったのかなんて、僕にもわからないんだから(笑)。
一同:
(笑)
薗部氏:
本当にたまたま、そうなっただけなんですよ。
「僕はあまりユーザーに面白さを押し付けたくなかったんです」
――それにしても、薗部さんのユーザーを突き放したスタンスはとてもユニークです。
薗部氏:
そうですね、わりと突き放してます。
説明もほとんどしてないですからね。今いきなり出しても、こういうゲームはやってくれないんじゃないかな。この辺は、僕自身がチュートリアルが長いゲームに対して、「早くやらせてよ」と思っちゃうタイプなのが大きいんでしょうね。
一之瀬氏:
僕も森本からカセットを渡されたときなんて、競馬も知らなかったし、説明書もなかったですからね。なんにもわからない状態でどんどん馬を殺しながら覚えていったんです。
森本氏:
まあ、『ダビスタ』なんかは慣れてる人も多いから、チュートリアルが長いと「早く種付けさせて送らせろ」という感じの人もたくさんいるでしょうし(笑)。
でも、変わらないこと自体がすごいですよ。その後のゲームはどんどん説明が丁寧になっていったけど、『ダビスタ』だけは「プレステ」版でも変わらなかった。潔いですよね。種付けが十字キーで素早く送れるようになった、みたいな進化はありましたけれども。
――この間も、みんなでプレイしている最中に、1ヶ月目に持ち金をすべて使ったら破産できてしまって驚愕したんです。でも、昔はそういうファミコンゲームって沢山あったんですよね。
森本氏:
いや、ゲームはコアな部分が面白ければ、問題ないんです。
薗部氏:
まあでも、今は取っ付きが悪ければ、それだけでポイだとは思いますよ。
僕はあまりユーザーに面白さを押し付けたくなかったんです。「ほら、ここが面白いでしょう?」と製作者が指示を出してくるのは、どこか違う気がする。そうじゃなくて、「ユーザーがどこに面白さを見出すのか」が大事なんだと思うんですよ。
昔はそういう発想でプレイするのが普通だったから、僕のような人間でも製作しやすかったんでしょうね。なにせ、あの頃はゲームに5000円だとかを払っていたわけで、「ひでえゲームを買ってしまった」と内心思っていても、「面白くないはずがない!」とか「絶対に面白くなるまでやってやる」とか思い込んでプレイしたものです。しまいには、単なるバグを裏技として楽しんでくれたりね。
――まさにゲームフリークの始まりも、『ゼビウス』のバグも含めて攻略情報を追求した同人誌でしたものね。ただ、この突き放し方が作品の魅力と結びついているのがすごいです。先ほど、自分もわからないようにゲームを作るというお話をされていましたが、映画監督なんかがあえて役者のアドリブを許容して予定調和から外すような手法にも似ていますよね。
薗部氏:
まあ、そこはユーザーがどうこう以前に、開発時に自分が楽しいかどうかという視点もあるんです。僕にとってはプログラムを作る行為そのものが最高のゲームで、基本的には開発という行為そのものが楽しくて仕方ないんですね。だから、それを答えがわかりきったルーチンワークにしたくないんです。
自分でゲームを攻略しながら、プログラムを書いている気分で作る。それが僕のやり方なんですよ。