ティラノスクリプトユーザーがUnityでゲーム制作チャレンジやってみた
こちらのゲームをUnityで制作しました↓
ということで、今回は支える技術というよりはUnityを初めてまともに使ってみた感想を書いていきたいと思います。
ティラノスクリプトとの比較もしていきますので、今ティラノ使ってるけどUnityも挑戦してみたいよって方は参考にしていただければ。
スペック
コンセプト
Unityにチャレンジしよう!
この一言に尽きるのですが、もうちょっと突き詰めて、こんな感じです。
3つめは、今シナリオが全く書けない期だからです。
ひとまず「ゲーム」として最低限の体裁を整えて、「作り切る」ことを最重要とすることにしました。
公開プラットフォーム
Unityはマルチプラットフォームにゲームを出力できますが、プラットフォームごとのお作法というのは何かしらあるものです。
今回はゲームアツマール向けに、WebGLで出力することにしました。
システム
ゲームとして最限のシステムに抑えるとは言っても、多少なりとも工夫はしたいものです。
手軽にボリュームを出せる要素として、メインのゲームシステムはランダムでのキャラ排出、要するにガチャとすることにしました。
セーブシステムはオミットしました。
セーブについてはUnity向けのアツマールAPIがあるようですが、これはまたの機会ということで。
世界観・キャラクター
ガチャを世界観にどう組み込むかをまず考えました。
当初、診断メーカー的な、ユーザーがなんらかのシード値を与えてランダム要素を操作する要素を考えていたので、安直に「触媒を利用してキャラを召喚しよう!」というのを思いつきました。
召喚といえば異世界(?)ということで、「異世界から救国の英雄を召喚する神官」をプレイヤーの視点としました。
また、立ち絵素材の調達は女性キャラの方がやりやすいので、召喚されるのは聖女、「神託の巫女」としました。
この時点でプレイヤーキャラクターは画面上に表示せず、ナビゲーター的な女性キャラを登場させることを決めました。
ただ召喚するだけというのも芸がないので、召喚したキャラクターに対して巫女か、悪魔かといった選択肢を選ばせ、巫女ならゲームクリア、悪魔なら続行ということにしました。
それにともなって、悪魔の場合は召喚したキャラクターをしかるべき機関に連行させ、ゲームを続けているとたまにしかるべき機関から寄付が入ってくる…という闇要素を入れることに。
ただこの要素についてはただセリフが挿入されるだけで、寄付の有無によってゲームの進行が左右されることはありません。
タイトル画面の実装
形から入るタイプなので、まずタイトル画面を作りました。
Unity自体の教本としては、こちらの書籍を利用しました↓
この本にもあるタイトル画面の作り方をまるっとパクってます。
タイトル画面自体は、画像を表示して画面タップでゲーム開始、というシンプルなものにしました。
画面全体を覆う透明なボタンを配置して、クリックでメインゲーム用シーンに移動という雑実装です。
会話パートの実装
UnityでADV的な会話パートを実装するためのアセットはいろいろあります。有名所では宴、Naninovelあたりでしょうか。
ただ今回はお試し要素が強かったため、有料アセットは使わないことにしました。
とはいえ会話システムを自分で実装するのはさすがに難易度が高すぎるので、よさげな無料アセットを探すことにしました。
今回使ったのは「Fungus」というアセットです。
Asset StoreではなくGithubからダウンロードしてこなければならないですが、ドキュメントも整備されていて(英語だけど)使いやすかったです。
以下の記事シリーズも参考にさせていただきました。
ランダム要素
ガチャなのでランダム値を出し、その値に応じて処理を出し分けしなければなりません。
ランダム値自体はFungusにも機能があるので、それをそのまま使っています。
で、当初この値それぞれをIFで分岐させてキャラ表示とセリフ表示…と使用としたのですが、今回ガチャから排出させるキャラ数が40人超と多かったので、この手はやめました。
キャラクターの立ち絵とセリフだけを動的に変更して、立ち絵やセリフ枠の登場処理は共通化させるのが定石だとおもうので、この動的に変更する部分をどうするかなと調べて、コレクションというのを利用することにしました。
コレクションの利用
コレクションとは、私もよくわかってませんが配列みたいなものらしいです。
立ち絵の出し分けは、「同一キャラの表情差分」として表示することにしました。
なので「キャラの画像名」と「キャラのセリフ」それぞれのコレクションを作っておいて、コレクションの個数の範囲でランダム値を取得、その値をインデックスとしてコレクションを参照してキャラとセリフの動的な表示を実現しています。
これは、JavaScriptでいうオブジェクト的な、ひとつのコレクションなりに画像名とセリフをまとめることもできるのかな~と思いましたがそこまで調べるのはやめておきました。次はこの部分も突き詰めていきたいです。
ガチャ演出
そこまで派手にするつもりはありませんでしたが、ガチャの排出演出は必須なので入れました。
エフェクト系のアセットは無料でもいいものが大量にあるので、それをそのまま利用しています。
今回は↓を利用しました。
最初、エフェクトのサイズがめちゃでかかったのですが、パーティクルのスケーリングモードをヒエラルキーにするとちゃんと見れるサイズになりました。
エフェクトを出すスクリプトの書き方は↓のサイトを丸パクリしました
エンドロールを実装する
こちら↓のサイトの「Animationを使ったエンドロール機能」を参考にしました。
が、ひょっとしたら同じページの「スクリプトを使ったエンドロール機能」の方がわかりやすかったかもな…と思っています。
音をつける
ひととおり画面の動きができたので、BGMやSEをつけていきます。
メインのゲーム部分はFungusの機能でつけれるので苦労はしなかったのですが、タイトル画面で「画面クリックでタイトルBGMをフェードアウトさせてシーン遷移」をやりたかったので調べました↓
こちらのサイトを例によって丸パクリです。
ただ、音声だけじゃなく画面もフェードで暗転させてからシーン遷移をやりたかったので、その部分の処理は追加しています。
暗転フェードのやり方はこちらを参考に
投稿
ここまでできたところでWebGLでビルド&実行、ローカルでちゃんと動くのを確認してからアツマールに非公開投稿しました。
その後自分の環境で動くのを確認してから公開しました。
アツマールはこれができるからありがたいよね
投稿時に必要な画像は、投稿するときになって適当に作ったものなのでもうちょっとなんとかならんかったかという感じもありますが、とりあえず投稿するのが目標だったので堪忍してつかあさい
Unityのいいところ
日本語の情報が多い
私が求める情報がごくごく初歩的なものばかりだったのもありますが、日本語で検索してもそれなりに情報が出てくるので調べやすかったです。
ティラノというかJavaScriptは英語でないと微妙な内容に当たることも多いので…
豊富なアセット
今回はFungusとエフェクト素材くらいしか使いませんでしたが、無料に限定しても大量の素材やツールが配布されているので、これらを使いこなせたらかなり制作時間の短縮になりそうだな~と思いました。
Unityのよくないところ
※Unityわかってないやつから見た良くないところです
まるきりゼロから作り上げなければならない
例えばティラノスクリプトなら、ノベルゲームを作るために最低限必要な機能は初期状態で実装されていますが、Unityはその「最低限必要な機能」から作り始めなければなりません。
もちろん宴を始めとして高機能なアセットを利用することで解消できるもんだいではありますが、宴もNaninovelもね…高いんだよね…
とっつきやすさや手軽さでいうと、Unityはより本気度というか覚悟が求めれるツールだなと思いました。
完走した感想
くぅ~疲れましたw
今回の制作にかけた時間は30時間くらいでしょうか。まとまった時間が取れたので、そういう意味では時間効率よく制作できたと思います。
Unityの使い方は、なんとなくは理解できましたがまだまだ知らない機能はたくさんあると思いますし、ゲームとして完成度の高いものを作ってみたい気持ちもあるので、もうちょっと勉強は続けていきたいと思います。
ひとまず次回開催のunity1weekは挑戦してみようかなと思っています!
今回制作したゲームはこちら!
司教として神託の巫女を召喚しよう!
サポートをしていただけると私がたいへんよろこびます。 ちなみに欲しい物リストはこちら→https://www.amazon.jp/hz/wishlist/ls/2DBRPE55L3SQC?ref_=wl_share