見出し画像

Unity 1週間ゲームジャム お題「2」に参加した話

さて、先日開催されたUnity1週間ゲームジャムにまた参加しました。今回もその振り返り記事になります。早いもので振り返り記事も3作品目となりました。

昨今の情勢から現在緊急事態宣言が出ており、それを受けて急遽連休中のイベント開催を決めたとか。できるだけ家で楽しめるイベントがあるのはいいことですね。

今回作ったゲームはこちら。終末世界で少女とイヌを操作するアクションパズルです。
未プレーの方はぜひ遊んでみてください。

お題決め編

さて今回のu1w、なんとお題は自分から出題させてもらえることになりました(結果発表時1位のゆーじさんは2連続になるので辞退とのこと)。急遽開催が決まったのもあり、unityroomないちさんからお声がけいただいたのが開催2日前。自分がお題を決めることになるとは思っていなかったので悩んでしまいました。

出題にあたって、前回のお題「回」がなかなか幅広く、もう少し限定的なお題がいいかな?と思いました。また、ここ最近海外の方の参加もたまに見かけることから、日本語のニュアンスやとんちに依存しないお題があってもよさそう、となんとなく。過去のお題を見ると「space」「10」といった英数字のお題もあるのでその方面で考えることにしました。

数字だったらゲームに関係ありそうなのは「0」「2」とか。英単語だったら「X」とか。シンプルで広げられそうなお題という観点で考え、最終的に「2」に決定しました。ゲーム的には例えば「2人同時プレー・対戦」「2倍・2乗」「二進数」「2つの相反する要素(裏・表/右・左/白・黒など)」なんかを使ったゲームが出るんじゃないかな、と想像しました。

目標編

今回自分が出題者というのもあり、あまり張り切った作品は作らないつもりでした。前回の結果発表時には総合5位で、「次回総合1位を目指す!」みたいに考えていましたが、その後順位の変動で1位になってたんですよね……。期せずして目標達成してしまい、何となく目標を見失ってしまった感も。そこで今回の目標はもう少し内向きと言いますか、「自分が満足すればOK!」という設定がいいかな、と考えました。具体的には以下2点。

・プログラミング技術の向上
以前u1w共有会でお話ししたのですが、自分はプログラミングやゲーム制作は独学で実務経験が一切ありません。コードの作法やクラス設計といった基本は身に着けておらず、「動けばいいだろ!」的なプログラミングしかしてきませんでした。最近になって本職のエンジニアと関わる機会が増え、「今後もゲーム開発を続けるなら体系的な技術の習得は必須だろう」と考えるようになりました。そこで、今回のゲームはわずかながらクラス設計を意識し、読みやすい・メンテナンスしやすいコードを書くようにしました。(とはいえこれも独学に毛が生えたレベルですので、時間を取ってもっと勉強したい)

・自分の好きな世界観・ストーリーを作る
これまでもわりと好きにゲームを作ってきたのですが、ここ最近は他人の評価という視点を基準にゲームを組み立てることが多めでした。「こういう表現はこのターゲットに刺さるはず」「すぐ遊べて終われるゲームが評価もらえそう」というような感じですね。ユーザーに気に入ってもらう、というものづくりは個人的にとても大事にしていますが、今回は一歩引いて自分の作りたいものを作るという目標を立てました。「この要素を入れちゃうと多少遊びづらくなるけど、やりたいから入れる」「暗い話は一般受けしなさそうだけど好きだから入れる」などです。

目標の達成状況については後述するとして、いつも通り制作の過程を記載していきます。

制作開始

0日目
今回はイベント開始前からお題の情報を知っており、他の参加者と足並みをそろえたかったので事前準備は一切しないことにしました。そんなに大きいものを作るつもりもなかったのでプロジェクトも事前作成せず、お題発表後に作業を始めることに。

1日目
4/26、お題発表がありました。

お題は「2」ということで、適当に単語を挙げたり熟語を探したり。今回は雰囲気重視の作品を作りたかったのでゲームのシステムよりはストーリーに絡められるお題を探しました。その中で、「2人」というテーマで何か作れないかな、と考えます。親子・友人・恋人のような2人の関係性をテーマにしたゲームです。うーん、2人がテーマ……登場人物は2人……ほかの登場人物は邪魔だな、世界が滅んでることにしよう!というわけで今回のゲームの世界観が決まりました。

なんやかんやで世界が滅んでしまい、生存者を探す2人。手がかりを見つけて向かうも生存者はおらず、やっぱり最後の2人だったのか~ 

な、なんだこの頭の悪いプロットは……。ただ終末世界ものはわりとキャッチーですし、以前に挑戦したストーリー性のあるパズルゲームなんかも作りやすそうでした。その時は完全に満足したものが作れたとは言えなかったので今回そのリベンジもできれば嬉しい。そうしてこの方向性でゲームを作ることにしました。

さて、ここからはゲーム性の話です。「2人を操作して進めるパズルで、合間にちょっとしたストーリーが入る」というのを軸にシステムを考えました。ただこのシステムでゲーム的に面白いものを作るのが少し手間だな……と。というのもこの「プレイヤー2人を操作するゲーム」というのはお題を考えたときから数多く出ることを予想しており、具体的な問題点も何となく浮かんでいたためです。

■2人のプレイヤーを操作するゲームの問題点
・ユーザーの認識能力に負担を与える
単純に盤面に気を遣うリソースが2倍になる。特にアクションゲームでは動的な思考を2つ同時に行うのが至難の業。

・2人であることのシステム的な意味が必要
1人ではできないアクションやギミックを入れないと、本質的にプレイヤーが1人のゲームと変わらない(単に難易度が2倍になるといった使い方にしない)。

・操作性にハンデがある
同時操作であれば2倍のキーが必要だし、切り替え制であっても専用の操作が必要。どちらもu1wでは相当な制約。

あっなんか厳しそう。いかにストーリー重視にしたいとはいえ、ゲームの体裁は保ちたい。そうすると、上記問題点をケアするための丁寧なデザインに時間をかける必要あり。これは間に合わない気配……。初日から急ぎピッチを上げることにしました。

問題点を踏まえてパズルのデザインを考えます。まず、極力アクション要素は排除するようにしました。また2人を同時に操作はせず、切り替える操作性に。こうすることで一度の思考を制限してユーザーの負担を減らします。また、2人のプレイヤーは同性能とはせずできることを差別化するようにしました。具体的には「一方のプレイヤーは物が運べる」「一方のプレイヤーだけに通れる道がある」などです。こうすることでプレイヤーが2人であることに説得力を持たせ、しかもストーリー的に「非力な2人が力を合わせることで進めるようになる」といったエモさを演出できるのではと考えました。

また、メインのギミックとしてを設定しました。終末世界ということで命の危険がある仕掛けが欲しかったのですが、露骨にトゲや落とし穴というよりは少し変わったモチーフのトラップが欲しいところでした(余談ですが自分はパズルデザインに自然・物理現象を参考にすることが多いです)。雨が致死性で触れると死亡するのは終末っぽく、カサで防ぐというのもパズル的な面白さが作れそうでした。

ここでプレイヤーキャラは「少女とイヌ」という組み合わせに決定。イヌと言えば映画「アイ・アム・レジェンド」やゲーム「Fallout」など、終末世界では鉄板ともいえる要素ですね。上記要素も自然に取り入れられ、説得力が増しそうです。

仕様はここですべて決定です。試しに紙でステージを作問したところ、ある程度楽しめるステージが割とすぐに作れることが判明。トータルのプレー時間、難易度などを考えてこの日のうちに全ステージを作成しました。やることは決まったしあとはビジュアル、サウンドに力を入れられるぞ!と初日にしてはまあまあの進捗。死亡フラグです。

2日目
基本的なゲームプレイ部分を作成。プレイヤーの移動・切り替え・カサの取得のシステムを実装しました。

3日目
ここで全体の絵作りの方針を決定。画面は終末感のあるモノクロで統一することにしました。今回はグラフィックにコストをかけないようにしたつもりでしたが、これはこれで気を遣うことがあって意外と大変。特にプレイヤーや操作可能なオブジェクトが画面に埋もれないよう、明度の調整に苦心しました。そういった方針でこの日はプレイヤーの素材を作成。若干ペースが遅くなってきた……。

4日目・5日目
ステージのマップチップを作成しました。世界観の構築のためにはそこそこの物量が必要なのはわかっていましたが、それでも2日間は時間をかけ過ぎました。それに本当なら室内だけでなく屋外の荒廃した様子なんかも手掛けたいところでしたが、さすがに手が回らず。

6日目
背景、ギミックのスクリプトを作成しました。ここで苦労したのがParticleSystemで作った雨の表現。天井に穴が開いている箇所は室内に雨が落ちていくのですが、そうでないところは室内に描画はしません。Sorting LayerやOrder in Layerをうまく使えばすぐできると思っていたのですが、これが思いのほかスマートな実装ができず、最終的に語るのも恥ずかしい強引な方法で実現しました……。(なので今回は語らない)

画像2


また、カサの下には雨を描画しないようMaskを使っているのですが、これも上記の兼ね合いがうまくいかず、一部不自然な表現になっています。こだわったつもりが詰めが甘いというのは反省ですね……。

あとは、静かな画面に動きを出すために地面に雨だれが跳ねる表現をしています。これも実に愚直な実装で、各タイルマップの位置にGameObjectを配置し、ランダムにアニメーションを発生させるようにしています。とはいえなかなか視覚的には面白く、いい効果を生んでいるのではないでしょうか。

7日目
イベントシーンを実装しました。簡単な文字送りとスクロールくらいなのでコルーチンでサクッと作っています。

プログラム面で特筆するようなことはないのですが、シナリオ部分は初めての試みだったので試行錯誤が続きました。テキストの雰囲気・長さ・ウェイト・フェードの味付けなど。また、ストーリー性のある文章を書くのがこれほど難しいとは思いませんでした。つくづくゲーム作りに求められるスキルの幅広さに驚かされます。まだまだ勉強できることを見つけるのはとても楽しいですね。

そしてこの日が締め切りなのですが、遅刻は確定。


