Browse Source

Integrating changes from PR #4251 - allow defining seed for server

Ivan Savenko 1 year ago
parent
commit
65eeceb7d7
2 changed files with 10 additions and 2 deletions
  1. 6 2
      config/schemas/settings.json
  2. 4 0
      server/CGameHandler.cpp

+ 6 - 2
config/schemas/settings.json

@@ -437,7 +437,7 @@
 			"type" : "object",
 			"additionalProperties" : false,
 			"default" : {},
-			"required" : [ "localHostname", "localPort", "remoteHostname", "remotePort", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI" ],
+			"required" : [ "localHostname", "localPort", "remoteHostname", "remotePort", "seed", "playerAI", "alliedAI", "friendlyAI", "neutralAI", "enemyAI" ],
 			"properties" : {
 				"localHostname" : {
 					"type" : "string",
@@ -455,6 +455,10 @@
 					"type" : "number",
 					"default" : 3030
 				},
+				"seed" : {
+					"type" : "number",
+					"default" : 0
+				},
 				"playerAI" : {
 					"type" : "string",
 					"default" : "Nullkiller"
@@ -537,7 +541,7 @@
 				},
 				"loggers" : {
 					"type" : "array",
-					"default" : [ { "domain" : "global", "level" : "trace" } ],
+					"default" : [ { "domain" : "global", "level" : "trace" }, { "domain" : "rng", "level" : "info" } ],
 					"items" : {
 						"type" : "object",
 						"additionalProperties" : false,

+ 4 - 0
server/CGameHandler.cpp

@@ -24,6 +24,7 @@
 #include "../lib/ArtifactUtils.h"
 #include "../lib/CArtHandler.h"
 #include "../lib/CBuildingHandler.h"
+#include "../lib/CConfigHandler.h"
 #include "../lib/CCreatureHandler.h"
 #include "../lib/CCreatureSet.h"
 #include "../lib/CGeneralTextHandler.h"
@@ -552,6 +553,9 @@ void CGameHandler::reinitScripting()
 void CGameHandler::init(StartInfo *si, Load::ProgressAccumulator & progressTracking)
 {
 	randomNumberGenerator = std::make_unique<CRandomGenerator>();
+	int requestedSeed = settings["server"]["seed"].Integer();
+	if (requestedSeed != 0)
+		randomNumberGenerator->setSeed(requestedSeed);
 	logGlobal->info("Using random seed: %d", randomNumberGenerator->nextInt());
 
 	CMapService mapService;