Godotのプロジェクト「OpenRTS」の中身をのぞいてみよう
作成日
更新日
Godot v4 で作られたリアルタイムストラテジーゲームのオープンソース。
情報
- Godot v4.3
ディレクトリ構造
tree -L 3
の結果。
.
├── CHANGELOG.md
├── LICENSE
├── LOGO_LICENSES.md
├── README.md
├── assets
│ ├── logos
│ │ ├── LOGO_LICENSES.md
│ │ ├── godot_logo_vertical_monochrome_dark_312x357.png
│ │ ├── godot_logo_vertical_monochrome_dark_312x357.png.import
│ │ ├── lampe_games_white.svg
│ │ └── lampe_games_white.svg.import
│ ├── models
│ │ ├── kenney-spacekit
│ │ └── primitives
│ ├── translations
│ │ ├── main_menu.csv
│ │ ├── main_menu.csv.import
│ │ ├── match.csv
│ │ └── match.csv.import
│ ├── ui
│ │ ├── background.png
│ │ ├── background.png.import
│ │ ├── icons
│ │ └── kenney-crosshairs
│ └── voice
│ └── english
├── build
├── export_presets.cfg
├── icon.svg
├── icon.svg.import
├── makefile
├── media
│ ├── banner_1400x650.png
│ ├── logo.kra
│ ├── logo_650x150.png
│ └── screenshots
│ ├── screenshot_1400x650.png
│ ├── screenshot_2_1920x1080.png
│ ├── screenshot_3_1920x1080.png
│ └── screenshot_4_1920x1080.png
├── project.godot
├── source
│ ├── Constants.gd
│ ├── FeatureFlags.gd
│ ├── FeatureFlags.tscn
│ ├── Globals.gd
│ ├── Logos.gd
│ ├── Logos.tscn
│ ├── Main.gd
│ ├── Main.tscn
│ ├── Signals.gd
│ ├── Utils.gd
│ ├── data-model
│ │ ├── MatchSettings.gd
│ │ ├── Options.gd
│ │ └── PlayerSettings.gd
│ ├── generic-scenes-and-nodes
│ │ ├── 2d
│ │ ├── 3d
│ │ └── control
│ ├── main-menu
│ │ ├── Background.tscn
│ │ ├── Credits.gd
│ │ ├── Credits.tscn
│ │ ├── Loading.gd
│ │ ├── Loading.tscn
│ │ ├── Main.gd
│ │ ├── Main.tscn
│ │ ├── Options.gd
│ │ ├── Options.tscn
│ │ ├── Play.gd
│ │ └── Play.tscn
│ ├── match
│ │ ├── AirNavigation.gd
│ │ ├── FogOfWar.gd
│ │ ├── IsometricCamera3D.gd
│ │ ├── Map.gd
│ │ ├── Map.tscn
│ │ ├── Match.gd
│ │ ├── Match.tscn
│ │ ├── MatchConstants.gd
│ │ ├── MatchSignals.gd
│ │ ├── MatchUtils.gd
│ │ ├── Menu.gd
│ │ ├── Menu.tscn
│ │ ├── Navigation.gd
│ │ ├── Terrain.gd
│ │ ├── TerrainNavigation.gd
│ │ ├── debug
│ │ ├── decorations
│ │ ├── handlers
│ │ ├── hud
│ │ ├── maps
│ │ ├── players
│ │ ├── resources
│ │ ├── units
│ │ └── utils
│ ├── resources
│ │ └── main_menu.theme
│ ├── shaders
│ │ ├── 2d
│ │ └── 3d
│ └── utils
│ ├── IconOverview.tscn
│ ├── IconRenderBooth.gd
│ ├── IconRenderBooth.tscn
│ └── Set.gd
└── tests
└── manual
├── Match.gd
├── TestAllUnits.tscn
├── TestNonQuadraticMap.tscn
├── TestOneUnit.tscn
├── TestPlayerVsAI.tscn
├── TestUnitsFightingEachOther.tscn
└── maps
動かしてみる
v4.4 で動かしてみる。
Main.tscn
ではロゴを表示してメニュー画面に移動している。
@onready var _logos = find_child("Logos")
func _ready():
_logos.tree_exited.connect(
get_tree().change_scene_to_file.bind("res://source/main-menu/Main.tscn")
)
ロゴを表示した後にメニュー画面が開く
どうやって遷移した?
-> get_tree().change_scene_to_file.bind("res://source/main-menu/Main.tscn")
でちがう Main.tscn
を開いているのか。
Logos.gd
を見てみる。
extends Control
@onready var _animation_player = find_child("AnimationPlayer")
func _ready():
if not FeatureFlags.show_logos_on_startup:
queue_free()
return
_animation_player.animation_finished.connect(func(_animation_name): queue_free())
_animation_player.play("animate_logos")
気になったこと
- プロジェクトのGodotバージョンはどこ見ればわかる?
project.godot
の冒頭のコメントに書いてあることが多い- が、これには書いていない。
project.godot
内のconfig/features=PackedStringArray("4.4", "Forward Plus")
が 4.4 で保存されたことを示唆している
- このプロジェクトは全画面で起動する
res://source/data-model/Options.gd
に書いてある
- 画面ごとに
Main.tscn
がそれぞれ生えている。Options.gd
も。
- Godotでの画面遷移の仕方を調査する
Options.gd
func _apply_screen():
DisplayServer.window_set_mode(
(
DisplayServer.WINDOW_MODE_FULLSCREEN
if screen == Screen.FULL
else DisplayServer.WINDOW_MODE_WINDOWED
)
)

公開日
更新日