投稿記事

籠城ゲームの記事 (100)

竹林ソフト 2023/04/18 20:00

ねこ巫女籠城ゲーム開発(ゲーム中の計算式を Lua スクリプトに行わせる)

ゲーム中のいろんな計算を外部ファイルの Lua スクリプトから実行できるようにします。こうすると

  • 開発中にパラメータ変更したときにリビルドが不要になる。
  • プレイヤーがパラメータを変更してプレイする仕組みを提供しやすくなる。

といったメリットがあります。
「実装が小難しくなる」というデメリットもあります。

MoonSharp アセットまわりの初期化

MoonSharp アセットを利用します。とりあえずちゃんと動作するので便利です。

↓コードの抜粋

詳しい使い方は公式ドキュメントやソースコードを見ればなんとかなります。

計算を Lua スクリプトで行わせる

パラメータを伴う計算は基本的に Lua スクリプトで行うようにします。
以下、最初に追加した Lua スクリプトと、それのテストです。

↓テスト用のプログラム

↓Lua スクリプト

最終的にはゲーム開始直後のキャラ立ち絵による会話なんかも Lua スクリプトでどうにかする予定です。

まとめと今後の予定

とりあえず実装が進んだのでよいです。
次回は城郭を作るつもりで建築操作をしながら見直しを行います。がんばります。

竹林ソフト 2023/04/11 20:00

ねこ巫女籠城ゲーム開発(敵に建物を近接攻撃させる)

敵が移動するようになったので、移動先に建物があったときに敵が近接攻撃するあたりを実装します。

移動先に建物があるときに攻撃を開始する

まず、移動先のグリッドに建物があったら移動から攻撃に状態を遷移するようにしました。

↓敵が建物前で止まった様子

建物とユニットのパラメータを実装する

私は xlsx ファイルよりも yaml ファイルに手書きする方が好きなので、YAML フォーマットで定義したデータを YamlDotNet アセットで読み取って利用してます。

ダメージ計算を行う

最終的には敵キャラクターのアニメーションとダメージを反映させるタイミングが合うようにするのですが、とりあえずは先程定義したパラメータに従って攻撃するようにします。
状態遷移もコードでベタ書きするのが好きです。

まとめと今後の予定

ここまでで移動する敵が建物を攻撃するようになりました。大変よいです。
次に何に着手するかは「ゲームを通してプレイするために最も必要な要素はなにか」を意識しながら改めて決めます。がんばります。

竹林ソフト 2023/04/04 20:00

ねこ巫女籠城ゲーム開発(経路探索用の移動グラフの実装)

敵や味方ユニットの移動につかう経路探索まわりを実装していきます。

経路探索には A* アルゴリズムを利用するのですが、このゲームでは橋の下を通れるようにしようと思ったので使うグラフのノードを (x, y, z) の 3D で表現します。

あと、フィールドが広いので「こうしたら計算量が減る」「こうしたら事前計算できる」とか仕様を考えすぎて開発に着手できていなかったので、割り切ってシンプルな実装でいいから動作することを目指します。

適切にモジュール分けできてるなら、後で修正すればいいんだよ。

移動グラフの作成

過去作品で実装したものを微調整して使うことにしました。基本的にはノードとエッジを追加するだけのシンプルな実装です。

経路探索の実装

これも過去作品で実装したものを使います。与えられたグラフを探索するだけなので、こっちは変更なしで動作しました。

↓敵ユニットを作成した経路に沿って移動させたもの。

とりあえず動作してます。

まとめと今後の予定

前回の記事で宣言した「移動グリッドはフィールドのグリッドより細かくする」とか「斜め移動」とか未実装の処理はありますが、ユニットが移動するようになったのは大変よいです。
まずは定期的に進捗を生むことを目標にがんばります。

竹林ソフト 2023/03/28 20:00

ねこ巫女籠城ゲーム開発(地面のグリッドと経路探索について)

日本の城郭を築城してねこ巫女で防衛する「ねこ巫女ディフェンダーズ」の開発記録です。
今回はユニットの経路探索をどうするかという内容で、具体的にはキャラクターの移動は A* アルゴリズムを使うけれども、この A* アルゴリズムで使う移動グラフをどうするかという内容です。

現状の実装と気付き

今は建物と地面(Terrain)の関係はこうなっています。

そして、ユニットにどこを移動させるか考えたときに、このグリッド線の上を移動するようにすると適切に地形の上を移動できます。ただ、壁もグリッド線の上に配置していて、壁の横を移動させようとすると壁のない頂点の位置は少し壁から離れ過ぎじゃないか? とか思いました。

また、グリッド線でできるタイルの中心同士で構成されるグラフ上を移動させようとすると、高低差がある地面の場合には地面を貫通して移動するな、とか思っていました。

考えた案

さっきのグリッド線の分割数を2倍にして、その頂点を移動グラフのノードにして隣接する8方向のグリッドに移動できることにします。

経路探索に使う移動グラフの実装が少し複雑になりますが、なんとかなる範囲だと思うので、未来の私は頑張って実装してほしいです。

あとは、橋みたいな下を通れるときの処理をどうするかとか、タイル1つぶんの細い橋があったときに橋の縁を移動できていいのかとか、そういうのは引き続き考えます。

まとめと今後の予定

A* アルゴリズムでの経路探索に使う移動グラフの表現方法を考えたので、もう少し仕様を考えてから実装していこうと思います。がんばります。

竹林ソフト 2023/03/21 20:00

ねこ巫女籠城ゲーム開発(フェーズの実装と敵1体の配置まで)

ねこ巫女籠城ゲームの開発記録です。
今回はゲームを通して遊べるようにする実装の1つとして、ゲームフェーズまわりを実装していきます。

ゲームのフェーズ

このゲームでは「建築」と「防衛」の2つのフェーズがあります。

建築フェーズ … 建築指示と実際の建築、防衛カラクリの配置を行う。
防衛フェーズ … 防衛する様子を眺めたり、自キャラで随伴兵を召喚して戦ったりする。

建築から防衛へのフェーズ切り替えは、プレイヤーがボタンを押して行うようにします。
時間制限をつけないことで、どう建築するかをじっくり考えられるようにしたいからです。
自キャラが移動できる仕様と時間制限がない仕様は相性が少し悪そうですが、動作してからまた考えます。

実装したもの

これが防衛開始のボタンを押したときに表示するパネルです。

地味ですね…
近いうちに敵が表示された縮小マップを表示して、それを見ながらキャラの配置を指示したりできるようにします。

そして敵キャラを1体ほど配置する実装もしました。

次回には、この敵を拠点に設定した建物に移動させたり、防衛カラクリがそれを攻撃するあたりを実装しようと思います。

まとめと今後の予定

少しずつでいいので実装していきます。がんばります。

月別アーカイブ

限定特典から探す

記事を検索