static GameEngine GetEngine(GameEngineUCISpec engineSpec, string suffix, NNEvaluatorDef evaluatorDef, ParamsSearch paramsSearch, ParamsSelect paramsSelect, IManagerGameLimit timeManager) { bool resetMovesBetweenMoves = !paramsSearch.TreeReuseEnabled; bool enableTranpsositions = paramsSearch.Execution.TranspositionMode != TranspositionMode.None; // Create requested type of engine if (engineSpec == null) { return(new GameEngineCeresInProcess("Ceres_" + suffix, evaluatorDef, paramsSearch, paramsSelect, timeManager, null)); } else if (engineSpec.Name == "LC0") { if (evaluatorDef == null) { throw new Exception("EvaluatorDef must be specified when running LC0 engine"); } // TODO: do we really want to emulate always here? probably not // WARNING: above. bool forceDisableSmartPruning = false; return(new GameEngineLC0("LZ0_" + suffix, evaluatorDef.Nets[0].Net.NetworkID, forceDisableSmartPruning, false, paramsSearch, paramsSelect, evaluatorDef, null, CeresUserSettingsManager.GetLC0ExecutableFileName())); } else { return(engineSpec.CreateEngine()); } }
/// <summary> /// Implementation of virtual method to create underlying engine. /// </summary> /// <returns></returns> public override GameEngine CreateEngine() => UCIEngineSpec.CreateEngine();