模板项目设置(审核后commit)以及无头服务器启动脚本

This commit is contained in:
2026-09-12 22:32:31 +08:00
parent bc4dc71896
commit 390ab0659b
2 changed files with 153 additions and 1 deletions
+88 -1
View File
@@ -11,11 +11,20 @@ config_version=5
[application]
config/name="agame"
config/tags=PackedStringArray("3d", "network")
run/main_scene="res://scenes/level/level.tscn"
config/features=PackedStringArray("4.7", "Forward Plus")
config/icon="uid://qsdtdrh44ejn"
config/icon="res://icon.png"
[autoload]
Network="*res://scripts/autoload/network.gd"
ItemDatabase="*res://scripts/autoload/item_database.gd"
[display]
window/size/viewport_width=1280
window/size/viewport_height=720
window/stretch/mode="canvas_items"
window/stretch/aspect="expand"
@@ -23,6 +32,83 @@ window/stretch/aspect="expand"
enabled=PackedStringArray("res://addons/script-ide/plugin.cfg")
[global_group]
Players="包含全部玩家节点的分组"
[gui]
theme/custom_font="res://assets/fonts/Kurland.ttf"
[input]
move_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
move_forward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
shift={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
pause={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
toggle_chat={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null)
]
}
inventory={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":73,"key_label":0,"unicode":105,"location":0,"echo":false,"script":null)
]
}
pickup={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
]
}
attack={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(53, 16),"global_position":Vector2(62, 64),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
toggle_camera={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":86,"key_label":0,"unicode":118,"location":0,"echo":false,"script":null)
]
}
[layer_names]
3d_physics/layer_1="player"
3d_physics/layer_2="world"
3d/physics_engine="Jolt Physics"
[physics]
3d/physics_engine="Jolt Physics"
@@ -30,3 +116,4 @@ enabled=PackedStringArray("res://addons/script-ide/plugin.cfg")
[rendering]
rendering_device/driver.windows="d3d12"
anti_aliasing/quality/msaa_3d=2
+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
find_godot() {
if [[ -n "${GODOT_BIN:-}" && -x "$GODOT_BIN" ]]; then
printf '%s\n' "$GODOT_BIN"
return 0
fi
if command -v godot >/dev/null 2>&1; then
command -v godot
return 0
fi
return 1
}
stop_server() {
local server_pid="$1"
if kill -0 "$server_pid" 2>/dev/null; then
echo
echo "Stopping Dedicated Server..."
kill "$server_pid" 2>/dev/null || true
for _ in {1..20}; do
if ! kill -0 "$server_pid" 2>/dev/null; then
return
fi
sleep 0.1
done
kill -KILL "$server_pid" 2>/dev/null || true
fi
}
main() {
local godot_bin
if ! godot_bin="$(find_godot)"; then
echo "Error: Godot 4 was not found." >&2
echo "Install Godot 4, add it to PATH, or set GODOT_BIN to its executable path." >&2
return 127
fi
local project_dir
project_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
echo "Starting Dedicated Server (Headless Mode) with: $godot_bin"
"$godot_bin" --headless --path "$project_dir" &
local server_pid=$!
local stopping=false
trap 'stopping=true; stop_server "$server_pid"' INT TERM EXIT
local exit_code=0
wait "$server_pid" 2>/dev/null || exit_code=$?
trap - INT TERM EXIT
if [[ "$stopping" == true ]]; then
return 0
fi
return "$exit_code"
}
main "$@"