Unityを使い、簡単なゲームを作ってみました。
ゲームのテーマは「在宅勤務」。希薄になりがちな「コミュニケーション」を少しでも円滑にできないかと思い、社員同士で競えるようスコアランキングも実装しました。
概要
製作期間は7日間。企画 0.5日、設計0.5日、実装5日、テストプレイ1日として計画しました。
制作画面は、ゲーム開始画面、メインゲーム画面、クリア画面、ゲームオーバー画面、ランキング画面の5つです。
企画
全くアイデアが出なくて困ったので、まずはテーマとなるキーワードを考えてみました。
キーワードとして出したのは ストレス解消、爽快系、3D、操作が簡単などです。
ゲームジャンルは3D感を出すため、奥に向かって走っていく「ランゲーム」に決定し、
ストーリー性があると面白いかと思い、企業戦士ならぬ「在宅戦士」を操作キャラクターにすることにしました。
道中のアイテムは、在宅勤務で必要な PC、デスクトップ、キーボードのほか、あればちょっと嬉しいものを配置しています。
「作るのが簡単」と「遊んで楽しい」を両立するのは難しく、企画を練るのは思ったよりも大変でした。
設計
プレイヤーの操作は、左右とジャンプのみにしました。
ステージは会社から家までの道のりをイメージ。
家にたどり着ければゴール、出社中のキャラクターと衝突、または、道路から飛び出してしまったらゲームオーバーとしました。
ゴール後は、ゲットしたアイテムの得点とタイムによってスコアを出すことにしました。
企画をしっかり考えていたため、設計は思いのほか進めやすかったと思います。
実装
ステージの作成とアイテムの配置
ステージとなる道は、GameObjectのplaneを4枚使用しています。
街並みは「Simple City pack plain」と「City Voxel Pack」で作成しました。
道中のアイテムは、「Snaps Prototype | Office」と「RPG Food & Drinks Pack」などを使用しました。
キャラクターを走らせる
プレイヤーは「Standard Asset」のキャラクターを使用しました。はじめからキーで動く状態に実装されているため、奥方向(z方向)へ自動で走るように ThirdPersonUserControl.cs を書き換えました。
そのままでは会社員の雰囲気が出ないため、「Man in a Suit」を使用してプレイヤーをスーツのおじさまに変更してみました。
アイテムの取得
アイテムをゲットした後、そのまま消しても良かったのですが、視界が狭くなって難易度が増すので面白いかもしれないと思い、プレイヤーと一緒に走らせてみることにしました。
アイテムの得点は、大きさと取りにくさから決定しました。
スコアの表示と時間の表示
ゲーム画面には、スコアと経過時間を表示しました。
ゲーム中のスコアと経過時間は内部的に保持し、シーンが変わっても呼び出せるようにしておきます。
最終的なスコアは、アイテムから時間を引いた値を算出することにしました。
スコア登録の際は、この最終スコアを呼び出して登録を行います。
妨害キャラクターの配置
妨害キャラクターもプレイヤーと同じスーツのおじさまを設定し、スーツを赤のマテリアルで染めました。
いかにも悪役な感じが出せたと思います。
向こうから歩いてくるようコードを書き換え、出社中をイメージしました。
各画面の作成
タイトル画面にはスタートボタンを、ゲームオーバー画面にはリトライボタンとタイトルへ戻るボタンを、ゲームクリア画面には、タイトルに戻るボタンと、スコアを登録するボタンを配置しました。
スタートボタンを押すとカウントダウン後にメインゲーム画面に遷移します。
ゲームオーバーの際のリトライはストレスを減らすため、カウントダウンなしでゲームに再挑戦できるようにしました。
スコアの登録(社内のみ)
作成したゲームのスコアをサーバーに保存するため、「python bottle」というモジュールを使用しました。
サーバー側では python のコードで Unity から受け取ったデータを辞書型で保持し、呼び出しに合わせてデータを渡します。Unity 側では UnityWebRequest を使用して、json形式での GET と POST を可能にしました。
感想とまとめ
企画や設計からやってみるというのは初めてだったので、想像以上に大変でした。アイデアが出ないときに、とりあえず書き出したのが良かったかなと思います。
プレイした方からは「意外と楽しい」、「カウントダウンでちょっとワクワクした」や「リトライ機能がほしい」、「画面が見づらい」など様々な感想を頂きました。意見を頂いて直した部分も多かったので、製作途中でも社内へ公開して良かったです。
制作期間は7日間でしたが、面白いものができたと思います。Unityをより使いこなせるようこれからも精進したいです。
使用したアセット
Standard Assets (for Unity 2017.3)
Snaps Prototype | Office
Simple City pack plain
City Voxel Pack
Man in a Suit
RPG Food & Drinks Pack
Free Laptop
Keyboard Adjustable Colors