Skip to content

Latest commit

 

History

History
66 lines (52 loc) · 2.11 KB

README.md

File metadata and controls

66 lines (52 loc) · 2.11 KB

TNTW

Totally Not Total War - a toy attempt at implementing Total War: Rome 2 in the bevy engine.

This is a project, intended to teach myself game engine deveopment, with the eventual goal of it being used as a test bed for prototyping reinforcement learning (RL) algorithms for an AI opponent.

Implemented Features

  • Left click to select units
  • shift+lclick to toggle-select, ctrl+lclick to multi-select
  • Right click to set unit waypoint while selected
  • Units should move towards waypoint, and then transition to idle once they arrive
  • A waypoint can be a position on the map, or another unit (in which case it will follow it around)
  • double click actions perform the fast/run version of action
  • "S" to stop unit
  • "R" to toggle run/walk
  • "ESC" to quit
  • drag-select
  • different icon for selected/unselected units
  • UI for unit state
  • rudimentray melee combat when units engage with eachother
  • unit collision detection
  • healthbars
  • pause (but no new commands can be issued during pause)

Coming soon(tm)

  • proper aabb selection boxes?
  • actual textures for units
  • proper combat
  • ranged combat
  • teams
  • box for drag-select
  • unit acceleration and rotation
  • game speed controls
  • determinism
  • replay system?

Why

I started playing video games during quarantine/lockdown, but the built-in AI for most strategy games sucks. Rome 2 in particular is fun because its fairly immersive due to its realism, but when the AI do stupid things it breaks that realism a bit.

I thought: "Well, they did it with Starcraft 2 & AlphaStar, it can't be that hard, right?". I look a bunch of reinforcement learning courses, and had some toy algorithms running, but applying them to a game without any internal API seemed like a bit of a daunting task, so I decided to build my own simulator instead (because thats totally easier, right?).

I picked bevy because I use Rust at work, and also the hackernews hype train.

RL training MVP requirements

  • determinism
  • abstracted command interface
  • serializable state
  • 4 unit types
    • spear
    • ranged
    • sword
    • cav

Impl notes

Each unit can only have one missile and one melee attack