Unity歴9ヶ月で準優勝!数学の美しさを伝えたい『mathmare』

Unity歴9ヶ月で準優勝!数学の美しさを伝えたい『mathmare』

2019年12月15日(日)、秋葉原UDXシアター「Unityインターハイ2019」本選(レポート記事はこちら)にて見事準優勝に輝いた、東京都/戸山高校のチーム「トロコイド」こと阿部悠希 (16)さん。受賞作の『mathmare』は、モノクロの世界で繰り出される数学的弾幕を避けるというオリジナリティあふれるゲームだ。阿部さんはなんと、今年3月にUnityを始めたばかり。「媒介変数表示で表される図形と出会った時の感動を広めたい」という理由でこのゲームを作り上げた阿部さんと、「ゲーム制作に使う数学を学習しよう」などの講義を行うユニティ・テクノロジーズ・ジャパンの安原祐二が対談した。

Unity公式チュートリアルで学んだ

インターハイ授賞式にて

安原祐二(以下安原)

準優勝おめでとうございます。Unity歴は9ヶ月ということですが、阿部さんはその前からプログラムをやっていたんですか?

阿部悠希(以下阿部)

プログラムはやっていませんでした。「東方弾幕風」という、弾幕を作る専用の言語を少しいじっていたことはあるんですけど。本格的にプログラミングを始めたのは、Unityを始めた今年の3月ぐらいですね。そこからUnityのWebサイトにあるチュートリアルで勉強しました。本もあんまり買っていないんです。自分で作りたいものが作れるようになったのは4月くらいからです。

阿部さんのプレゼンはこちらから

安原

それが信じられないですよね。

阿部

『Mathmare』を作り始めたのは、インターハイ出場を決めた6月からで、制作期間は実質2ヶ月と、一次審査が終わったあとのブラッシュアップで、全部で4ヶ月ぐらいです。フリー素材の音楽以外は、全部自分で作っています。

『mathmare』

数式の美しさは言葉で伝えても伝わらない

プレゼンテーションで、「アステロイド曲線やバラ曲線を見たときにたった一つや二つの数式でこれが表現できることに感動した。数式の美しさは言葉で伝えても伝わらない。だから弾幕ゲームを作った」とおっしゃってましたよね。それは授業で習ったんですか?

阿部

はい、媒介変数表示という言葉は数Ⅱのベクトルの授業で習ったんです。

安原

みんな習っているはずですよ。

阿部

それで、テスト勉強をしていたときに、媒介変数表示のことを検索したんです。それで、バラ曲線とか、アステロイド曲線の美しい図を見て。「これを弾幕にしたらすごく面白そう」という気持ちと、「すごいという気持ち」を他の人にも伝えたくて、『mathmare』を作ったんです。

バラ曲線

言葉だと伝わらないって、ちゃんとわかっているのがすごいですよね。だからゲームにしようっていう、そこの飛躍が本当にすごいなと思いました。

阿部

「すごいものを見つけた!」と思って、友達にも言ったんですけど反応が薄くて。そんなこと言っても、「ただの数学好きな変な奴」としか思われませんよね(笑)。たとえSNSでつぶやいても、フォロワーがそんなにいるわけでもないので、せいぜい2桁の人の目に留まって終わり、イイねがつくのは5個ぐらい、そんなものかなと思ったので。

めちゃくちゃ現実的ですね。たくさんの人に届けるために選んだ手段が、ゲームだったっていうことなんですよね。弾幕はなぜお好きなんですか?

阿部

『東方Project』から入ったんです。東方はYouTubeの「ゆっくり実況」で知りました。そこから『東方紅魔郷』をプレイしたり、弾幕ゲームだと他にはスマホでリリースされている弾幕は結構遊び尽くしました。作るときの参考にもしています。

安原

技術的なことを聞きたいんですが、弾のコリジョンを取るのを自前でやるのはわかるんです。ところが、線分もコリジョンを取りますよね。パッと見たときに、先頭にだけコリジョンつけるタイプなのかなと思ったんですが。軌跡の部分にコリジョンがないと、あのゲームは成立しないですよね。線のコリジョンを取るのって、結構難しくないですか?

