satofumi 2022/09/13 20:00

NPC をコーディングして領地運営するゲーム開発(ゲームで行う操作について)

ゲーム中でのコーディングと結果確認の流れは前回の記事で記述したので、今回はそのゲーム中で何を目的にコーディングするかについて記述します。

ゲームのクリア条件

まず、ゲームはステージを選択してプレイする方式になっていて、ゲームのクリア条件はステージごとに異なります。
最終的なステージでは「敵の最終ダンジョンを攻略せよ」がクリア条件になる予定ですが、チュートリアルを兼ねた序盤のステージでは「麦を5回収穫しろ」とか「パンを3つ作成しろ」なんかがステージのクリア目標になります。

ゲームで NPC に行わせること

NPC とは、ゲーム中でフィールドで行動する味方キャラクターのことです。


このキャラクターの行動をプログラミングして、各種タスクを行うことになります。
そして、キャラクターが行えるタスクの例を挙げていくと
  • 収穫用の大鎌を装備して畑で作物を「収穫」する系
  • フライパンを装備してキッチンで材料を料理に「変換」する系
  • 武装してダンジョンに移動して敵を倒しつつ「探索」する系
  • 敵が大群で押し寄せてきたときに弓を装備してタワーに移動して「防衛」する系

になります。改めて列挙すると「収穫」「変換」「探索」「防衛」ですね。
これらの「収穫」「変換」「防衛」は、適切なアイテムを装備した上で所定の場所に移動すればよく、この行動を Lua スクリプトで記述します。

例えば、城塞にある大鎌を装備するまでの Lua スクリプトは、こんな感じになります。

-- 城塞(Keep)に移動させて Items.Scythe を取って装備させる
local keep = world:keep()
character:move(keep)
character:get(Items.Scythe)
character:equip()

こういう「戦術」に近い基本的な行動をコーディングしたり、より効率よく収穫や運搬を行う「戦略」に近い要素のコーディングを楽しめるゲームを目指しています。

まとめと今後の予定

今回は、キャラクターにどういう行動を行わせる必要があるかについて記述しました。キャラクターが行動することで「料理アイテム」や「装備アイテム」が生産できるようになるわけですが、そのアイテムがどう使われていくかは次回の記事にまとめようと思います。

月別アーカイブ

限定特典から探す

記事を検索