Godotでstgを作る #1 準備
はじめに
「ゲーム制作者を志してパソコンを買ったはいいけれども、UnityやUnrealEngineは重すぎる」
安いパソコン(特にハードオフなどのジャンクPC)だとよくある問題です。
そこで活躍するのがGodotというオープンソースのゲームエンジン。Unityなどと比べて軽量であること、Windowsはもちろん、Linux、mac、FreeBSD、果てにはHaikuという幅広いOSで動作するのが特徴のゲームエンジンです。
しかし、Unityなどに比べて普及していないのか、本屋を見てもあまりGodotについて解説している本は見当たりません。
そこで、当ブログではGodotで2dスクロールシューティングゲーム(いわゆる弾幕stg)を作る方法を書きたいと思います。
なぜシューティングゲームなのか、なぜ2dなのかというと、
1.2dの方が3dよりも扱いやすい
2.弾幕stgだと物理法則が絡む動きが少ないため、三角関数などのゲーム制作で基本となる関数を身に付けやすい
以上の2点から初心者向けだと筆者が勝手に判断したためです。
この記事では「準備」ということで、WindowsとLinuxでGodotエンジンの準備から"Hello world"の表示まで説明していきたいと思います。
なお、当ブログではGodotの炎上事件については触れません。悪しからず。
パソコンの準備
Godotエンジンはパソコン上で動きますが、どんなのでも動くというわけではありません。
VulkanというグラフィックスAPI(画面上に図形や画像を描画するライブラリと思ってください。)にハードウェアが対応していることを確認してください。
今日の殆どのGPUが対応していると思いますが、十何年前のジャンクPCなど対応していないときは新しいビデオカードを買って付けてください。
エンジンの準備
Godotの学習をするためにGodotエンジンが必要です(小泉構文)。
そのため、ここではGodotエンジンの準備をします。
Windowsの場合
ここから"Godot Engine"と書いてあるボタンをポチッと押せば、寄付するかどうか聞かれたあとにダウンロードできるはずです。
寄付しなくても別にダウンロード自体はできますが、お金が有り余っている人は寄付してあげてください。
次に、ダウンロードしたzipファイルを解凍すると、
"Godot_v[バージョン名]-stable_win64.exe"と
"Godot_v[バージョン名]-stable_win64_console.exe"という2つのファイルがあります。
前者をダブルクリックすると、プロジェクト選択画面が開きます。
あとはプロジェクトの作成まで読み飛ばしてしまって構いません。
Linux系の場合
ここから"Godot Engine"と書いてあるボタンをポチッと押せば、寄付するかどうか聞かれたあとにダウンロードできるはずです。
寄付しなくても別にダウンロード自体はできますが、お金が有り余っている人は寄付してあげてください。
次に、ダウンロードしたzipファイルを解凍すると、
"Godot_v[バージョン名]-stable_win64.exe"というファイルがあるはずです。
実行すればプロジェクト選択画面が開きます。
プロジェクトの作成
ここからはWindowsとLinuxで共通の操作になります。
先程の操作でこんな画面が開いたかと思います。
赤枠で囲った"新規プロジェクトを作成"というボタンを押すと、こんなウィンドウが開くはずです。
この"新しいゲームプロジェクト"と書いてあるテキストボックスにプロジェクトの名前を指定してください。
この記事ではパソコン向けのSTGを作る想定で書いているため、プロジェクト名を指定したら"作成して編集"ボタンを押してください。
こんな感じのwindowが出ればプロジェクトの作成は完了です。
Hello World!
プログラムの基本、新しくプログラミング言語を学ぶ上で最初にすべきことは"Hello World!"を表示することです(諸説あり)。
赤で囲んだところを右クリックして"新規作成"->"フォルダー"から、"sprite"、"scene"、"script"の3つのフォルダーを作ってください。
次に"scene"フォルダを右クリックして"新規作成"->"シーン"を押すとこんな画面が出ます。
このとき、"ルートの型"は"2Dシーン"を選択してください。"シーン名"のテキストボックスに"Hello"と入力し、OKボタンを押すと"Hello"というシーンが作成されました。
画面上部のタブに"Hello"が追加されているはずです。
それを選択した状態で赤で囲んだアイコンを押すと、次のようなウィンドウが出ます。
"パス"のテキストボックスにパスが書いてありますが、デフォルトだとシーンファイル(先程作成したhello.tscn)と同じディレクトリが指定されています。別にこれでも動かないわけではないですが、整理整頓は大事。"res://"の直後の"scene"を"script"に変えてあげましょう。"OK"を押せば"script"ディレクトリに"hello.gd"が作られるはずです。
画面の中央に目を向けると、プログラミングやってる感のある画面が開いております。ここではGDScriptという、このゲームエンジン専用のプログラミング言語で敵や味方などの動き、地形や弾にあたったときにどうするかを記述します。
赤枠で囲んだところが"2D"から"Script"になっているのが分かるかと思います。
GDScript編集画面に赤枠で囲った2つの行があります。どちらも"func"という単語から始まっています。
これは関数と言って、ここでは幾つかの動作をまとめたものを言います。また、いま見ている2つの関数は普通の関数と少し違い、コールバック関数と呼ばれるものです。
ここではコールバック関数とは"所定のタイミングで実行される関数"と覚えて頂いて構いません。
御託はここまでにして、実際に書いていきます。
extends Node2D
func _ready() -> void:
print("Hello World!")
func _process(delta: float) -> void:
pass
"func _ready()"の下にあった"pass"を消して"print("Hello World!")"を追加しました。
"func _ready()"はシーンが出てきた直後一回だけ実行されます。
"pass"は「この関数は何もしません」ということを示しています。
"print("Hello World!")"はHello world!というメッセージを表示するという関数です。
ここで注意すべきことが一つ。"print("Hello World!")"(というか関数の中身)の前は必ず半角スペース4つまたはTab一つ分空けてください。そのうち説明しますが、GDScriptはインデント(行の前をいくら空けるか)で構文を管理しています。そのため、ちゃんと空けないと正しく動きません。
コードが書けたら実行しましょう。F6(またはFn+F6)を押してください。選択中のオブジェクトが実行されます。
こんなグレーのウィンドウが出たかと思われますが、重要なのはその下、元のウィンドウの下部に画面があります(下の画像の赤枠で囲った部分)。今までの手順が正しければここに"Hello World!"と表示されているはずです。
Discussion