投稿記事

2024年 03月の記事 (22)

竹林ソフト 2024/03/10 20:00

再建を繰り返す街づくりゲーム開発(フィールド生成の実装と仕様決め)

いくつかの要素を実装したり、仕様を決めたりしていきます。

やったこと

建物の建築プレビュー時に色を変える

建物をプレイヤーの操作で配置するときに、建築できるなら緑色、建築できないときには赤色にするあたりを実装します。この実現方法は前回の記事で動作確認したのを取り込むだけでした。

↓ 建築プレビューの建物画像を緑色にした様子

↓ 赤色にした様子

よいです。
緑色の画像が背景画像に溶け込んでいる気がしますが、色はそのうち再調整します。

決めた仕様でフィールドを生成する

InteliMap Pro アセットを使ったマップ生成を、少し広めのエリアに対して行ってみました。

↓ 生成したもの

これは 32x32 のタイルのまとまりを1エリアと呼んだときに、それを 5x5 並べて表示しています。そして、この 25 エリアの生成に 4691 msec かかりました。
1エリアが約 200 msec とすると、生成速度は遅すぎず無視できるほど速くもなくて悩ましいです。

また後でいろいろ考えます。

仕様を決めていく

書き出してみました。

# 建築の流れ

- プレイヤーが建築指示を行う。
- その場所に半透明の建築予約の描画がなされる。
  - そこにある樹木や瓦礫に撤去マークがつく。
  - 撤去が終わったら次のフェーズに遷移する。
- この状態の建物のストレージに必要資材が運び込まれる。
- 建物の搬入が完了したら、ワーカーが寄ってきて建築の進捗を増やす。
- 建築し終わったら、その建物として動作し始める。


# 建物への運搬

- 建物に配属されたワーカーが運搬を行う。
- 工場の場合は、搬入資材の数だけ搬入元を指定する。
  - 搬入すべき資材を、どこから運ぶかを指定する。
- 倉庫の場合は、建物ごとの最大数までの資材を搬入先に指定できる。
  - どこからどの資材を搬入するかを指定する。


# 建物の情報表示

- 作られるアイテムの画像を建物画像に重ねて表示する。
  - 生産の進捗状況を丸いプログレスバー表示する。

- アイコン表示
  - 搬出ストレージに空きがないときのアイコン表示
  - 搬入待ち資材のアイコン表示

- フォーカス時
  - ブーストゲージ
  - 所属しているワーカーが建物外にいるときに、そのワーカーの場所
    - ワーカーは自宅に帰り出した時点で所属でなくなる。
  - 総生産数などの各種情報
  - ワーカーの最大数と所属数


# 住居

- 充実度がある。
  - 薪や食べた食事によって住民の充実度が変わる。
  - 空き家の充実度は市場に所属する住居の充実度の平均値で計算する。
    - 住民がいない場合は、市場の資材を管理する住宅の数で割った平均値から計算する。
  - 仕事帰りと最初に自宅に移住したときに市場で食事をして、薪を持って帰宅する。
  - 帰宅して疲労がなくなったら仕事に出かける。
    - 薪があるときは普通に疲労が回復して、なければ少しの回復にする。


# 市場

- 住民が立ち寄って資材を持っていく特殊な倉庫として扱う。


# 生産施設

農場や牧場など。

- ワーカーの数に応じて資材が生産される工場として扱う。
- 肥料や飼料でのブーストは考えない。


# 日数の経過とワーカーの休息について

- 昼夜の概念はない。
- ワーカーが疲れると帰宅する。
- 帰宅して休憩して出かける際に新しい仕事を選択する。
- 日数の経過で定期的に敵が襲撃してくる。

よいです。

まとめと今後の予定

いくつかの実装をして仕様を考えたりもしました。
次回は敵がわらわらと押し寄せてくるあたりを試作したり、ワーカーが働くあたりに着手しようと思います。がんばります。

竹林ソフト 2024/03/08 20:00

NPC をコーディングして領地経営するゲーム開発(ダンジョン探索からの帰還エフェクト作成)

キャラクターがダンジョン探索から帰還するときのエフェクトまわりを調整します。

やったこと

弓矢で攻撃したときにダメージが入らないのを修正した

確認したところ、パラメータ設定ファイルの読み込みの実装を変更したときの影響で「弓矢は距離が離れていても攻撃が命中する」という設定になっていませんでした。修正しました。
よいです。

