Unityによるアイワナ風ゲーム制作
この記事はCAMPHOR- Advent Calender 2020 の3日目の記事です。
こんにちは、最近カンファーに訪れることが多くなった理学部4回生のぼの🦈🦈🦈(@bono_social)です!
「アイワナ」という多くの派生作品が今でも作られているほど愛されている2Dアクションゲームがあるのですが、このゲームを元にしたファンゲームをUnityでスマホ向けに制作してみたので、その知見を共有したいと思います。
アイワナとはなにか
まず、アイワナとは何かを説明したいと思います。アイワナはたくさんの派生作品がI wanna wikiに登録されている鬼畜系2Dアクションゲームのジャンルおよびそのゲームの名称です!詳しく書くと次のような経緯があるゲームです。
アイワナの始まりは"I Wanna be the Guy"というMichael "Kayin" O'Reillyさんが作った鬼畜系2Dアクションゲームで、絶妙な難しさやユニークな罠が非常に面白いPCゲームです。その作品が公開された後にオーストラリアの大学生がGame Makerというゲームエンジンを使って"I wanna be the Fangame!"とその作成素材データを公開したことがきっかけとなって世界各国でアイワナの二次創作が制作されるようになりました。2020年11月時点では約9000作品ものアイワナがI Wanna Wikiに登録されています。(このほかにも色々と書くべき歴史・経緯はありますが、書き出すと止まらないのでこの辺りでやめておきます。是非PC向けの原作のアイワナを遊んでみてください。アイワナは鬼畜ゲーなので以下のような実況動画を眺めて楽しむのもオススメです。)
スマホ向けの実装
アイワナは通常、Game Makerというゲームエンジンを用いてPC向けに作られることが多いゲームで、スマホ向けのアイワナは非常に数が少ないです。これは元々のアイワナがPC向けに作られたことや、Game Makerのモバイル向け開発者ライセンスの料金が$399であることなどが影響していると思われます。お金があるぞ!という人はGame Makerを使ってアイワナを制作することをお勧めいたします。Game Makerによるアイワナ制作に関する資料や素材は非常に豊富に落ちているので。Game Makerを使うとなるとGMLという独自言語に苦しめられる可能性はありますが。
しかし、私はどうしてもスマホ向けにアイワナ風ゲームを無料で作ってアイワナを布教したいというモチベーションがありました。そこで一般的にゲーム制作でよく使われるUnityというゲームエンジンを採用してアイワナ風ゲーム"I wanna defeat the gorilla"を作ることにしました。
アイワナは基本的にGame Makerで作られるので、Unityで作るための資料はかなり少ないです。幸いにも以下のようなエンジンがRegal Primeさんによって公開されています。
Unityでアイワナをスマホ向けに作るとなると、ざっくり次の2つのパターンが考えられると思います。
・上のエンジンをスマホ向けに移植する。
・ゼロベースで作り直す。
私はRegalPrimeさんのエンジンに書かれているコードをざっくりと読んだ上でゼロベースで作り直すという方法を取りました。特に重力加速度や移動速度の設定は参考にさせていただきました。もともとPC向けゲームであったこともあり、UIについては少し悩まされました。
出来上がったもの
そうして出来上がったのが「立て看板をゴリラに投げつけて単位を集めるアイワナ風アプリ」、"I wanna defeat the gorilla"です。かなり難易度の高いゲームなので、完全にクリアする頃にはデス数が数千回になっていると思います。
Unityで作ったのである程度簡単にiOSとAndroidの両方に対応できました。主人公の移動速度や重力加速度を本家に近づけたり、死んだ時に出る血を赤いパーティクルによって再現したり、色々と工夫がしてあります!まだ微調整が足りない部分やプログラムの重たさに課題がありますが、ぜひ遊んでみてください。
参考にした本
このアプリを作る上でunity自体を勉強する必要があったのですが、所謂「和尚本」にとても助けられました。初心者向けにUnity・C#の基礎から書かれている上に、内容が実践的ですぐにアプリとして形が見えてくるのでモチベーションを保つことができました。おそらくこの本がなかったら今回のアプリを完成まで持っていくことはできなかったと思います。
便利だったアセット
画面のスクリーンショットをSNSでシェアする機能を実装するために次のアセットがとても便利でした。ただ、SNSのシェア機能は実装したもののあまり実際には使われていない様子で、シェア機能を使用するようにユーザーを誘導する必要があるように感じました。
assetstore.unity.com
次のアセットは裏ボス(教授)の弾幕を生成するのに使いました。弾幕は意外と生成アルゴリズムを書くのが大変なので、かなり助かりました。
何かしらオンラインで楽しめる機能もあったほうがいいと思ったので、ゴリラを倒して得た単位数を競い合うオンラインランキング機能を追加しました。そのときに以下の記事がわかりやすかったです。niftyのmBaaSは無料枠でも趣味で使う分には十分かと思いました。
最後に
あまりアプリを作ったことがない自分にとって、iOSとAndroidの両方に対応したアプリを一人で作って公開まで持っていくというのは良い勉強になりました。何か作るものを決めるとモチベーションになっていいですよね。
僕の作ったアイワナで遊んでみて欲しいのはもちろんなのですが、"I Wanna be the Guy"やその他の多数の派生作品をぜひPC版でプレイしてみて欲しいです。ちなみに僕のおすすめのアイワナは"I wanna be the LoveTrap"です。この冬休みはアイワナの面白い派生作品をたくさん遊んでみるのもいいのではないでしょうか。
てすと
てすと
ぱっと見てわからない辛さ
僕は学部2年くらいの頃からメンタルを病んでいた。
病名とかがつくような、そういう状態だった。
それでもなんとか大学にいってゼミをしていたけれど、僕の病気は理解されにくくて大変だった。
きっとゼミを一緒にやっている人にはサボっていると思われたり、怠けてると思われていたと思う。僕が元気そうに振る舞っていたのも悪かったのかもしれない。
実際には精神を病んでいる時は、体が自分のものと思えないほどに重たかったり、歩いているとすぐに息が上がったりするけれど、そういった部分は見えづらい。
きっともっとわかりやすい病気ならよかったのかもしれないなんて僕は思ってしまう。
こういったぱっと見てわからない辛さは精神病だけじゃなくて、人種やセクシャリティにもあるんだと思うし、考えれば考えるほどしんどくなってしまう。
深刻に考えても辛くなるだけなので、考えるのを止めることにする。
大学生活を振り返って
私みたいな何もできない人間には振り返ることなんてないかもしれないですが、大学生活振り返ってみます。
1年生の頃
まだ楽しかった。でもいっぱい煽られたり誉め殺しされたり馬鹿にされたりしてなんか違和感。冬あたりからなんらかの人による無視が始まった。同じテーブルで話しかけても無視されるのが何度もあった。無視する人の参加するゼミやイベントへの参加は控えざるを得なかった。
2年生の頃
無視する人と友人達が楽しくサークルの合宿やゼミに行っていた。僕は楽しそうだなぁと思いつつ、精神がおかしくなってきて、普通に暮らせなくなった。僕なんかいなくてもみんな楽しそう。今思うと、躁状態とうつ状態が交互に来ていて、周りから見ると「めんどくさいやつ」だったのかも。色々人間が無理になって講義にほとんど行かなかった。一部の優しい人々にノートを見せてもらいつつ、しんどい体を引きずり回って単位を取った。
3年生の頃
段々と大学院に行きたくなくなってきた。ずっと大学院に憧れていたけど、大学院に行くとまた同じ人間関係が続く可能性があるし、就職することにした。就職活動も精神に来る。社会の厳しさを感じた。独学でCSについて勉強していたら、雇ってくれる親切な会社があった。
4年生の頃
嬉しかったり苦しかったりブルーになったりと、不安定。誰かとしゃべりたくてもコロナウイルスで空回りしてしまうし、もやもやとした気分になることが増えた。にんげんってよわいね。
こんな大学生活で良かったのかな…と思いますが、なんやかんやいっぱい勉強はできたと思います。下手に遊んでばかりの大学生よりは。
精神の状態は、ゼミを通じて大学で新しい友達ができたりしてちょっと回復したり、嫌なこと言われて落ち込んだりという、山あり谷ありな感じ。トータルで見ると回復傾向(?)
Clovaのリモコン機能を使おうとしたときに「接続に失敗しました」となる時の解決策
Clovaの赤外線リモコンは便利ですが、「接続に失敗しました。しばらく経ってから再度お試しください」という不具合が出たことがあります。この不具合の原因がよくわからず、リモコンを再登録してみたり待ってみたり色々してみたのですが、僕の場合は案外簡単に治りました。
『Clova Friends Dockのケーブルと電源のケーブルを抜いて挿し直す』
これだけで治りました(え
Clovaでテレビや照明を付けようとして
「接続に失敗しました 」
と言われた人は試してみてください。