「ここに建築してね」という建築指示を即座に反映させる建築処理は動作したので、次はワーカーが建築指示の場所に資材を運んで時間をかけて建築するあたりの検討を行います。ただ、資源を誰がどう運ぶかの仕様は決めきれていないので、今回は建築に使う資材は必要に応じて急に発生することにします。
実装したいこと
簡単に説明すると Factorio というゲームで、自キャラの建築ロボットが範囲内にある建築予定の建物を一斉に建築していくようなことをしたいです。
必要な処理としては
- 操作キャラの範囲内にある建築予定の建物、地形を取得する。
- 資源の搬入元を決める(今回は省略する)
- 召喚したワーカーに資源の搬入先、建築作業先を割り振る。
です。
ここまでで、間違いなく実装が小難しいのがわかります。
実装すること
最初に地形の編集のみを検討していきます。地面の整地が終わってから建物を建てないと建物が地面に埋まったりと色々おかしくなるからです。整地が先、建築は後、です。
操作キャラの範囲内にある地形の取得
これは、すでに建築済みと建築予定の情報を分けて管理しているので、そこから取得すればオッケーです。
資源の搬入元を決める
小難しい実装は省略しますが、地形についての処理を書き出してみると
- 地面を高くするときには、土資源を使う。
- 地面を低くするときには、土資源が発生する。
です。
これは、城郭作成における「堀を作るときの土資源を土塁を作るのに使う」というあたりを表現したいためです。
ここまでで
- フィールドには資源を置ける。1つのタイルに資源を複数置けるかは決めてない。
- ワーカーは資源を持って運べる。
- 土資源を持っているワーカーは、盛土の作業をして地面の高さを上げられる。
- 資源を持ってないワーカーは、掘削の作業をして地面の高さを下げて土資源を得られる。
という仕様になります。
このあたりを実装するにあたって、ワーカーとフィールド上の資源もセーブデータに含まれるようにする必要がありそうです。
とりあえず、召喚ワーカーが目的位置に移動して労働(一定の時間が経過)したら地面の高さが変わるあたりまでを実現したいです。
ワーカーについて
ワーカーには大きく2種類を予定していて「住民ワーカー」と「召喚ワーカー」です。
Factorio を例に説明すると、それぞれ「ロボットステーションの建築ロボット」と「携帯ロボットステーションの建築ロボット」です。
住民ワーカー
住民ワーカーは VRoid Studio で作ったモデルに和服を着せたものにします。衣装は Booth で売ってた 【VRoid衣装セット】ねこ着物 を使います。
↓衣装を適用して既存の巫女モデルと並べたもの
並べてみると既存の巫女モデルは顔が大きくなるように調整してたのがわかります。(忘れてました)後で住民ワーカーにもデフォルメ設定を追加します。
召喚ワーカー
こっちは「木製のからくり」っぽさを出そうと思っていて、Unity Asset Store で Bat Bots というアセットを購入しました。
↓ Bad Bots のストアページより
これのテクスチャを木製のものにしたり、弓矢や火縄銃を取り付けて利用したいと思っているのですが、また後でやります。
まとめと今後の予定
とりあえず、ワーカーの動作を書き出しました。大変よいです。
あと、今は建築モードでないときには、建築予定の建物が全く表示されないのですが、他の多くのゲームと同様に半透明で表示してもいいかなと思い始めました。もう少し考えてから実装します。
次回になるかは未定ですが、ワーカーによる建築も実装していきます。がんばります。