####################################################################################################
#
#  SparCraft Experiment File Format
#  David Churchill - dave.churchill@gmail.com
#  
#  # denotes commented lines
#
#  Specify the players in the experiment
#
#  Format:
#  
#  PlayerNum PlayerType [Params]*
#
#  ,---------------------------------------------------------,
#  | Scripted Player Syntax                                  |
#  |---------------------------------------------------------|
#  | Player X ScriptName                                     |
#  '---------------------------------------------------------'
#
#  ,----------------------------------------------------------,
#  | Portfolio Greedy Search Player Syntax                    |
#  |----------------------------------------------------------|
#  | Player X PortfolioGreedySearch Seed Iterations Responses |
#  '----------------------------------------------------------'
#
#  ,---------------------------------------------------------,
#  | Recursive Greedy Search Player Syntax                   |
#  |---------------------------------------------------------|
#  | Player X RecursiveGreedySearch Seed Iterations          |
#  '---------------------------------------------------------'
#
#  ,---------------------------------------------------------------------------------------------------------------------------------------------,
#  | AlphaBeta Player Syntax + Options                                        (Scripts for Playouts)                                             |
#  |---------------------------------------------------------------------------------------------------------------------------------------------|
#  | Player X AlphaBeta  TimeLimitMS   MaxChildren  MoveOrdering  EvalMethod  P0Script     P1Script     PlayerToMoveMethod   OpponentModelScript |
#  |---------------------------------------------------------------------------------------------------------------------------------------------|
#  |                     Integer       Integer      ScriptFirst   Playout     ScriptName   ScriptName   Alternate            ScriptName          |
#  |                                   0 = NoMax    None          LTD                                   NotAlternate         None                |
#  |                                                              LTD2                                  Random                                   |
#  '---------------------------------------------------------------------------------------------------------------------------------------------'
#
#  ,--------------------------------------------------------------------------------------------------------------------------------------------------------------,
#  | UCT Player Syntax + Options                                                        (Scripts for Playouts)                                                    |
#  |--------------------------------------------------------------------------------------------------------------------------------------------------------------|
#  | Player X UCT  TimeLimitMS  CValue  MaxTraversals  MaxChildren  MoveOrdering  EvalMethod   P0Script     P1Script     PlayerToMoveMethod   OpponentModelScript |
#  |--------------------------------------------------------------------------------------------------------------------------------------------------------------|
#  |               Integer      Double  Integer        Integer      ScriptFirst   Playout      ScriptName   ScriptName   Alternate            ScriptName          |
#  |                                                                None          LTD                                    NotAlternate         None                |
#  |                                                                              LTD2                                   Random                                   |
#  '--------------------------------------------------------------------------------------------------------------------------------------------------------------'
#
####################################################################################################

# Sample AlphaBeta Players
Player 0 AlphaBeta 10 20 ScriptFirst Playout NOKDPS NOKDPS Alternate None
#Player 1 AlphaBeta 5 20 ScriptFirst Playout NOKDPS NOKDPS Alternate NOKDPS

# Sample UCT Players
Player 1 UCT 10 1.6 5000 20 ScriptFirst Playout NOKDPS NOKDPS Alternate None
#Player 0 UCT 5 1.6 5000 20 ScriptFirst Playout NOKDPS NOKDPS Alternate NOKDPS

# Sample PortfolioGreedySearch Players
#Player 0 PortfolioGreedySearch 0 NOKDPS 1 0

# Sample Scripted Players
#Player 0 NOKDPS
#Player 1 NOKDPS

####################################################
#
# Set player upgrade and tech levels
#
# Format:
# PlayerUpgrade PlayerID UpgradeName UpgradeLevel
# PlayerTech PlayerID TechName
#
####################################################

#PlayerUpgrade 0 Protoss_Ground_Weapons 1
#PlayerUpgrade 1 Protoss_Ground_Armor 3
#PlayerUpgrade 1 Singularity_Charge 1
#PlayerUpgrade 1 Zerg_Melee_Attacks 1

##################################################
#
#  Specify the states in the experiment
#  See map file description to specify legal unit positions
#
#  State StateSymmetric NumStates MaxX MaxY [UnitType UnitNum]+
#  State SeparatedState NumStates RandX RandY cx1 cy1 cx2 cy2 [UnitType UnitNum]+
#  State StateDescriptionFile NumStates FileName 
#
#  For SeparatedState, NumStates / 2 mirrored copies will be created for fairness
#
##################################################

# Sample StateDescriptionFile States
#State StateDescriptionFile 10 PATH_TO\sample_state.txt

# Sample SeparatedState States
State SeparatedState 100 128 128 400 360 840 360 Protoss_Dragoon 50
State SeparatedState 100 128 128 400 360 840 360 Zerg_Zergling 50
State SeparatedState 100 128 128 400 360 840 360 Protoss_Dragoon 25 Protoss_Zealot 25
State SeparatedState 100 128 128 400 360 840 360 Protoss_Dragoon 25 Terran_Marine 25
State SeparatedState 100 128 128 400 360 840 360 Terran_Marine 25 Zerg_Zergling 25

# Sample Symmetric State States
#State StateSymmetric 10 128 128 Protoss_Dragoon 8
#State StateSymmetric 10 128 128 Zerg_Zergling 8
#State StateSymmetric 10 128 128 Protoss_Dragoon 16 Protoss_Zealot 16
#State StateSymmetric 10 128 128 Protoss_Dragoon 16 Terran_Marine 16
#State StateSymmetric 10 128 128 Terran_Marine 16 Zerg_Zergling 16

##################################################
#
#  File where results will be stored
#  Boolean at the end indicates whether to append time stamp
#  .txt will be added to the end of the file automatically
#
#  Format
#  ResultsFile FILENAME BOOL
#
##################################################

ResultsFile PATH_TO\sample_exp true

##################################################
#
#  Map file to use for the simulation, all states will use this map.
#  Map file is used to define walkable boundaries for the simulation
#  Comment out line to use no map
#  No Map - Default map size is 1280*720 pixels all tiles walkable
#  If this map is specified, all units must be placed on walkable tiles within map boundaries or experiment will not run
#
##################################################

#MapFile PATH_TO\destination.txt

##################################################
#
#  Show visualization? Only works if libraries enabled in Common.h
#
#  Format
#  Display BOOL ImageDir
#
#  This directory is included with SparCraft in folder SparCraft\starcraft_images\
#  Be sure to use forward slash "\" and include the final "\" character
#  No spaces allowed!
#
##################################################

Display true PATH_TO\starcraft_images\
