Skip to content
APAdam Probert
← The workshop

Game · 2020

Exhausted

Post-apocalyptic vehicular combat with behaviour-tree driving AI.

What it was

The project

A physics-based apocalyptic vehicular combat game in Unity, built on PhysX for vehicles that feel realistic but still arcade. Multiple cars, weapons and environments, an arcade mode for instant action, and behaviour-tree vehicle AI running on a custom navmesh agent model built specifically for cars. And a lot of explosions.

Build

How it fits together

  • Vehicles simulated with Unity PhysX, tuned for realistic behaviour with arcade feel rather than simulation accuracy.
  • Enemy driving built on behaviour trees, making AI intent readable and tunable rather than buried in state machine transitions.
  • A custom vehicular agent model layered over Unity's navmesh, because the built-in agent assumes a walking character.
  • A range of cars, weapons and environments, plus an arcade mode for instant play.
Key decisions

The trade-offs that mattered

  • Behaviour trees over state machines

    Driving AI has many overlapping concerns: pursue, avoid, aim, retreat. Behaviour trees kept those composable instead of producing a state machine with an unmanageable transition table.

  • A custom agent model rather than fighting the navmesh

    A car cannot strafe, stop instantly, or turn on the spot. Rather than bending the built-in agent, the navmesh was used purely for pathfinding and a separate layer decided how a vehicle should follow that path.

  • Arcade feel over simulation fidelity

    Realistic vehicle physics is not automatically fun. PhysX gave the weight and impact; the tuning deliberately pulled back towards playability.

What I gained

What I took from it

Unity's navmesh agents assume something that walks. Writing a vehicle agent model on top of it was the first time I had to properly separate what a system decides from how a body executes it.

  • Separating what to do from how to do it is what made the driving AI tractable, and it is the same split that shows up in every system I have built since.
  • Physics gives you plausibility for free and fun for nothing. The fun is entirely in the tuning.
Contact

Have a difficult, important problem?

I’m happiest where the problem is unclear, several teams need to work together, and the outcome actually matters. If that sounds like your situation, let’s talk.

  • Talk through a hard technical problem
  • Scope a platform, data, or distributed-systems build
  • Get a second opinion on an architecture or delivery plan
  • A role or engagement worth a conversation