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