帰還エフェクトを作成した

Epic Toon FX アセットの LevelupCylinderWhite を改造して使うことにしました。

↓ 適用した様子

よいです。

上を向きながら移動するのを修正した

↓ 攻撃後の歩きモーションで少し上を向いてしまっていました。


使っているアセットのアニメーションまわりを修正して対処しました。よいです。

アイテム入手エフェクトを適用した

ダンジョン探索でアイテムを入手したときに、入手アイテム枠にエフェクトが表示されるようにしました。

↓ 調整中でエフェクトが大きすぎる様子

↓ 調整した様子

よいです。

まとめと今後の予定

今回はダンジョン探索パネルまわりのエフェクトを調整しました。よいです。

次回は引き続きチュートリアル2章をプレイしながら気付いた点を修正するのと、現状は Lua でコーディングするのですが Python 対応できるか試してみて週の2つ目の記事として投稿できればと思います。がんばります。

竹林ソフト 2024/03/05 20:00

ニャン作くんのゲームを作りたい(とりあえず考えを書く)

みなさんご存知、そして大好き ばぶー! DLsite クリエイター学園 のニャン作くんですが、トップページにガイドラインが公開されていて二次創作が可能です。

やったね!

しかもなんと、多くのキャラの二次創作では禁止されている「公序良俗に反する行為を禁じる」というルールがありません!

いやっふー!

なんというか、こういうノリは私は大好きです。
大好きなので、なにか作品を作りたいのですが DLsite や Booth で検索してもニャン作くんのモデルやイラスト系の素材が販売されていません。

つまり自作するしかないのです。

「ついに来てしまったか、自分でモデリングする日が」

という気分です。

やりたいこと

書きたいことは書いたので、後は箇条書きでまとめると

  • ニャン作くんが登場するゲーム系の作品を作りたい。
  • モデリングする。
    • 最初は MagicaVoxel で。
    • 次は Blender か UModeler で。
  • ゲーム案を考えて仕様を書く。
    • 公序良俗に反する展開もオッケー
    • 3D モデルなニャン作くんを写真撮影するゲームとか。
    • 2D キャラなニャン作くんが活躍するプラットフォーマーなゲームとか。

なんかを考えています。

あ、ちなみに「ニャン作アクスタ触手遊びセット💗」はもちろん購入済みです。
よいですね、これ。

やったこと

とりあえず Magica Voxel でモデルを作ってみました。

なんだろな、全然ダメじゃないんだけと目を引く出来栄えでもなくてコメントしづらいです。むつかしいですね。
モデルをどうするかは、ゲームの内容が決まってから再考します。

まとめと今後の予定

ニャン作くんの二次創作なゲームを作りたいですが、アイディアはまとまっていません。
ニャン作くんへの想いがあふれてきたら、今回の用に不定期な記事になにかしら書こうと思います。がんばります。

竹林ソフト 2024/03/04 21:00

ねこ巫女籠城ゲーム開発(石垣をプレイヤー操作で配置できるようにしていく)

少しずつでも開発していきます。私が開発しないと完成しないので。

やったこと

動作しなくなっていたのを修正した

石垣を何段積むかといった変数を導入したことで、とりあえず動作しなくなっていたのを修正しました。

↓ 配置した石垣の積んだ数がゼロとして扱われて黒塗りになってしまっている様子

↓ 修正した後の様子

よいです。
動作確認の大事さがよくわかります。

石垣を積み上げられるようにする

いろいろと理解が不足していて手こずりましたが、最終的に動作しました。

↓ 同じ場所に石垣を配置すると高さが変わっていく様子

よいです。

まとめと今後の予定

今回は石垣の建築まわりの動作確認と、すでに石垣がある場所に建築指示である左クリックをしたときに石垣が高くなっていくあたりを実装しました。よいです。

あとは投稿時刻がいつもより1時間ほど遅れましたが「明日の投稿にするか」よりは良い決断ができました。よいです。

次回は「石垣を連続直線の操作で配置できるようにする」や「石垣の接続を考慮して石垣の形状を変える」に着手します。がんばります。

竹林ソフト 2024/03/03 20:00

再建を繰り返す街づくりゲーム開発(マップ生成について)

マップは InteliMap Pro アセットで生成したものを使うことにします。
今回は、実際の使い方について定義します。

やったこと

IntelMap Pro でのランタイムマップ生成

このアセットは「こういう感じでマップ生成してね」というものを解析させると、それを元にランダムなマップを生成してくれるものです。

