見出し画像

Unity アークナイツライクなタワーディフェンスゲームを作りたい① ステージ制作

こんばんは。異格ジェシカの「クソが」に脳を焼かれました。

何の気づきもないまま今期の開発案件を全て終えてしまいました。

開発「業務」の備忘録として何も書くことがないので、前から取り組みたかったUnityでのゲーム開発について、しばらく記載しようと思います。

参考があった方が進めやすかろうということで、筆者が愛するタワーディフェンスゲーム「アークナイツ」っぽいゲームを作ることを目標とします。

アークナイツとは

概要

アークナイツとは、Hypergryphが開発し、Yosterが配信を行なっているタワーディフェンスゲームです。
「鉱石病」と呼ばれる感染症が蔓延する世界「テラ」で生きる住人たちの物語が描かれています。

ゲーム内容

「防衛ライン」に向かう敵たちを、配置した味方「オペレーター」によって排除することが目標です。

プレイしている様子

ステージの構成要素としては以下の5つです。
①防衛ライン(左端の青い立方体):敵に侵入されると残機を失う
②敵拠点エリア(右端の赤い立方体):敵が出現する
③地面:味方オペレーター(対陸)を配置可能
④高台(画面上の白いマス):味方オペレーター(対空)を配置可能
⑤その他:壁等

他にもあるのですが、最小の構成要素は上記になります。

今回の目標 -ステージを作る-

今回の目標はまずステージを作ることです。
開発環境にはUnityを選びました。

Unity はインタラクティブなリアルタイム 3D(RT3D)コンテンツを制作して動作させるための、世界をリードするプラットフォームです。

https://unity.com/ja/our-company

3Dゲームを開発するためのプラットフォームですね。

当初は業務でも使っているWPFで作りたかったのですが、どうもWPFはゲーム制作には不向きなフレームワークのようなので、諦めました。

WPFは、イベント駆動が前提、すなわち、何かイベントがあるまで画面を再描画しないという前提の下でパフォーマンスが最適化されている。ゲームのように、高頻度で再描画を行うようなものには適していない。

https://atmarkit.itmedia.co.jp/ait/articles/1102/02/news100.html

やったこと

①3Dゲームプロジェクトの作成

まずはUnityを起動し、3Dゲームのプロジェクトを作成します。
起動画面から、「新しいプロジェクト」を選択します

起動画面

「3D(コア)」を選択します。プロジェクト名になんかそれっぽい名前をつけましょう。

プロジェクト作成

これでプロジェクトの作成は完了です。

②3Dオブジェクトの配置

前述したステージの構成要素を、3Dオブジェクトとして配置していきます。
Hierarchyタブ上で右クリック > 3Dオブジェクト > Cube で直方体を配置することができます。

Cube作成

作成したキューブに色をつけるには、Project上で右クリック > Create > Materialで描画用のパラメータを作成します。

Material作成

ステージの構成要素に合わせて4つのMaterialを作成しました。これをドラッグアンドドロップで配置したオブジェクトに割り当てることで、色をつけられます。

作ったMaterial

最終的に出来上がったものが以下になります。

ステージ

安っぽいですが、それっぽいステージを作ることができました。

これからやること

Unity初心者なのであんまり今後の方針が明確にわからないですが、
ひとまず今後の実装手順としては

①敵・味方オブジェクトの作成
②当たり判定の実装(地面、高台、敵、味方)
③イベントの実装(敵出現、味方配置、敵侵入、ゲームオーバー等、、、)

なのかなぁと思っています。

やってみて思ったこと

①オブジェクトの配置がクソほど面倒臭い

本当に修行している感覚でした。
あんな安っぽいステージを作るだけでこれだけのオブジェクトを配置する羽目になりました。

嘔吐

横長の壁とか地面とか、それ一個でオブジェクトにしたらええやんって思ってたんですが、オペレーターを1マスに配置することを考えた結果全て分けることにしました…

多すぎてどれがどのオブジェクトかわからず、後から編集するのが大変です。

正直、実務でUnity開発をする際にこんなことしてると思えないので、何か効率の良い方法があるのだろうと思います…要改善です。

②Unityの操作性・仕様に慣れない

直感的にオブジェクトを動かしたりできるのは良いのですが、オブジェクトの量が多くなってくると「もう全部スクリプトで書かせてくれ…」という気持ちになってきます。

あとは、オブジェクトに色をつける、枠線をつけるためにMaterialやら何やら作成しないといけないのも慣れないですね。
オブジェクト自体のプロパティとして持たせられんのかと。

まあ、慣れだったり、「そうした方が後々便利」的要素だと思うので頑張って慣れたいです。

結び

あまりアークナイツそのものに触れられませんでしたが、良ゲーなので是非やってみてください。
私の嫁のフランカを貼ってお別れです。

初コーデ実装おめでとう

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