投稿記事

Luaの記事 (4)

satofumi 2022/11/15 20:00

NPC をコーディングして領地運営するゲーム開発(11/15)

どういうゲームかは紹介し終えたので、今後は淡々と開発日記としてやったことを記録していきます。

やったこと

実績の追加

Steam の実績を登録して、それの条件が達成されたときに実績が取得されるあたりを実装しました。
まだ実装してない機能についての実績まわりは未実装ですが、それ以外の「ワールド N をクリアする」とか「じゃがいもを収穫する」とか、そういうのは実装して動作するのを確認しました。よいです。

全てのチュートリアルステージをクリアできるようにした

とりあえず自分でステージのクリア条件を書いて、それを達成できるスクリプトも自分で書きました。これで全ステージがクリアできることが確認できました。よいです。
スクリプトの一部を穴埋めにして「ここに~のコードを書こう」的なコメントの追加は引き続き行います。

まとめと今後の予定

引き続き開発していきます。
残っている大きなタスクは「スキル」と「レベルアップ」要素ですが、これらは仕様もまだ決めてないので、そのあたりからやっていきます。

satofumi 2022/11/08 20:00

NPC をコーディングして領地運営するゲーム開発(チュートリアルの作成)

ゲームシステムの開発と平行して、チュートリアルを兼ねたステージの作成を行っています。というか、そろそろこっちの開発のほうがメインになりつつあります。

チュートリアルの流れ

このゲームは、農民や鍛冶屋、冒険者といったキャラクターの行動を Lua スクリプトで作成するゲームです。そして最終的には育成した冒険者で敵拠点のボスを倒すゲームにしようとしています。
つまり、プレイヤーに求めることとして

  • 各キャラクターのタスクを記述できる。
  • フィールドに追加したキャラクターで食料の生産を適切に行える。
  • 敵拠点からの軍勢を防衛できる。
  • 冒険者の装備とスキルを強化できる。

といった内容があります。そしてこれらは全て Lua スクリプト経由で指示します。
なので、Lua スクリプトについてのチュートリアルを行いつつ、ゲームで用意した API(Application Programming Interface)を使ってキャラクターを操作できるようになってもらう必要があって、それをチュートリアルを兼ねたステージで解説するようにします。

ワールドとステージ

説明すべきことを大きく「生産」「探索」「防衛」に分け、実際にプレイする単位をステージ、複数のステージをまとめたものをワールドと呼ぶことにしました。
例えばこれらがワールド選択とステージ選択のスクリーンショットです。


今はチュートリアルのステージしかありませんが、各チュートリアルを終えたあとに遊ぶためのステージも用意したいです。
最終的には

  • チュートリアルのステージから構成されるワールド
  • チュートリアルの続きからエンディングまで用意されたワールド
  • 各チュートリアルの要素まででプレイできる単発ステージからなるワールド
  • Steam Workshop 経由でダウンロードできるワールド

といったものが並ぶようにしたいです。

まとめと今後の予定

とりあえずはゲームとして動作するようになってきたのですが、キャラクターの能力やスキルアップの概念が未実装だったり、アイテムや装備品のデータ追加が最低限だったり、エフェクも未実装だしで、まだまだ開発途中です。
リリースまでもう少し時間がかかる気がしますが、開発がんばります。

satofumi 2022/09/06 20:00

NPC をコーディングして領地運営するゲーム開発(どういうゲームなのか)

今回は、どういうゲームを作っていて、それがどう楽しいか(予定)についての記事です。

ゲームの流れ

Lua 言語でコーディングをして NPC の行動を自動化するゲームなので、当然のようにコーディングを行います。そして、そのコーディングの結果であるキャラクターの動きを見ながら、期待する動作になるまでコーディング内容を修正していきます。

流れをスクリーンショットで説明すると

チュートリアルでは未完成のコードが用意されているのでそれを動かしてみて、

どういう記述が不足しているか理解した上でコーディングして、

期待する動作になるまで API やサンプルコードを読み直してコードを修正する。


という流れになります。

どう楽しいのか

簡単に書くと、ゲームにおいて楽しさにつなががる「今はこういう状況だ(現状把握)、こうすれば良いはずだ(計画)、やってみよう!(実行)、できた!(報酬)」のサイクルをコーディングを通して提供しようとしています。

とはいえ、コードが適切に動作するまでに理解することは多いため、人によっては楽しさを感じる前にコーディングを苦痛に思ってしまうかもしれません。そうならないように、適切な難易度上昇のチュートリアルを用意しようと考えています。

ゲームで提供する必要がある機能

コーディングするとキャラクターがどう動くのかは次回の記事にまとめようと思います。
ただ、その仕組みの実装を別にしても

  • 記述したコードに従って動くゲーム画面
  • コーディングするためのエディタ
  • Lua 言語についてのドキュメント
  • 提供する API についてのドキュメント
  • 適切な難易度上昇のチュートリアルステージ
  • 記述したコードにエラーがあったときの適切な対処

などを実装する必要があり、正直大変です。初心者向けのコーディング講座の資料を書くのよりも、もう少し大変なくらいかなと思います。
このゲームを作っていて「遊ぶ人少ないだろうに、こんなに大変なの割に合わないのでは…」と思いかけることはありますが、なるべく考えないようにして開発しています。

今後の予定

次回は Lua 言語で NPC のどういう行動を制御して領地経営するのかという、ゲームのより具体的な内容について記述していきます。がんばります。

satofumi 2022/08/30 20:00

NPC をコーディングして領地運営するゲーム開発(はじめに)

NPC をコーディングして領地運営するゲームを開発しています。影響を受けたゲームとしては Screeps: WorldAutonauts vs Piratebots, 7 Billion Humans があり、これらのゲームを遊んでいて「コードを直接記述したい」とか「システムや API をもっとシンプルにしたい。私が理解しきれないので」という想いがつのって、ゲーム開発の気分転換として着手しました。

どういうゲームなのか

シンプルなクラフトベース街づくりゲームにおいて、Lua 言語でコーディングした NPC に運搬やクラフトをさせるゲームです。

NPC にコーディングして行うタスク

  • アイテムの収穫
  • アイテムのクラフト
  • パーティを組んで探索する
  • タワーに籠もって防衛する

ゲームサイクル

  • NPC の動作を Lua スクリプトで記述する
  • NPC がコードに従って動作するのを眺める
  • 問題点を理解してコードを修正して再実行する

開発中のゲーム画面


今後の予定

このゲームは自分でも「誰が遊ぶんだこれ」という内容ですが、そこは気にせず開発していきます。
しばらくは、どういうゲームにするかのアイディアや開発予定について週1回のペースで記事投稿します。よろしくお願いします。

月別アーカイブ

限定特典から探す

記事を検索