jonas nelson, splash damage. what we’ll cover combat state machine dynamic cover system ...

19
Combat reasoning Jonas Nelson, Splash Damage In BRINK

Upload: john-high

Post on 31-Mar-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Combat reasoning

Jonas Nelson, Splash DamageIn BRINK

Page 2: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

What we’ll cover

Combat State Machine Dynamic Cover System Developing Brink

Page 3: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Combat reasoning

State machine Completely implemented in C++ with no direct

designer control Heavily based on dynamic cover system No explicit team coordination

Page 4: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Combat State Machine

Attack

React

Hide

Chase

Page 5: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

No pre-calculated cover information Circular sampling patterns Traces determine whether position is a cover or

an attack position

Page 6: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

Page 7: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Dynamic Cover System

Page 8: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Dynamic cover system

Page 9: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Dynamic cover system

Page 10: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

Positions are evaluated constantly even when there's no valid enemy

Positions are only evaluated against the most important target for performance reasons

Result of evaluation is written to world state

Page 11: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

Every frame, evaluate one position for each bot If the position is in a valid navmesh position (i.e

we can move to it)– Perform trace to most important target– Result of trace determines visibility state for position

Traces are deferred and callback lets us know when it's done

Page 12: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

Every frame evaluate position queries for cover positions

Each type of query score the position differently– Cover– Closest attack position– Farthest attack position– Sidemove attack position

Punishing arrival distance to cover gives rise to simple flanking logic

Page 13: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Dynamic Cover System

Page 14: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

dynamic Cover System

Moveable reference position gives ”cover” system many uses– Use cover while hacking– Detonating satchel charges– Use cover while deploying mines and turrets– Avoid dangers (such as grenades) while going to

cover– During normal combat the reference position keeps

moving relative to enemies and allies

Page 15: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Greatest Challenges

Small team size Testing. Code coverage invaluable Limitations of AAS compiler not taken into

account when building maps Transitions between combat and non-combat– Requires tactial awareness that bots lack

Page 16: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

How to do this with a small team?

Don't spend time authoring tools, especially tools no one will use

Keep each component simple. Combining components will create complex behaviour

Piggy-back off gameplay. Good communication is key

Code coverage invaluable

Page 17: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

What Worked Well?

People having difficulty telling bots from humans

Bots are good teammates– They play the game ”as it should be played”

Page 18: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Limitations

Bots aren't tactically aware enough, making them bad attackers

When playing against multiple humans, bots aren't challenging enough

Bots unaware of some human tactics (like rushing objectives)

Page 19: Jonas Nelson, Splash Damage. What we’ll cover  Combat State Machine  Dynamic Cover System  Developing Brink

Questions?