feat: support configurable game server address and port
* 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
This commit is contained in:
@@ -13,7 +13,10 @@ func _wait_for_child(id: String, port: String, mode: String) -> void:
|
||||
|
||||
var output := []
|
||||
var exit_code := OS.execute(
|
||||
"./game.sh", ["--", "server_" + port, "game", mode],
|
||||
"./game.sh",
|
||||
[
|
||||
"--headless", "--", "server_" + port, "game", mode
|
||||
],
|
||||
output,
|
||||
true
|
||||
)
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
class_name GameData extends Node
|
||||
|
||||
|
||||
var game_address: String = "0.0.0.0"
|
||||
var game_port: int = 8080
|
||||
|
||||
|
||||
func _init() -> void:
|
||||
Globals.game_data = self
|
||||
|
||||
|
||||
@@ -45,11 +45,15 @@ func _launch_game_server(
|
||||
var port: String = InstanceLauncher.launch_game_server(match_entry.data.type)
|
||||
if port == "-1":
|
||||
# TODO: Alert clients that the game wont be created due to
|
||||
# server reaching number of allowed instances
|
||||
# server reaching number of allowed instances.
|
||||
return
|
||||
|
||||
Globals.game_data.rpc_id(client1.id, "set_game_address", "127.0.0.1")
|
||||
Globals.game_data.rpc_id(client2.id, "set_game_address", "127.0.0.1")
|
||||
# TODO: Set address dynamically; I.E. if game on different server than lobby.
|
||||
# As is, clients use the lobby address since games launch on new ports.
|
||||
# Will have to change how we watch game server death if on diff server.
|
||||
#Globals.game_data.rpc_id(client1.id, "set_game_address", "51.222.85.126")
|
||||
#Globals.game_data.rpc_id(client2.id, "set_game_address", "51.222.85.126")
|
||||
|
||||
Globals.game_data.rpc_id(client1.id, "set_game_port", port)
|
||||
Globals.game_data.rpc_id(client2.id, "set_game_port", port)
|
||||
|
||||
|
||||
@@ -44,10 +44,10 @@ size_flags_horizontal = 3
|
||||
[node name="host_address_input" type="LineEdit" parent="body/left_body/server_host_hbox"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "127.0.0.1"
|
||||
text = "0.0.0.0"
|
||||
placeholder_text = "Server Address: (Eg. 0.0.0.0)"
|
||||
alignment = 1
|
||||
max_length = 12
|
||||
max_length = 15
|
||||
emoji_menu_enabled = false
|
||||
clear_button_enabled = true
|
||||
caret_blink = true
|
||||
@@ -57,7 +57,7 @@ layout_mode = 2
|
||||
min_value = 1.0
|
||||
max_value = 65535.0
|
||||
page = 10.0
|
||||
value = 31315.0
|
||||
value = 8080.0
|
||||
rounded = true
|
||||
alignment = 1
|
||||
|
||||
|
||||
12
server.gd
12
server.gd
@@ -22,6 +22,8 @@ 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":
|
||||
@@ -36,6 +38,16 @@ 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"
|
||||
|
||||
Reference in New Issue
Block a user