Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
Seminar-HFO
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Shashank Suhas
Seminar-HFO
Commits
04941856
Commit
04941856
authored
Jan 29, 2016
by
sanmit
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Edits to team names
parent
1e1b36fe
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
72 deletions
+22
-72
bin/HFO
bin/HFO
+4
-4
bin/Trainer.py
bin/Trainer.py
+18
-68
No files found.
bin/HFO
View file @
04941856
...
...
@@ -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
,
...
...
bin/Trainer.py
View file @
04941856
...
...
@@ -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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment