【Unity1week「当てる」】第7回Unity1WeekGameJamに参加しましたってお話
ブログの開設から早4か月ほど、一切記事を書かずに過ごしてまいりました。
今回はUnity1WeekGameJam「当てる」に参加した際のレポート的なのを書きたいと思います。
今回のアイデア
今回のお題が「当てる」ということで、なにか「当てる」ことが目的のモノはないだろうかと考えました。
その時に思い付いたのが「ガチャ」です。
非常にありきたりな考えですね。
ということで、「ガチャ」を題材にしたゲームを作ろうと考えました。
内容を固める
「ガチャ」を題材にするとして、それに付随する要素を考えなければなりません。
スマホゲームのガチャ演出は非常に凝ったものが多く、素人レベルの技術力と、万年美術3評価レベルの自分では到底真似できるようなものではありません。
ではどうするのか、悩みました。
最終的に行き着いた答えは、「いっそのこと作業感を出そう」でした。
友人が以前、「ガチャは作業のようなもの」というような発言をしていたのを思い出したので、そのような考えに行きつきました。
作業感を出そう
「作業感を出す」ためにはどのような構成にすればいいのかを考える必要がありました。
「ガチャを回して、出てきた結果を見るだけ」では結果を眺めるだけのゲームです。
作業というよりはスクリーンセイバー。
というか普通に眺めてても面白そう。
結果的には「ガチャを回し、出てきたボールを処理レーンに流す」という「出てきたガチャの結果を処分する何とも無駄な作業をあえてプレイヤーに行わせる」ことで、なんともいえない「作業感、虚無感」を出しました。
ボールを処理レーンに流すためには...
ボールを処理レーンに流す作業をプレイヤーに行わせる際、どうしても「プレイヤーがオブジェクトを持ち歩ける」ようにする必要がありました。
イメージとしては、CSシリーズや、GModなどに用いられている「SourceEngine」のプロップ持ち歩き動作。
視点の中央に保持しているオブジェクトが浮いてる感じ。
その時、Rayの使い方を勉強したかったこともあり、Rayを使って無理やり動作を実装。
- プレイヤーからRayを飛ばす
- 当たったゲームオブジェクトにBallタグが付いていた場合、そのゲームオブジェクト(以下Ballと呼称)にアタッチされているはずのBall用スクリプト(アタッチされているゲームオブジェクトが掴まれる際の動作などが記述されている)を取得
- プレイヤー側のスクリプトから、そのゲームオブジェクトから取得したBall用スクリプトの掴まれる際に実行するメソッドを叩く。この際、プレイヤーの子としてアタッチされている空のゲームオブジェクトのワールド座標も送る(この座標がオブジェクトを保持する際の点となる)
- 掴まれる際に実行するメソッドには、大雑把に言うと、「送られてきた座標へワールド座標を書き換える処理」と「プレイヤーの子としてアタッチされている空のゲームオブジェクトをFindし、その子になる処理」が書き込まれており、実行されると瞬時にプレイヤーの目の前にワープしてきて保持される形となる
絶対にもっと効率のいい方法がありますが、自分にはこの方法しか思いつきませんでした...
ただ、汎用性は非常に高いのでいろいろと応用できそうです
実際の動作はこんな感じ
やっとやりたい動作が作れました。
— TechNΘ (@Techno1109) 2018年2月23日
CSとか、Gmod、いわゆるソースエンジンによくある、中心にプロップを持ってくる動作。
それっぽいのが作れました。#unity1week #unity3d pic.twitter.com/MCT98peZZU
ガチャ部分の実装
ガチャ部分の実装は特に難しいことはしていません。
ボタンを押したらコロコロとボールが出てくるだけなので、適当にボールをインスタンスしているだけです。
ただ、ガチャなので出てくるボールにレアリティを設定しているので、インスタンスする前にどのボールを排出するかの抽選はしています
今週のUnity1WG
— TechNΘ (@Techno1109) 2018年2月24日
「当てる」ということで、「ガチャでSSRを当てるためだけのゲーム」を作りました。
もうちょっといろいろ機能足しますけど、大体の機能は完成です。
動画では銀が出て喜んでますが、10%ですね。
SSR(金)は3%です。#unity1week #unity3d pic.twitter.com/rj42ouBIRG
これで完成....?
いえ、まだです。
ガチャには不可欠な一大要素「課金」悪しき風習ともいうべきか?
これがなくちゃガチャは始まらないということで、「課金システム」を作成しました。
もちろん、ジョークですので金銭は請求されません。
クリア条件を設定
クリア条件は、「最上級レアリティのボールを処理レーンに流したらゲーム終了」としました。
最上級レアリティは、今回は3%に設定しており、よくあるスマホゲームの最高レアリティのパーセンテージと同じくらいに設定されています。
最後に、それまでに課金した額を表示して終わりです。
最後にいろいろ周りを作る
よくよく考えたらこのゲーム、ガチャでいいレアリティが出ても特にご褒美もないですし、派手なエフェクトもない、音もないんです。
なので「虚無感」を出すために必要最低限のオブジェクト以外置きませんでした。(作る気力がなかっただけなのは秘密)
でも、ルールとかわからないとゲームとして成立しないので、説明用の看板と、課金ボタン用の看板を制作して設置。
ってことでガチャと課金以外やることがない虚無空間が完成。
あらかた完成しました。
— TechNΘ (@Techno1109) 2018年2月25日
「ガチャを回してSSRを当てるゲーム」
みんな大好き課金も出来ます
※課金はジョークです。金銭の請求は発生しません。
しっかりと提供割合も表記させていただきました。#unity1week #unity3d pic.twitter.com/teoO46OW6w
完成
【ガチャシミュレータ】虚無空間と虚無ガチャ | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
そんなこんなで完成したのがこれです。
とにかく無であり、作業感を味わえます。
それかたくさん課金ボタン押しまくって大富豪の気分を味わうのもいいかもしれません。
感想
目標としていたところまで作りきれたので良かったかなと思っています。
Rayの勉強もこの制作を通して学ぶことができました。
あと、高校生時代最後のUnity1Weekでした。
専門学校への進学が決定しており、より一層制作に打ち込む時間が増えるので、今後はより一層ゲーム制作に精を出していきたいです。
ポートフォリオの役割も果たすのでたくさん作りたいですね。