class: center, middle
Gerard Escudero, 2020
.footnote[source ]
class: left, middle, inverse
-
.cyan[Introduction]
-
Formation Motion
-
Waypoint Tactics
-
Tactical Analysis
-
Tactical Pathfinding
-
References
General plan to achieve a goal (long time).
Example:
Planning where to send the troops to win the war.
Specific plan to achieve a particular goal (part of a strategy).
Example:
How soldiers should run in a zig-zag pattern to decrease the chance of being shot.
.footnote[.red[Source]: Diffen (Strategy vs Tactic)]
class: left, middle, inverse
-
.brown[Introduction]
-
.cyan[Formation Motion]
-
Waypoint Tactics
-
Tactical Analysis
-
Tactical Pathfinding
-
References
.cols5050[ .col1[ For simple formations.
-
.blue[Formation]: set of slots
-
.blue[Slot]: location for an agent
- 1 slot leader
- rest of slots follow the leader
$p_s=p_l+\Omega_l r_s$
$\Omega_s=\Omega_l+\omega_s$
$s$ : slot
$l$ : leader
$p$ : position
$\Omega$ : orientation
$r$ : position to leader
$\omega$ : orientation to leader ] .col2[
-
.blue[Scalable Formations]
- Depends on the number of members.
- Example: defensive circles
-
.blue[Emergent Formations]
- Not all the members follow the leader (cascade)
- Example: wedge formation ]]
-
.blue[Slot Roles] are the typical RPG formations, in which every layer has a role:
- Melee warriors
- Arquers and Missile Magicians
- Magic and Healers
-
They might need rearguard layers.
- Given a fixed slot structure, an assignment of units has to be given:
.cols5050[ .col1[ .center[
Cost | Magic | Missile | Melee |
---|---|---|---|
Ranger | 1000 | 0 | 500 |
Warrior | 2000 | 1000 | 0 |
Mage | 500 | 0 | 2000 |
Healer | 0 | 1000 | 2000 |
(Millington, 2019) | |||
]] | |||
.col2[ | |||
.blue[Optimization process] |
-
Genetic Algorithm
-
Fitness:
$\sum_i cost_i$
Melee | Missile | Magic | Melee |
---|---|---|---|
3 | 2 | 1 | 2 |
]]
class: left, middle, inverse
-
.brown[Introduction]
-
.brown[Formation Motion]
-
.cyan[Waypoint Tactics]
-
Tactical Analysis
-
Tactical Pathfinding
-
References
.blue[Tactical locations or waypoints]:
-
defensive locations, cover points, shadows...
-
A location can be a compound tactic: set of primitive tactics
Example: cover / shadow
.blue[Using tactical locations]:
- Previous algorithms: FSM, BTs, GOAP...
.blue[Generation of properties]:
-
Manually: level designer
-
Automatic: raycast (visibility, cover), light maps (shadow)...
.blue[Generation of waypoints]:
-
Watching human players
-
Waypoint Grids: test possible locations and choose the bests
.cols5050[ .col1[
- Video ] .col2[
- FindClosestCop / download
- Cop / download ]]
class: left, middle, inverse
-
.brown[Introduction]
-
.brown[Formation Motion]
-
.brown[Waypoint Tactics]
-
.cyan[Tactical Analysis]
-
.cyan[Influence maps]
-
Terrain Analysis
-
-
Tactical Pathfinding
-
References
Track of current military influence of each location.
.blue[Influence]:
.cols5050[
.col1[
.blue[Applications]:
-
Safe areas, areas to avoid, weakest border...
-
Plan attack locations or movement guide
.blue[Dealing with unknowns]:
-
Risk of underestimating forces (fog-of-war)
-
Prediction of the enemy forces (Machine Learning)
Influence maps by Anomalous Underdog
class: left, middle, inverse
-
.brown[Introduction]
-
.brown[Formation Motion]
-
.brown[Waypoint Tactics]
-
.cyan[Tactical Analysis]
-
.brown[Influence maps]
-
.cyan[Terrain Analysis]
-
-
Tactical Pathfinding
-
References
Extracting useful data from the structure of the landscape.
-
Covers, shadows, visibility...
-
Algorithm: visite locations, calculate and annotate.
-
Situations may change fast and they can have a high cost.
.cols5050[
.col1[
]
.col2[
Killzone's AI: dynamic procedural combat tactics
.blue[Initial situation]
(with legends)
]]
.cols5050[
.col1[
.blue[a) Distance nearby points]
.blue[c) Line-of-fire secondary threats]
]
.col2[
.blue[b) Line-of-fire primary threat]
.blue[d) Preferred fighting range]
]]
.footnote[Killzone's AI: dynamic procedural combat tactics]
.blue[e) Adding all annotations yields best position]
.footnote[Killzone's AI: dynamic procedural combat tactics]
class: left, middle, inverse
-
.brown[Introduction]
-
.brown[Formation Motion]
-
.brown[Waypoint Tactics]
-
.brown[Tactical Analysis]
-
.cyan[Tactical Pathfinding]
-
References
.blue[Is shortest path the best path?]
.blue[Connection cost function]:
.cols5050[
.col1[
.footnote[.red[*] Killzone's AI: dynamic procedural combat tactics]
class: left, middle, inverse
-
.brown[Introduction]
-
.brown[Formation Motion]
-
.brown[Waypoint Tactics]
-
.brown[Tactical Analysis]
-
.brown[Tactical Pathfinding]
-
.cyan[References]
-
Straatman, van der Sterren & Beij. Killzone's AI: dynamic procedural combat tactics.
-
Ferdinand Joseph Fernandez. Influence Maps Unity 3d, Anomalous Underdog, 2012.
-
Ian Millington. AI for Games (3rd edition). CRC Press, 2019.
-
Ammobox Studios. FPS/RTS Tactical AI in Unreal Engine 4.0, 2014.
-
Soren Johnson. Playing to Lose: AI and "Civilization", 2010.
-
Damián Isla. Building a Better Battle: The Halo 3 AI Objectives System, audio, 2008.
-
Alex J. Champandard. The Core Mechanics of Influence Mapping, video, 2011.