阿部

点と直線の距離を求める公式があるじゃないですか。それを、幅をもたせて付けました。

安原

普通にUnityをやっているなら、長方形のコリジョンを長くして対応する可能性もあるかなと思っていたんです。でも、阿部さんはそうじゃない。Unityをそんなに知らないからこそ、自由にやっているんだろうなと。線と点の距離をとって、コリジョンを取るやり方は、Unityの本には絶対載っていないですよ。

阿部

まず、四角形の弾があって、それはさすがに丸で距離をとるのは嫌だったので、四角をなんとかとる方法はないかな?って探していたんです。それで突然、直線と点の距離をとる方法を思いついて「これならいけるんじゃないか」って。で、実験して、見事にうまくいったので、「これだ」っていう。

安原

すごいですよね。普通、思いついても、そんなプログラム書けないと思いますよ。結局、y=ax+bのaとbをパラメータにした線をたくさん作っているわけでしょう?それで全部、総当たりでチェックしているということになりますよね。いや、なかなかね、Unityから入ってゲームを作るのを目指すと、そこへは行かないと思うので。そういうところがね、すごいこう‥.、本当に力がある人が作っている感じがしました。

でも、プログラム歴9カ月ぐらいですもんね。

安原

プログラムも拝見しましたが、すごくきれいなんですよ。

阿部

全部、独学でやっていたので、いわゆるスパゲッティコードだとか、コードがきれいなのか汚いのか、何もわからないんですよ、見てもらう機会もないので。

安原

やっぱり先入観がないからなのかな。例えばコルーチンって、僕のキャリアでも後のほうに覚えた概念で、ずっとスイッチケースみたいなステートで追っていくようなタイプの書き方をしていて。言語にその対応がなかったので最初はそう書かざるを得なくて、その後でコルーチンっていうのができたっていう、そういう歴史上の経緯があるんですよね。なので、関数を途中で抜けて、またそこへ入ってくるっていうのに普通に違和感があって。でも、やっぱりね、現代の子はすんなりやっちゃうんだなあと。すごく感心しました。

数学は好きじゃない?!

数学のどういうところが好きなんですか?

阿部

私は「数学好き」ではないんです。自分の中では腑に落ちないんですよ。

安原

わかるな‥。すごくわかる。

阿部

美しい図は好きだけど、三角関数の面倒くさい問題を解くのとかはあまり好きじゃないし、むしろ苦手意識を持っているんです。成績も普通です。進学校なので、すごくデキる人もいっぱいいるし…。このゲームに関連してだったら、むしろ「物理が好き」って言うほうが正しいかもしれないですよね。物理も結局は、ボールを投げたときの放物線みたいなものを全部数式で表していくわけじゃないですか。これも同じで、図形を数式で表すっていう、そこがすごい好きなんじゃないかなって思うんです。

安原さんは今まで、数学をどういうふうにゲームのプログラミングに役立ててきたんでしょうか?

安原

普通に、メチャクチャ使いますよね。ベクトルとか行列とかはすごく使います。でも、それと問題集を解くのってほとんど一致しなくて。言ってしまえば役に立たないんですよ。僕も高校のときは、数学はやっぱり苦手でした。でも、それはそれとして、数学は面白いんですよね。自分も今は、中学3年の問題ですらもう解けない(笑)。苦行でしかないです。でもそれと「黄金比が面白い」というのは別なんです。そもそも僕も数学得意じゃないし。

阿部

和積の公式とかも絶対嫌です(苦笑)。

安原

でも実は数学って、ウケるコンテンツなんですよ。

興味を持つ方が多いですよね。

安原

コンテンツの力が強いんです。でももし僕が数学のゲームを作ったら「狙ってる感」が出ちゃうんだけど、阿部さんのゲームにはそれがないんですよね。数学って結局、神様の視点から見ると面白くともなんともないんですよ。1+1=2と、面白い曲線に差はないです。それを面白いと思うのって人間の視点なので、数学者というのはすごく人間っぽい話をしているんだと思います。例えばこれは、黄金比を使った弾幕です。

