Commit 04941856 authored by sanmit's avatar sanmit

Edits to team names

parent 1e1b36fe
......@@ -120,10 +120,10 @@ def parseArgs():
help='Number of offensive uncontrolled players. Default: 0.')
p.add_argument('--defense-npcs', dest='defenseNPCs', type=int, default=0,
help='Number of defensive uncontrolled players. Default: 0.')
p.add_argument('--offense-team', dest='offenseTeam', type=str, default='left',
help='Team name to pull offensive NPCs from. Default: left.')
p.add_argument('--defense-team', dest='defenseTeam', type=str, default='right',
help='Team name to pull defensive NPCs from. Default: right')
p.add_argument('--offense-team', dest='offenseTeam', type=str, default='base',
help='Team name to pull offensive NPCs from. Options: {base, helios} Default: base.')
p.add_argument('--defense-team', dest='defenseTeam', type=str, default='base',
help='Team name to pull defensive NPCs from. Options: {base, helios} Default: base')
p.add_argument('--no-sync', dest='sync', action='store_false', default=True,
help='Run server in non-sync mode.')
p.add_argument('--port', dest='port', type=int, default=6000,
......
......@@ -51,38 +51,6 @@ class Trainer(object):
self._connectedPlayers = []
self.initMsgHandlers()
def launch_npc(self, player_num, play_offense, wait_until_join=True):
"""
OBSOLETE -- Should we delete this method?
Launches a player using sample_player binary
Returns a Popen process object
"""
print 'Launch npc %s-%d'%(self._offenseTeamName if play_offense
else self._defenseTeamName, player_num)
if play_offense:
team_name = self._offenseTeamName
else:
team_name = self._defenseTeamName
binary_dir = os.path.dirname(os.path.realpath(__file__))
config_dir = os.path.join(binary_dir, '../config/formations-dt')
player_conf = os.path.join(binary_dir, '../config/player.conf')
player_cmd = os.path.join(binary_dir, 'sample_player')
player_cmd += ' -t %s -p %i --config_dir %s ' \
' --log_dir %s --player-config %s' \
%(team_name, self._serverPort, config_dir,
self._logDir, player_conf)
if self._record:
player_cmd += ' --record'
if player_num == 1:
player_cmd += ' -g'
kwargs = {'stdout':open('/dev/null', 'w'),
'stderr':open('/dev/null', 'w')}
p = subprocess.Popen(player_cmd.split(' '), shell = False, **kwargs)
if wait_until_join:
self.waitOnPlayer(player_num, play_offense)
return p
def launch_agent(self, agent_num, agent_ext_num, play_offense, port, wait_until_join=True):
"""Launches a learning agent using the agent binary
......@@ -129,49 +97,33 @@ class Trainer(object):
self.waitOnPlayer(agent_ext_num, play_offense)
return p
def getDefensiveRoster(self, team_name):
"""
OBSOLETE -- Should we delete this method?
Returns a list of player numbers on a given team that are thought
to prefer defense. This map is not set in stone as the players on
some teams can adapt and change their roles.
"""
if team_name == 'Borregos':
return [9,10,8,11,7,4,6,2,3,5]
elif team_name == 'WrightEagle':
return [5,2,8,9,10,6,3,11,4,7]
else:
return [2,3,4,5,6,7,8,11,9,10]
def getOffensiveRoster(self, team_name):
"""
OBSOLETE -- Should we delete this method?
Returns a list of player numbers on a given team that are thought
to prefer offense. This map is not set in stone as the players on
some teams can adapt and change their roles.
"""
if team_name == 'Borregos':
return [2,4,6,5,3,7,9,10,8,11]
elif team_name == 'WrightEagle':
return [11,4,7,3,6,10,8,9,2,5]
else:
return [11,7,8,9,10,6,3,2,4,5]
def addTeam(self, team_name):
""" Adds a team to the team list"""
self._teams.append(team_name)
# Check whether team name valid, and map to a format acceptable to third party binary
nameMap = {'base':'base', 'helios':'HELIOS'}
if team_name not in nameMap.keys():
print 'Invalid team name: ', team_name
sys.exit(1)
# Create side specific team
if len(self._teams) == 0:
self._teams.append(nameMap[team_name] + '_left')
elif len(self._teams) == 1:
self._teams.append(nameMap[team_name] + '_right')
else:
print 'Too many teams added!'
sys.exit(1)
def createTeam(self, name):
teamDir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'teams')
if 'HELIOS' in name:
print 'Creating team HELIOS'
return teams.Helios(name, os.path.join(teamDir, 'helios', 'helios-13Eindhoven'), os.path.join(teamDir, 'helios', 'local', 'lib'), 'helios_player', host='localhost', port=self._serverPort)
# Agent2d (base) is the default
else:
elif 'base' in name:
print 'Creating team Agent2d (base)'
return teams.Agent2d(name, os.path.join(teamDir, 'base'), None, 'sample_player', self._logDir, self._record, host='localhost', port=self._serverPort)
else:
print 'Invalid team found'
sys.exit(1)
def getTeams(self):
""" Sets the offensive and defensive teams and player rosters. """
......@@ -180,11 +132,9 @@ class Trainer(object):
self._defenseTeamName = self._teams[1-self._offenseTeamInd]
# set up offense
offenseTeam = self.createTeam(self._offenseTeamName)
self._offenseOrder = [1] + offenseTeam._offense_order # 1 for goalie
# set up defense
defenseTeam = self.createTeam(self._defenseTeamName)
# offensive_roster = self.getOffensiveRoster(self._offenseTeamName)
# defensive_roster = self.getDefensiveRoster(self._defenseTeamName)
self._offenseOrder = [1] + offenseTeam._offense_order # 1 for goalie
self._defenseOrder = [1] + defenseTeam._defense_order # 1 for goalie
return (offenseTeam, defenseTeam)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment