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 output := []
|
||||||
var exit_code := OS.execute(
|
var exit_code := OS.execute(
|
||||||
"./game.sh", ["--", "server_" + port, "game", mode],
|
"./game.sh",
|
||||||
|
[
|
||||||
|
"--headless", "--", "server_" + port, "game", mode
|
||||||
|
],
|
||||||
output,
|
output,
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
class_name GameData extends Node
|
class_name GameData extends Node
|
||||||
|
|
||||||
|
|
||||||
|
var game_address: String = "0.0.0.0"
|
||||||
|
var game_port: int = 8080
|
||||||
|
|
||||||
|
|
||||||
func _init() -> void:
|
func _init() -> void:
|
||||||
Globals.game_data = self
|
Globals.game_data = self
|
||||||
|
|
||||||
|
|||||||
@@ -45,11 +45,15 @@ func _launch_game_server(
|
|||||||
var port: String = InstanceLauncher.launch_game_server(match_entry.data.type)
|
var port: String = InstanceLauncher.launch_game_server(match_entry.data.type)
|
||||||
if port == "-1":
|
if port == "-1":
|
||||||
# TODO: Alert clients that the game wont be created due to
|
# TODO: Alert clients that the game wont be created due to
|
||||||
# server reaching number of allowed instances
|
# server reaching number of allowed instances.
|
||||||
return
|
return
|
||||||
|
|
||||||
Globals.game_data.rpc_id(client1.id, "set_game_address", "127.0.0.1")
|
# TODO: Set address dynamically; I.E. if game on different server than lobby.
|
||||||
Globals.game_data.rpc_id(client2.id, "set_game_address", "127.0.0.1")
|
# 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(client1.id, "set_game_port", port)
|
||||||
Globals.game_data.rpc_id(client2.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"]
|
[node name="host_address_input" type="LineEdit" parent="body/left_body/server_host_hbox"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
text = "127.0.0.1"
|
text = "0.0.0.0"
|
||||||
placeholder_text = "Server Address: (Eg. 0.0.0.0)"
|
placeholder_text = "Server Address: (Eg. 0.0.0.0)"
|
||||||
alignment = 1
|
alignment = 1
|
||||||
max_length = 12
|
max_length = 15
|
||||||
emoji_menu_enabled = false
|
emoji_menu_enabled = false
|
||||||
clear_button_enabled = true
|
clear_button_enabled = true
|
||||||
caret_blink = true
|
caret_blink = true
|
||||||
@@ -57,7 +57,7 @@ layout_mode = 2
|
|||||||
min_value = 1.0
|
min_value = 1.0
|
||||||
max_value = 65535.0
|
max_value = 65535.0
|
||||||
page = 10.0
|
page = 10.0
|
||||||
value = 31315.0
|
value = 8080.0
|
||||||
rounded = true
|
rounded = true
|
||||||
alignment = 1
|
alignment = 1
|
||||||
|
|
||||||
|
|||||||
12
server.gd
12
server.gd
@@ -22,6 +22,8 @@ func _ready() -> void:
|
|||||||
for arg in OS.get_cmdline_user_args():
|
for arg in OS.get_cmdline_user_args():
|
||||||
if "name_" in arg:
|
if "name_" in arg:
|
||||||
name_(arg)
|
name_(arg)
|
||||||
|
elif "server_" in arg:
|
||||||
|
server_(arg)
|
||||||
|
|
||||||
match arg:
|
match arg:
|
||||||
"server":
|
"server":
|
||||||
@@ -36,6 +38,16 @@ func name_(arg: String) -> void:
|
|||||||
var game_name = arg.split("_")[-1]
|
var game_name = arg.split("_")[-1]
|
||||||
self.name = game_name
|
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:
|
func server(_arg: String) -> void:
|
||||||
Globals.game_state.set_game_scene(
|
Globals.game_state.set_game_scene(
|
||||||
"res://scenes/screens/lobby_screen/lobby.tscn"
|
"res://scenes/screens/lobby_screen/lobby.tscn"
|
||||||
|
|||||||
Reference in New Issue
Block a user