模板项目设置(审核后commit)以及无头服务器启动脚本
This commit is contained in:
@@ -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 "$@"
|
||||
Reference in New Issue
Block a user