【開発日誌】~9日目:見た目変化がないところ&AIの話【UnityでRTS作るお】

間開いてしまいましたが、何もしてなかったわけではないですよ!
記事にするのもどうかなーって程度の細々としたところが多くなってきたので、
日誌といいつつも不定期更新に変えちゃいます。
でも、できれば1週間以上は間を空けないように気をつけます~

それにしてもみなさん負荷検証ネタお好きですなぁ
大したことは書いてませんが良かったらコチラも読んでいってくださいな

マップの負荷検証

ゲーム性は2Dなのにリソースがそろえられないってだけの邪道な理由でTerrainや3Dモデルを使っているので
そもそもスマホに耐えられるかちゃんと検証なきゃってことで、ざっと検証してました。
ちゃんとした検証じゃないので、メモ書き程度に残しておきます。

まずTerrainですが、サイズは256×256の高低差はつけない想定です。
で、First Fantasy for MobileにあるTerrain用テクスチャ14枚を全部登録して、
その中で適当に塗ってみたり、草を置いたりしたらNexus7でも全然30FPS行かなくて使い物にならなそうでした。

Terrainを諦めてチップ配置形式にするかとかちょっと悩みましたが
結論を言うと、実際に塗ってあるかどうかに関係なく登録してあるテクスチャが多いと負荷が高くなるようです。
登録するのを4枚くらいに抑えることで、60FPS余裕とまでは行きませんが、なんとか絶えられるレベルに。

モデルのほうは、モデルデータの造りにもよるので、特に検証してません。
とりあえず負荷見つつ置く数抑えればいいや感覚でやっていきます。

草も同様に。
マップのちょっとしたアクセントって感じで配置するのが丁度良さげですね。

2013-12-10 08.59.17

こんな感じに置いていけば、それなりな見た目にもできそう。

マップの管理

戦場のシーンはFieldSceneControllerというコンポーネント作って、その中にぶち込む方式でやっていくので、マップ管理もこいつにやらせます。

Start()のタイミングで、FindObjectsOfTypeでマップオブジェクトのコンポーネント取ってきて、
マスリストにそのインスタンス登録していくという荒業で対処。
どのマスかも簡単に、renderer.boundsのminとmaxをそれぞれ四捨五入して幅求めるだけで済ませました。
いろいろ問題もあるかもしれませんが、そこは力技で、オブジェクトのサイズをいじったりで回避しようかと思ってます。

オブジェクトの位置調整

ゲームデザイン的にマップオブジェクトはグリッド的に配置したいので、位置調整用のエディターをさっくり作りました。

TransformEditor

選択しているオブジェクト全部の位置の小数点以下切り捨てたり、切り上げたり、四捨五入したり。1マス単位で動かしたりできます。

ささっと作った割りに便利。

前回のスプライトのマージもそうですが、
一通り作業完了したらエディタ拡張や汎用コードを抜き出してGitHubにでも上げようかと考えてます。
まあ詰め合わせセットみたいになっちゃうので、使いやすいかどうかは別ですけどね

タップして選択

オブジェクトやユニットにCollider設定しておいて、NGUIのOnClickメッセージを受けたらFieldSceneControllerに渡すだけ。
Main CameraにUICameraアタッチするだけで入力チェック可能になるのでとても楽に実装できました。
NGUIいいよNGUI!

ただ、タップ以外はカメラ操作になって欲しいので、UIForwardEventsでカメラにメッセージを飛ばしなおすようにしています。
これもNGUIで用意されているものなので、さくさくっと導入。

あとは、選択したらUIに内容を表示して~とか細かな作業が待っていますが、ひとまず後回し~

ユニットの行動

操作的にはユニット選択後、タップしたターゲットに向かって歩いてもらう感じになります。

当初は単純にA*で経路探索して最短経路で移動先にまで着いて~とか考えていましたが
障害物を勝手に避けてしまっては面白くないですよね
防壁になるのに前に出て逆にダメージ受けたり、障害物壊せるのに敵ユニットに攻撃通る位置まで無駄に移動しようとしたり・・・
なので、もう少しAI的には凝った感じ、キャラ的にはちょっとおちゃめさんになるように行動選択には拘っていきます。

実装方法は、ファジー理論ってやつを使って、優先度にしたがって行動を選択していきます。

たとえば、物陰に隠れるのがどれだけ好きか、とか、
物があったら壊したくなっちゃう度合い、とか。
で・・・

物陰から出るのが怖くて突っつかないと前に出ない、そんなちょっと臆病なウサギっ娘・・・
木があったらついつい爪とぎしちゃうネコっ娘・・・
一人で行動するのが苦手で、近くに仲間がいないと安心できないイヌっ娘・・・

ぶはっ想像しただけでヤバイ!
まあ、ここでは全てを書きませんが、ちゃーんとキャラ愛を持って魂込めていくので安心してくださいな

システム的には、そこまで複雑な造りにはなってないと思うので、
割と頭使わずにシステム構築できそうです。
どちらかというと、頭使うのはAIの設定や・・・

ということで、今はここをせっせと作っております~
この辺のシステムは今週中には一通り済ませたいなぁ

Unityのアセット販売中!

ステートマシンの状態遷移やパラメータはエディタで編集でき、
ゲームロジックに依存するステートの挙動はスクリプトで記述可能なエディタ拡張。

詳細はこちら

RPGツクールVXやWOLF RPGエディターのオートタイルに準拠したエディタ拡張。

詳細はこちら

オススメ!