Random Map Generation and Transport Unit AI for Strategy Games

advertisement
Random Map Generation and
Transport Unit AI for Strategy
Games
By Russell Kuchar
Random Map Generation
Focusing on Empire Earth (RTS)
• A system must generate maps for tile-based, real
time strategy games for 2-16 players
• Must be fair with land and resources
• Maps of the same size, type, and number of players
must be similar but allow for different results
• 7 different types: continental, large islands, small
islands, highlands, plains,
tournament islands, and
Mediterranean
• 6 different sizes: tiny, small,
medium, large, huge, and
gigantic
Basic Solution
• Map Generation uses: number of players, number of
teams, map size, map climate, type of random map,
and random number seed
• Players are placed on a blank map, teammates are
placed adjacent, enemies opposite and symmetrical
• Land is built around the players, flat land as well as
rough terrain, then water fills the remaining area
• Resources are added evenly for each player
• Map is colored and textured
• Player starting units and buildings are placed
Scripts and Testing
• Application is tested by creating an array of
all possible combinations of the map
generation results
• Combines all land water arrays, height map
arrays, and flat map arrays
• Scripting languages allow for different map
variations with only small changes
• Uses master scripts for each map type and
different subscripts for each map size
Player Placement
• First step in map generation is player placement
• An algorithm is used to place players around the
map in an optimal position
• Algorithm does place players in predictable
positions, but keeps map balanced
• Teammates are placed into adjacent positions
• Dummy players are created for the purpose of map
generation to create additional, unclaimed,
resource-rich areas for the growth of player’s
colonies
Clump Details
•
•
•
•
Fair land allocation is a priority
Land must have a natural appearance
Land is grown in the map generator in clumps
Clumps are defined by a clump size, number of
clumps, and clump chaos level
• Uses the completion method, growing a clump tile
by tile, and the step method, growing a clump one
tile per iteration
• Clumps grow to their clump size, with the specified
number of clumps and as random as the chaos level
Clump Details
• A land clump is created for each player
• Land Clumps
– Uses step method to ensure equal land for each player
and ensuring that no player’s clump surrounds another
– Land clumps are restricted to a certain distance from a
player’s starting position and cannot overtake opponent’s
land clumps
Clump Details
• Island Land Clumps:
– Land clumps are restricted
to a certain distance from
opponent’s land
• Flat Elevation Clumps:
– Flat land is created within
a player’s existing land
– Ensures each player has
adequate flat land to build
buildings
Height Map Details
• After land is grown, realistic terrain is added
• Fractals generate realistic looking elevation using
map attributes resulting in height map array
• Filter is applied to smooth out jagged terrain artifacts
in the height map array
• The height map array is combined with the land
water array and adjustments are made to raise or
lower some of the height map values to fit the terrain
of the land water array
Resource Allocation
• Resources (berries, iron, gold, stone, and wildlife)
are placed, each player receiving the same amount
of each
• Resources must maintain a certain distance from
others and from players starting positions
• Random locations for resources are selected until
acceptable locations are found
• Trees are the final resource placed since they are
the most abundant and are used to also restrict
pathfinding
Random Maps
• Multi-Island
• Lake
• Continent
• Large Island
Transport Unit AI
Focusing on Empire Earth (RTS)
• Transports move passengers (land-based units)
around the map
• Air, land, naval, and building transports are needed
• Passengers are instructed to load into transports,
the transports move to the desired location and the
passengers are unloaded from the transport
• System must adhere to existing RTS transport
standards that players expect
Transport Definitions
• Air Transports: flies above the terrain and can move
anywhere on the map but can only load and unload
on valid flat land
• Land Transports: limited to the same level terrain as
land units
• Building Transports: any stationary unit like a bunker
or tower
• Naval Transports: limited to moving in the water and
loading and unloading on the shores
Basic Solution
• All transports have high level goals that are broken
down and implemented through a finite-state
machine (FSM)
• Loading involves instructing units to become
passengers, interacting with each other to
appropriately load into the transports
• Unloading involves the transport moving within a
certain range of the unload location and unload the
passengers while following rules about valid unload
locations
Passenger FSM
• When given the load command,
passengers are responsible for
moving to the rendezvous point,
wait for the transport and load
into the transport
• Passengers are responsible for
making sure that the transport is
still on its way to the rendezvous
point and that they are able to
make it to the rendezvous point
• Once in the transport the
passengers are idle and it is up
to the transport to unload the
passengers
Transport FSM
• When given the load
command, transports are
responsible for moving to
the rendezvous point,
waiting for the passengers
and loading all the
passengers or until the
transport is full
• When given the unload
command, transports must
move within range of the
unload point and attempt
to unload the passengers
Loading
• Both passengers and transports have the load
command and must meet at a rendezvous point
• An initial rendezvous point is determined and
adjusted based on validity
– If passengers cannot reach location based on a wall,
mountains, etc., or the location is not valid, over water, a
building, etc., a new rendezvous point is selected
• Pathfinding is used to determine the proper path for
the passengers and transports to take to make sure
that they don’t move over invalid terrain
• While moving to the rendezvous point, passengers
must test to see if they are in range to load into the
transport
Loading
• Air Transports: can move regardless of terrain so
they move to the location of the nearest passenger
which acts as the rendezvous point
• Land Transports: the rendezvous
point is located at the middle
point between the transport
and the nearest passenger
based on maximum velocity
of the units so they arrive at
the same time
Loading
• Building Transports: cannot move, the rendezvous
point is the building
• Naval Transports: there are two rendezvous point,
one land tile and one water
tile, the distance of which
must be less than the units
load range. Passengers
move to the nearest shore
tile and the transport moves
to the adjacent water tile to
rendezvous
Unloading
• The transport has the unload command and heads
toward the unload point
– Unload point can be adjusted to another location if original
is invalid
• While moving to the unload point, transports must
test to see if they are in range to unload the
passengers
• Sub-tile placement is used to prevent unloading
passengers from colliding with other units or terrain
and makes sure that illegal movement is not
exploited
Unload Point
• Given transport point (T) and player’s click point
(CP) there are three unload points
– Transport Destination Point (TDP): point where transport
moves to unload passengers
– First Passenger Point (FPP): first tile adjacent to the TDP
where passengers unload to and must pathfind from
– Unload Point (UP): final destination of passengers which
may be adjusted from the CP depending on pathfinding
and validity of the UP
Unloading
• Air Transports: not restricted in pathfinding so FPP
and UP are the same, only restrictions are on
passengers to find valid terrain to unload upon
• Land Transports: pathfinding
is restricted the same as
passenger pathfinding so
the TDP, FPP, UP and CP
are the same assuming
the CP is a valid location
Unloading
• Building Transports: since these are immobile, the TDP, FPP,
and UP are the same as the building’s location. Sub-tile
placement code handles the unloading to make sure that
placement is valid
• Naval Transports: closest
water tile to the CP is
selected as the TDP and
the adjacent land tile is
the FPP. The UP is the
closest tile on a straight
line to the CP but within
the unload range of the
transport
Summary
• Random Map Generation considers player
placement, clump detail growth, and resource
allocation to ensure a fair but random map each
time
• Random Map Generation uses scripts and
subscripts for the generation process
• Transport Unit AI must control the Passengers in
addition to the Transports
• Transport Unit AI mainly considers loading and
unloading, and uses pathfinding for movement of the
transport and passengers
Download