* Launch game servers in headless mode * Add configurable game address and port to GameData * Pass dynamically assigned server ports to clients * Update lobby defaults for `0.0.0.0:8080` * Refactor server command-line argument handling
63 lines
1.4 KiB
GDScript
63 lines
1.4 KiB
GDScript
extends Node
|
|
|
|
|
|
#
|
|
#
|
|
# Note that the lobby server is looking for a script local to it titled 'game.sh'
|
|
#
|
|
# Editor -> Debug > Customize Run Instance
|
|
#
|
|
#
|
|
# -- name_billiards server game_port_range 5000:5010
|
|
#
|
|
#
|
|
# CLI
|
|
#
|
|
# ./lobby_server.sh -- name_billiards server game_port_range 5000:5010
|
|
#
|
|
#
|
|
|
|
|
|
func _ready() -> void:
|
|
for arg in OS.get_cmdline_user_args():
|
|
if "name_" in arg:
|
|
name_(arg)
|
|
elif "server_" in arg:
|
|
server_(arg)
|
|
|
|
match arg:
|
|
"server":
|
|
server(arg)
|
|
"game_port_range":
|
|
game_port_range(arg)
|
|
_:
|
|
pass
|
|
|
|
|
|
func name_(arg: String) -> void:
|
|
var game_name = arg.split("_")[-1]
|
|
self.name = game_name
|
|
|
|
func server_(arg: String) -> void:
|
|
var host_port = float(arg.split("_")[-1])
|
|
|
|
Globals.game_state.set_game_scene(
|
|
"res://scenes/screens/lobby_screen/lobby.tscn"
|
|
)
|
|
|
|
$scene/lobby_screen.find_child("host_port_range", true, false).set_value_no_signal(host_port)
|
|
$scene/lobby_screen.find_child("host_start_bttn", true, false).emit_signal("pressed")
|
|
|
|
func server(_arg: String) -> void:
|
|
Globals.game_state.set_game_scene(
|
|
"res://scenes/screens/lobby_screen/lobby.tscn"
|
|
)
|
|
|
|
$scene/lobby_screen.find_child("host_start_bttn", true, false).emit_signal("pressed")
|
|
|
|
func game_port_range(_arg: String) -> void:
|
|
var port_range = OS.get_cmdline_user_args()[-1].split(":")
|
|
|
|
InstanceLauncher.port_range_start = port_range[0]
|
|
InstanceLauncher.port_range_end = port_range[1]
|