※本記事にはアフィリエイト広告(Udemy)を含みます。
はじめに
Godotを触りながら何か作ってみたいと思い、最初は2Dアクションゲームを作ろうと考えていました。
ただ、初めてのGodotプロジェクトとしてはアクションゲームは規模が大きすぎると感じました。当ブログでは以前からUnityのミステリーADV制作記などを書いてきましたが、Godotはまだ触り始めたばかりです。最初の一本は、覚えたい機能を一通り押さえられて、なおかつ短時間で完結する題材の方が向いていると考え直しました。
そこで今回は、以下のGodotの基本機能を学べる題材として、放置/経営シミュレーションゲーム「STATION OPS」を作ることにしました。
- Control(UI部品)
- Timer(時間経過の処理)
- Signal(イベント通知の仕組み)
- セーブ/ロード
- Resource(データの持ち方)
この記事では、STATION OPSの企画内容と、Godotプロジェクトの作成手順を紹介します。
STATION OPSってどんなゲーム?
STATION OPSは、宇宙ステーションの復旧を進める放置/経営シミュレーションゲームです。プレイ時間の目安は15〜30分で、短時間で最初から最後まで遊びきれる規模にしています。
ゲームの流れはシンプルです。
- クリックで電力を作る
- 電力を使って発電パネルなどの設備を購入する
- 設備が増えると、電力→酸素→部品という順番で資源が自動的に連鎖生産されるようになる
- 最終的には自動化モジュールを導入し、見守るだけのステーションになる
道案内役として、管理ドローン「ECHO」が要所でセリフを挟み、プレイヤーに次にやることを伝えてくれます。
今回の記事シリーズでは、この一本を作りながら、先ほど挙げたGodotの基本機能を段階的に学んでいきます。全8回の予定で、今回はその1回目です。
完成版は以下で実際に遊べます。
Godotプロジェクトを新規作成する
使用するGodotのバージョン
今回使用するのはGodot 4.7です。Godot 4系であれば大きな手順の違いはありませんが、バージョンによってUIの細部が変わることがあるので、大きく異なる場合はお使いのバージョンのドキュメントも確認してください。
新規プロジェクトを作成する
- Godotを起動し、プロジェクトマネージャー画面で「新規プロジェクト」をクリックする
- なぜ:Godotはプロジェクトごとにファイルが独立しているため、最初にプロジェクトの器を作る必要があります
- プロジェクト名に「STATION OPS」と入力する
- なぜ:この名前がそのままウィンドウタイトルや書き出し時のファイル名の元になります
- プロジェクトの保存先フォルダを指定する
- なぜ:Godotのプロジェクトは1フォルダにつき1プロジェクトが基本のルールです
- レンダラー(描画方式)の選択肢から「Compatibility(互換性)」を選ぶ
- なぜ:Compatibilityは要求スペックが低く、Web書き出し(ブラウザ実行)との相性も良いためです。STATION OPSは最終的にWebで公開する予定なので、ここで合わせておきます
- 「作成して編集」をクリックする
- なぜ:この操作でプロジェクトファイル(
project.godot)が生成され、エディタが開きます
- なぜ:この操作でプロジェクトファイル(
フォルダ構成を整える
プロジェクトを開いたら、左下の「ファイルシステム」パネルから以下のフォルダを作成します。
scenes:シーンファイル(.tscn)を置く場所- シーンとは、Godotにおけるゲーム画面や部品のひとまとまりの単位のことです
scripts:スクリプトファイル(.gd)を置く場所assets:画像・音声などの素材ファイルを置く場所
最初にフォルダを分けておくことで、ファイルが増えてきたときに迷わずに済みます。
オートロード(GameManager)を用意する
オートロードとは
オートロードとは、ゲーム内のどのシーンからでもアクセスできる、常駐スクリプトの仕組みです。STATION OPSでは、電力・酸素・部品といった資源の値をゲーム全体で共有する必要があるため、これをオートロードで管理します。
GameManager.gdを作成する
scriptsフォルダを右クリックし、「新規スクリプト」を選択する- スクリプト名を「GameManager.gd」にする
- 継承元(Inherits)は「Node」のままにする
- なぜ:オートロードはシーンツリーを持たない単純な処理の置き場所として使うことが多く、Nodeが最も軽量な基底クラスだからです
- 以下の内容を記述する
extends Node
## STATION OPS 資源管理オートロード
# 資源(電力が基軸、酸素・部品は今後の記事で連鎖させる)
var power: float = 0.0
var oxygen: float = 0.0
var parts: float = 0.0
# アップグレード段階
var upgrade_stage: int = 0
func _ready() -> void:
print("GameManager 起動: 資源初期化完了")
この段階では、資源を表す変数を宣言しているだけです。クリック処理や自動生産のロジックは、③・④の記事で追加していきます。
プロジェクト設定でオートロード登録する
- メニューの「プロジェクト」→「プロジェクト設定」を開く
- 「オートロード」タブを選択する
- パス欄で先ほど作成した
GameManager.gdを指定する - ノード名が「GameManager」になっていることを確認し、「追加」をクリックする
- なぜ:ここで登録することで、他のどのスクリプトからも
GameManager.powerのように直接アクセスできるようになります
- なぜ:ここで登録することで、他のどのスクリプトからも
登録が終わったら一度ゲームを実行し、出力パネルに「GameManager 起動: 資源初期化完了」と表示されることを確認してください。これで今回の作業は完了です。
今回のまとめと次回予告
今回は、STATION OPSの企画内容を紹介したうえで、Godotプロジェクトの作成とオートロードの用意までを行いました。まだ画面には何も表示されませんが、資源を管理する土台はできています。
次回②では、実際に画面に表示するUIを構築していきます。VBoxContainerという部品を使って、ヘッダー・資源表示・ECHOのセリフ欄・アップグレード一覧・クリックボタンを縦に並べていく予定です。
Godot学習におすすめのオンライン講座
今回のようにGodotを基礎から学び直したい方には、Udemyの講座もおすすめです。体系的にまとまった教材で一通り学んでおくと、こうした自作プロジェクトでもつまずきにくくなります。


コメント