|
|
- extends Node
-
- var SERVER_TO_SERVER_PORT = 54671
- var MATCHMAKING_PORT = 54672
- var SERVER_SIZE = 6
-
- var next_port = 54673
-
- # Filled with queue info which contains
- # { "netid" }
- var queue = []
- var skirmish
- # To avoid the confusion of the gameSERVERS being CLIENTS,
- # we just call them games whenever possible
- var games = []
- var game_connections = []
- var game_streams = []
-
- # Matchmaker to game servers
- var matchmaker_to_games
-
- func _ready():
- set_process(false)
-
- func run_matchmaker():
- skirmish = spawn_server()
- matchmaker_to_games = TCP_Server.new()
- if matchmaker_to_games.listen(SERVER_TO_SERVER_PORT):
- print("Error, could not listen")
- set_process(true)
-
- func _process(delta):
- # Manage connection to GAMESERVERS (not clients)
- if matchmaker_to_games.is_connection_available(): # check if a gameserver's trying to connect
- var game = matchmaker_to_games.take_connection() # accept connection
- game_connections.append(game) # store the connection
- var stream = PacketPeerStream.new()
- stream.set_stream_peer(game) # bind peerstream to new client
- game_streams.append(stream) # make new data transfer object for game
- print("Server has requested connection")
-
- master func _queue(info):
- queue.push(info)
- check_queue()
-
- func check_queue():
- if queue.size() >= SERVER_SIZE:
- var port = spawn_server()
- games.push(port)
- for p in queue:
- rpc_id(p.netid, "join_game", port)
-
- func spawn_server():
- OS.execute("util/server.sh", [], false)
- next_port += 1
- return (next_port - 1) # Return original port
-
|