前回から引き続き使ってみた感じ、

  • 指定した範囲のマップを生成できる。
  • 生成の際にシードを指定できる。
  • 同じエリアに複数回の資源配置を行うことで、資源量を上乗せできる。
    • 川なんかの接続は考慮される。

ということがわかりました。

↓ 与えたオブジェクト配置

↓ 生成サンプル(クリア、1回目の生成、2回目の生成、3回目の生成、のループ)

つまり、ランダムシードと資源配置の回数さえ同じなら全く同じマップが生成されるので、例えば 64x64 を1エリアとして、このエリアごとのランダムシードと配置回数とが同じになるようにすればいいだけです。

なので、1つのランダムシードさえセーブデータに保存しておいて、それから他のエリアのためのランダムシードを生成して使う仕組みにします。

あとは、例えば木を伐採したときには「この座標の木は伐採されてあと N ラウンドで復活する」という変更された情報だけ保存するようにします。

実装自体はまた後でやりますが、ベースとなるランダムシードに対して、例えばエリアの座標が (x, y) で表されるとしたら、seed = baseSeed + (y << 16) + x; でいいかなと思っています。資源を生成する回数は (x, y) と原点との距離で決まるようにします。

建物画像へのアウトラインや色のテスト

フィールド上の建物にフォーカスしたときにアウトラインを描画したり、建築のときに建物画像を緑色や赤色にするあたりを実装します。

実装というか、そのあたりの実現のために All In 1 Sprite Shader アセットを利用します。

そして、ドキュメントを読んでアウトライン、全体を緑色にする、赤色にする、を切り替わるデモを作成しました。

        while (true)
        {
            material.EnableKeyword("OUTBASE_ON");
            yield return wait;
            material.DisableKeyword("OUTBASE_ON");

            material.SetColor("_GreyscaleTintColor", Color.green);
            material.EnableKeyword("GREYSCALE_ON");
            yield return wait;
            material.DisableKeyword("GREYSCALE_ON");


            material.SetColor("_GreyscaleTintColor", Color.red);
            material.EnableKeyword("GREYSCALE_ON");
            yield return wait;
            material.DisableKeyword("GREYSCALE_ON");
        }

いずれこのコードを建物の処理まわりに実装すればオッケーです。よいです。

ゲーム仕様の検討

ゲーム仕様というか、ゲーム序盤の流れを書き出しました。

- 新規ゲーム -> シナリオ選択 -> マッププレビュー -> 決定
- 画面下の建物ボタンにカーソルを合わせてツールチップ表示で概要や建築コストを確認できる。
- 建築できない建物のツールチップには「(~の技術)が必要」などと、わかるように表示する。
- setup.lua で指定した資源の総数が画面上に表示できる。
- 資材が足りない場合、建物を赤色プレビュー表示する。
  - 資源が不足していても建築指示は行える。
- 初期に必要になる建物は木材だけで建築できる。
  - 住居など
- 整地ボタンを押してエリアを指定すると、エリア内の木材の伐採や建物の解体を行う。
  - 整地したエリアは道として扱う。
    - 地面の種類: なし(緑)、草、整地、道、舗装路、線路
- 拠点から接続されていない場所の木材の伐採指示が行われたときには警告メッセージを表示する。
  - 「拠点から道がつながっていません」
  - 警告アイコンをフィールドに表示
    - フォーカスでメッセージ表示
  - 画面に警告のリスト表示
- ワーカーの最大数は時間経過や技術で増える。
  - setup.lua で設定できる。
- 拠点は市場として機能して生活品を住居に運搬する。
- 拠点は定期的に食料を生産できる。
- ゲーム開始時に大量の食料を拠点に配備しておいてもいい。
- 研究は専用の建物で行う。
  - Factorio と同様に、必要なアイテムが揃うと研究ポイントが増加する。
- ワーカーは仕事を始めると、帰宅するまで他の仕事を行わない。
  - 仕事は種類優先でワーカーを割り振る。

まだ敵とか防衛とかリーダーの要素など、いろいろと仕様が曖昧なので、引き続きゲームの流れを考えながら仕様を決めていきます。

まとめと今後の予定

仕様を決めながら、使うであろう機能の要素実装を行いました。よいです。
次回もこんな感じで進めていきます。がんばります。

1 2 3 4 5

月別アーカイブ

限定特典から探す

記事を検索