本画像が紹介されている記事はこちら

阿部

うわあ、きれいですね。

安原

黄金比にも角度があって、例えば360度を黄金比で割ると、137.5度という数字になるんですよ。この動画では毎フレーム弾を出しているんだけど、次の弾を黄金比の137.5度にすると、こういうひまわりの種みたいな形になるんです。平面上に、完全な同じ密度で、弾をばらまく方法になるというものが、黄金比から出てくるのがすごいですよね。

阿部

私も、式でカッコいい感じの形を作りました。数式を組み合わせてたまたまできた形をガゼルっぽくしたくて、係数なんかを変えて、この形にしたんです。自分では「ガゼルヘッド」って呼んでます。

ガゼルヘッド

安原

いやあ、面白いですよね。以前曲線に関して面白いと思ったのは、スケボーをやっている人が、ある地点に一番早く到達する曲線を計算するという講演でした。それはサイクロイドっていう曲線なんですけどね。サイクロイドというのはトロコイドの一種です。

「トロコイド」は阿部さんのチーム名ですよね。

阿部

サイクロイドは、周上のある一点ですが、トロコイドは円の中でも外でも、回したときの軌跡がトロコイドなんです。チーム名にしたのは、なんとなく語感が良かったからです。曲線だと、リサージュ曲線も好きですね。

安原

周期が見えるからだね。

阿部

もしかしたら周期を変えたら無限大の形が作れるんじゃないかと思って、5月くらいにやっていたんですよ。で、その後にこれを知って、「ああああああ‥」という。これは弾幕にするしかないと思って作っておりました。

安原

曲線は面白いですよ。アンテナで有名なパラボラも曲線の名前ですからね。

阿部

『Mathmare』にもパラボラは出しています。

安原

他には、ロープの両端を持ったときに、そのたわみで描かれるカーブはどういう式に従うかっていう問題があるんです。これは大学まで行かないと習わないんだけど。面白いので、楽しみにしていてください(笑)。

次の作品は「魔王」?!

『mathmare』は既にリリースされていたandroid版に続き、iOSでもリリースされましたね。アップデートなどはされるんですか?

阿部

今、25ステージでリリースしているんですけど、「ステージが足りない」って言われていて(笑)。ネタ切れです(笑)。クロソイド曲線とか作ってみたいなとは思ったんですけど、技術的にちょっと厳しいなって。

クロソイド曲線

安原

クロソイド曲線って有名な式で、自動車の走行中にハンドルを一定速度で回していくと、どんどん曲率が上がっていきますよね。その曲線で道路を造れば、自然にカーブを曲がれるっていう理屈があるんです。だから道路を造る人はクロソイド曲線を知っている、そういうものですね。

阿部

積分というか、インテグラルをまだ習ってなかったので、ちょっと遠のいちゃったんです。それから積分は習ったんですけど、やりたくない(笑)。

安原

確かに、微分値が一定という角度なので。あれは積分じゃないと出来ませんね。

阿部

「クロソイド曲線」って、ギリシャ神話の女神クローソにちなんでいるんですよ。それに絡めた弾幕シューティングを作ろうと思っているんです。

安原

やっぱり弾幕なんだ(笑)。

阿部

女神様を登場させて、クロソイドをリベンジしたいなというのがあるんですよ。もともと、芸術を鑑賞するのは大好きで。現代アートも大好きなんです。オーケストラの音楽とかも好きですし。

安原

音の理論も数学ですね。

阿部

他には、シューベルトの「魔王」からインスピレーションを得たので、次はそのゲームも作りたくて。それは弾幕じゃないです(笑)。芸術も音楽も大好きだし、いろいろなインスピレーションを受けているので、今は作りたい世界観が、両手じゃ足りないくらい溢れています。

安原

情熱駆動なところが何よりもいいですね。技巧に走るのではなく、「こうしたい」っていうのが素晴らしいです。

次の作品も楽しみにしています。ありがとうございました。

写真:種子貴之

齋藤 あきこ - 2020年1月8日