unity1week「つたえる」振り返り
unity1week、お題「つたえる」にて、
『ラブ・ラビリンス~気になるあの子に思いを伝えよう~』
というゲームを制作しました。
本記事は、ゲーム制作の振り返り記事になります。
下記urlから遊べるので、是非遊んでみていただけると嬉しいです。
1.はじめに
本作は、『ゲムシャリコ』名義でのunity1week初参加の作品となっています。自分が想定していたよりも多くの方にプレイしていただけたようで、感想や評価なども沢山いただくことができました。本当にありがとうございます。
この記事では、制作中に考えていたことや試したことなどについて、備忘録がてら振り返っていこうと思います。
たいしたことは書いていませんし無駄に長いですが、何か参考になる部分があれば嬉しいです。
2. ゲームについて
2-1. コンセプト
本作のコンセプトは、
『コミュ障の主人公が勇気を出して思いを「伝える」ハラハラパズルアクションゲーム』
でした。自分自身コミュニケーションが苦手なので、言葉を選ぶもどかしさと上手く伝えられた時の達成感みたいなものを再現できたらと思い制作していきました。
ちなみにこのコンセプトは、ChatGPTと案だしをしていく中で思いついたものです。ChatGPTの使い道に関しては、3-2で紹介しているので、もし興味がある方がいれば読んでみてください。
実際、迷路を進みながら文字を集めていくというゲームシステムは、このハラハラ感を上手く表現できたと思っています。ChatGPT様様ですね。
2-2. 苦労したこと・試した表現
今回制作をするうえで最も大変だったのは、迷路の生成です。
DFS(深さ優先探索)だのBFS(幅優先探索)だののことは名前ぐらいしか知らななかったので、実装がとても大変でした。
こちらもChatGPTに大いに助けてもらいました。ChatGPTが居なければ正直完成しなかったと思います。ありがてぇ……。
ChatGPTの使い道に関しては3-2で紹介しているので、もし興味がある方がいれば以下略。
尚、迷路の描画にはVectorGraphicsを使いました。
svgなんかを扱うためのUnity標準のライブラリで、迷路出現時のモーショングラフィックスにも利用しています。
previewバージョンなのでちゃんとした開発では使いにくいかもしれませんが、ちょっとした演出に使いやすかったので、こういう表現が作りたい人は触ってみるとよいかと思われます。
実装は、↓の講座を参考にしました。
VectorGraphicsで作るエモい表現(完全版) | Unity Learning Materials (unity3d.jp)
2-2. 反省・やり残し
本作でもう少し頑張りたかったなというところは、演出面です。特に、グラフィック面ではもう少し頑張れたかなーと思っています。
演出面での不満や改善点を書き出してみました。
シナリオの演出が少ない
クリア演出がしょぼい
失敗の演出が音のみで分かりづらかった
メンタルゲージが低い時の演出が無くわかりづらかった
作りこみたいところではあったのですが、立ち絵やシナリオ、シナリオパートの実装や迷路生成の実装などタスクが山盛りで時間が取れませんでした。
次回はもう少し実装周りを高速化し、演出の強化に時間を取りたいですね。
3. 挑戦したこと
今回、本作を制作する上で一番大切にしていたことは、挑戦することです。
最近は、大学の知人とチームでゲーム制作を続けていたのですが、伸び悩みと開発のマンネリ化を感じていました。そこで、unity1weekでたくさん挑戦をして気分を一新しようと思ったのです。
実際、様々な面で自分の成長が実感でき、非常に満足のいく一週間になったと思います。
今回挑戦してみたことは主に以下の2つです。
3-1. UniRx/UniTaskを使ってみる
まず、UniRx/UniTaskを使ってみました。
いろいろなところで名前を聞いていて、非常に有用そうだったからです。
ややこしいイメージがあったので、今まではあまり触れたことが無かったのですが、使ってみると意外と簡単で、とっても便利でした。
まだまだ自分も使いこなせてはいませんが、最初はちょっとずつ取り入れていく感じでも便利さを実感できると思います。
使い道についてざっくり言うと、
UniRxはイベント管理(UnityAction, UnityEventとかの代わり)に、
UniTaskはコルーチンの代わりに使えます。
特に便利だったのがUniTaskで、フレームをまたぐ処理を記述するのが圧倒的に楽になりました。本作のストーリー周りの処理はUniTaskで実装しています。一度も触ったことが無い人は是非触れてみるべきライブラリだと思います。
唯一のデメリットとしては、著作権表示が必須なことでしょうか。
MITライセンスには著作権表記の義務があります。
OSSの場合はソースコードに含めるだけで構いませんが、バイナリファイルで配布する場合(ゲームとして実行ファイルを配布する場合)は、ソフトウェア内もしくは同梱したファイルに表記しておく必要があります。
unityroomではテキストファイルを同梱することはできないので、ゲーム内で表示する箇所を用意する必要がありますね。使用アセットのところに書くのでもいいかもしれません。コメントで指摘していただきましたが、unityroomの使用アセットの欄にライセンス表記が見られるurl(githubのurlとか)を乗っけておけば大丈夫なようです。それでも何かしらの形で表記が必要であることには違いないようなので、利用する際は注意してください。(23/5/9追記)
(なんかちょくちょくMITライセンスは著作権表示しなくてもいい
みたいな話も見るので、もし自分の勘違いだったらすみません。
調べた限りでは、著作権表示が必要な気がしています。
もし何か間違っていればコメントなどで訂正してくれると助かります。
その際は追記します。)
↓おすすめの動画と記事です↓
3-2. ChatGPTを活用する
もう一つ試したかったのが、ChatGPTです。
先日発表されたChatGPT4は、月額$20で利用できるのですが、この間深夜テンションで購入してしまいました。
いろいろ便利なので後悔はしていませんが、
せっかくなのでゲーム制作にも活用してみました。
今回、私がChatGPTを使い倒して気づいた使い道は、以下の3つです。
それぞれ、プロンプトの例と共に紹介していきます。
3-2-1. プログラムを生成してもらう
一番パワフルで分かりやすい使い道がプログラムを生成してもらうことです。
今回のゲーム制作でも、迷路生成のプログラムの6割ぐらいをChatGPTに生成してもらいました。
有名なアルゴリズムはまず問題なく作成してくれますし、自作のクラスと共にプロンプトを入力すれば、それを利用して拡張してくれたりします。
以下はプロンプトの例です。
1. UnityC#で、迷路を生成する手順を教えてください -> 手順○のプログラムを生成してください。
2. <クラスの定義をコピペ> を利用して、BFSでスタート地点から一番道のりの長い地点を求めるプログラムを生成して下さい。
素直に質問しても問題ないですが、一度手順を聞いてから、プログラムを生成してもらった方が正確な気がします。それに、読んでいて理解しやすいので、後々拡張するときに手間取らずに済みます。
プログラムを読んでもわからない場合は、質問できるのもAIのいいところですね。いちいち調べるより爆速で作業が進みます。
3-2-2. 実装方法を相談する
もう一つ、便利な使い方として実装方法を相談するという使い道があります。
私も今回、文字を迷路に配置する方法がわからず相談しました。
どのようなアルゴリズムを使って配置していけばいいかを教えてくれるので、とてもありがたかったです。
何かこういう機能が作りたいけど、どうやって実装すればいいかわからない!というのがあれば、一度相談してみることをお勧めします。
プロンプトの例はこちらです。
迷路の通路の行き止まりに文字を配置していきたいのですが、どうすればいいですか?
3-2-3. 命名を考えてもらう
プログラム関係でもう一つ有用なのが、識別子の命名を考えてもらうという使い道です。命名は重要、いろいろな技術書に書かれていますし、実際大事だと思います。
ところが、私は常々、語彙力が無くて何も思いつかないとか、もっと簡潔に表したいといった問題に直面していました。英語よわよわ勢なので……。
そんな時にも便利なのがChatGPTです。仕様を説明すれば、命名の案を沢山出してくれます。
おそらく無料版でも問題なく活用できると思うので、是非試してみてください。
<クラスの仕様を説明>というクラスの識別子の命名の例を10個挙げてください。
3-2-4. アイデア出しのお供に使う
これは私も目下模索中の使い道になるので、こうするといい!というのはズバッとお答えできませんが、ChatGPTはアイデアだしのお供としてとても有用です。
流石にそのまま採用できるようなアイデアをぽんぽん出してくれたりはしませんが、AIならではの無限の発想力で、磨けば光る原石みたいなアイデアを出してくれることがあります。
今回のunity1weekでは、お題として「つたえる」を設定し生成してもらいました。入力したプロンプトは、以下の通りです。
Unity1weekという一週間でゲームを作るイベントがあります。
斬新なゲーム性が評価されやすい土壌にあるので、それを考慮しつつゲームの案をいくつか考えてください。
ゲームプレイは短い方がよいです。
その際、コンセプトや何が新しいのかを明確にしてください。
今回のテーマは「つたえる」です。どのように曲解しても構いません。
そうして生成され、このゲームのアイデアの元となったのが、こちらです。
ここでポイントなのが、新規性とコンセプトを明示させることです。
これを書いておかないと、大分ふわふわしたゲーム案ばかり出力されてしまいます。
今回は数が欲しかったので省略しましたが、ターゲットやゲームシステムについても明示するようにしておくと、もう少しクオリティの高い企画を出してくれます。
是非皆さんもゲーム制作にChatGPTを活用してみてください。
4. 結果を受けて
そんなこんなで評価期間も終わり、評価が発表されました。
私のゲームの発表時点での評価結果は以下の通りでした。
総合:14位 (4.214)
楽しさ:25位 (4.116)
絵作り:19位 (4.537)
サウンド:49位 (3.968)
操作性:22位 (4.095)
雰囲気:12位 (4.516)
斬新さ:27位 (4.053)
全体的にめちゃくちゃ高くてびびりちらかしました。
しかも全項目ランキング入り!
特に総合ランキング入りは目標にしていたので、とてもとても嬉しかったです。改めて、プレイしてくださった方、評価してくださった方本当にありがとうございました。
今回はアイデアに助けられた部分も大きかったので、次回は下がりそうな予感がビンビンしていますが、今後もunity1weekに参加していこうと思います。
5. 最後に
挑戦したことでも書きましたが、いろいろなことに挑戦できたいい一週間だったと思います。
長く語ることもないのでスルーしちゃいましたが、今回、シナリオにも初挑戦してみました。意外と好評なようですごくびっくりしています。
とはいえ、このコミュ障少年と少女の恋愛という題材は以前から構想していたものでしたので、そこのバフもあったのかなと思っています。
まだまだ荒の多いシナリオでしたが、楽しんでいただけたなら嬉しいです
あとつい先日、勇気をだしてUnityゲーム開発者ギルド(UGDG)の方に加入させていただきました。こんなゲームを作るぐらいにはコミュニケーションが苦手なので、めちゃくちゃ緊張しました……。
しかし、すごく活発なコミュニティで、Unityをやる人類なら加入して損のないコミュニティだと言われている理由が分かった気がします。
こんな記事を読む人は多分知ってるとは思いますが、もし知らない人がいれば是非一度加入を検討してみるといいと思います。
もしよければ仲良くしてください。
ChatGPTの使い道とか紹介してたらめちゃくちゃ長くなってしまいました……。
今後も何かあれば記事を書いていこうと思います。ここまで読んでいただきありがとうございました。