投稿記事

自動化の記事 (5)

satofumi 2022/11/22 20:00

NPC をコーディングして領地運営するゲーム開発(エディタについて)

今回はゲーム中で Lua スクリプトを記述するエディタについての話題です。

エディタについて

一応はゲーム内に Lua スクリプトを編集するためのエディタを用意しますが、基本的には VS Code をインストールして使ってほしいと思っています。なぜなら、ゲーム内で私が作り込んでいくエディタを VS Code 並にしようとすると無限に開発コストがかかるからです。

VSCode(Visual Studio Code) について

いろいろ試したところ、Telcent が提供している LuaHelper という拡張機能を使うと VS Code で Lua スクリプトのコード補完や API 表示が実現できました。

↓API の表示例

↓コード補完の例


よい感じです。

そして、エディタを切り替える機能も設定パネルに実装しました。


ここで設定を切り替えると、ゲーム内でファイルをクリックしたときに、選ばれてるエディタでファイルを開く仕組みです。

まとめと今後の予定

次回は後回しにしてきた経験を積むとパラメータが上昇していくあたりに着手して記事を書こうと思います。
がんばります。

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 2021/05/21 20:00

ゲーム周回ツールの作成

政権マニフェスティアというゲームを購入しました。ただ、脳死周回してのレベル上げが苦痛だったので、周回を自動化するツールを作りました。

https://bitbucket.org/satofumi/seimani_clicker/
↑ツールのソースコードはここにあります。

やったこと

心の準備(言い訳)

ソシャゲみたいに利用規約でツールの利用が禁止されてるゲームでは、もちろん自動化ツールは使いません。でも、シングルプレイのゲームで、レベルアップにステージを繰り返しクリアする必要があり、そのクリアの手順がまったく同じだったりすると、なんというか、こう… 「むり、これは人間のやることじゃない」って思っちゃうんですよね。
なので、自動化します。
マウスの操作を記録して再生するツールでもゲームプレイの自動化はできるんですけど、自分で作りたいと思ったので作りました。

自動化する処理の流れを確認する

とりあえず書き出して処理を整理します。


なんというか、あまり自分を信用してないので、検討過程はなるべくドキュメントとして残すようにします。

自動化するスクリプトを作る

そして、確認した処理をコードにしたものがこれ↓です。


ゲーム開始を検出したときの最初の1回だけユニットを操作して、あとはリザルト表示の「再戦しますか?」の「はい」ボタンの位置をクリックし続けるようにしています。

ゲーム中かは Tesseract-OCR でゲームの残り時間を表示している部分の数値を読み取って判断しています。
詳しい処理は↓このリンク先の Python のクラスで確認できます。
https://bitbucket.org/satofumi/seimani_clicker/src/master/seimani.py

今後の予定

Flappy Bird クローンを作ることになったので、次回以降でその記事を書いていこうと思います。
あと、Bonsai Castle の不具合を修正したので、その記事も書きたいです。がんばります。

次回の更新: 月曜日の20時

月別アーカイブ

限定特典から探す

記事を検索