やってしまったっ……さすがのしゅんても

画像1

へただなあしゅんてくん  へたっぴさ……!
時間の配分のしかたがへた……!


8日目
サウンドを実装しました。今回も全曲自作にしたかったのですが、もう時間もないため見送りに。フリー素材を2曲使わせていただきました。ラジオで流される楽曲という設定で、若干のノイズ加工をしています。また少し変わった選定基準にしており、ラジオの演出で曲名が表示されるため曲名から楽曲を選びました。

画像3

画像5

画像5

曲調はできるだけポジティブなものを選び、終末世界との対比・最終ステージの虚無感を引き立たせる意図を持たせています。エンディング時の1曲だけ今回用に自作、あとは前回のゲーム「Any% Glicthed」で作った曲を使用しています。前作を遊んでくれた方はちょっとだけニヤリとしてくれるかも(この世界に例のゲームが存在してて、ラジオの人がファンだったという隠れ設定ですね)。
SEについてですが、少しこだわったところに歩く場所によって足音を変えているというのがあります。これが非常に効果的だったと思っており、空気感の演出に一役買ってくれたのではないでしょうか。市販のゲームでは一般的な実装ではありますが、ゲームジャムでこだわっている例はあまりないと思っているので差別化のポイントとしてもおすすめです。

そんなわけで今回は1日の遅刻で完成。前回(2日遅刻)・前々回(4日遅刻)に比べ大幅な進歩です!

……すみません……すみません……(嗚咽)
やっぱり事前の計画やら自分の技能の見積もりやらが甘いんでしょうね……。恒常化してしまっているのがあまりによくないので、次回参加するなら「遅刻しない」を最優先の目標にすべきかなと。

今回の振り返り

ここからは完成したゲームを改めて振り返ってのお話など。ネタバレ要素もありますがここまで読んでいる方はすでにプレー済みかと思いますのでとくに気にせずに書いていきます。

あらすじ
戦争で滅んだ世界、少女とイヌが地下世界で暮らしていた。かろうじて生きながらえていた他の住民たちも次々と倒れ、残るはふたりのみに。死を待つばかりだったが、ある日遺物のラジオから人の声が流れてくる。生存者を求め、少女は地上へ向かうことを決意する。

地上は有毒な雨が常に降っており、生命が存在する環境ではなくなっていた。ラジオを頼りに進んでいくが、ふたりの身体も地上の環境に蝕まれていく。

ラジオの発信源に間もなくたどり着くというその時、放送が途絶え、代わりに合成音声が録音再生のリピートを告げる。ラジオの人は既に存在していないことを悟り、少女とイヌは腰かけたベンチで眠りにつく。

……とまあ、なんとなくありがちではありますがもの悲しくエモいストーリーを目指しました。そもそもu1wでストーリー性のある作品がそれほど多くなく、しかも暗めの話ときたら正直幅広く受け入れられる自信はありませんでした。今回は「評価は気にせず自分の納得できるものを作る」が方針ではありますが、ユーザー置いてけぼりなものを作ってしまったのではという感も若干あり。

ここ最近はゲーム完成直後にだいたい「これ面白いのか……?」と悩んでおり、ユーザーのフィードバックで「思ったより評価をいただけてる、よかった」となることが多かったです。もちろん評価されて嬉しいのはあるのですが、一方で他人からの評価に依存しすぎて立ち位置を見失っている感覚も。もともとはゲーム作りは自分が楽しくてやってるもので、「他人の評価はどうあれ自分が作ったゲームが一番好き」という初心に帰る意味合いでこのゲームを作りました。今回もし「イマイチよくわからんかった……」「遊びづらかった」という方がいましたら申し訳なく思いますが、個人的には当初の目的を達成できたのではないかと思います。

あと、外から見えるところではないのですが、今回きれいなコードを書くことを意識した結果飛躍的にメンテナンス性が上がり、不要な出戻りが減って開発スピードが大きく改善しました。これまでよりも1~2日程度の作業時間短縮になったのではないかと思います(それでも遅刻してますが……)。やっぱり基礎は大事。

全体的に今回のu1wは自身の成長をメインに成果を出せたと思います。まだこの記事を書いている時点で評価結果は出ていませんが、良いにしろ悪いにしろ成功と言っていいのではないでしょうか。それと同時に自分の地力不足も痛感。あれこれ手を広げる前に基礎的な技術の習得をしたいと思いました。

ここ数回は短いスパンでのu1w開催ということもあり、なかなか勉強の時間が取れなかったのも事実。次回開催がいつになるかはわかりませんが、それまでの期間もしっかりと目標を持って勉強を続けていきたいですね!

最後になりますが、今回unityroomでいただいたコメント欄に返信はしない方針にしていました。せっかく作品で雰囲気を演出していたのに作者が陽気に現れては台無しだろうと考えてのことです。これまで毎回コメントに返信をしていたのもあり、感謝を直接伝えられないのが心苦しい限りです。いただいたコメントはいつも励みになっており、心から感謝の気持ちでいっぱいです。この場を借りてお礼申し上げます。

この記事が気に入ったらサポートをしてみませんか?