Monster Generator for Video Games: Enemy Stat Blocks

Pick a habitat, a combat role and a threat level, add traits if you like, and get a video game monster card: a name, a description, HP, damage and speed, an attack pattern, behavior states for its AI (idle, patrol, chase, attack and one more), a weakness and drops. Reroll any part, copy it as text or download it as JSON, and optionally draw it with AI on your Ziva account.

Step 1 of 3: Habitat
Where does your monster live?

How to use it

  1. Choose a habitat, such as Forest, Crypt and ruins or Sci-fi station, and press Next.
  2. Choose a role (Swarm, Tank, Ranged, Ambusher, Support or Boss) and a threat level, then press Next.
  3. Pick up to two traits, such as Venomous or Armored, or leave Surprise me on, and press Generate monster.
  4. Press the reroll button on any section to change just that part, then press Copy as text or Download JSON.
  5. Optionally, under Draw this monster with AI, sign in, pick Pixel art or Smooth and a size, and press Draw monster.
  6. Press Copy Ziva prompt to have Ziva build it as an enemy with its behavior states.

Design enemies by combat role

A monster's role decides how it changes a fight, and a mix of roles makes an encounter interesting. A swarm overwhelms with numbers, a tank blocks the path and soaks hits, a ranged enemy pushes the player to move, an ambusher punishes rushing ahead, and a support enemy makes every other monster stronger until the player deals with it first. A boss combines several of these in one fight with phases.

Every attack needs a tell: a wind-up animation, a flash or a sound just before it lands, so a player who pays attention can dodge. Each card includes one, such as a tank that scrapes the ground twice before it charges.

The stats are starting numbers to tune, not rules. Speed is given as a percentage of the player's speed so it works in any game, and ranges are in tiles. A simple check is hits to kill: if the player's sword deals 10 damage, a 60 HP enemy takes 6 hits.

Turn the behavior states into enemy AI in Godot

The behavior states map straight onto a state machine. In GDScript, declare an enum with IDLE, PATROL, CHASE and ATTACK plus the card's extra state, keep the current state in a variable, and use a match statement in _physics_process to run the code for that state.

An Area2D child with a circle shape the size of the detection range can switch the enemy from Idle or Patrol to Chase when its body_entered signal fires for the player, and back when body_exited fires. Once the level has navigation data, a NavigationAgent2D handles chasing around walls: set its target_position to the player and move toward get_next_path_position() each physics frame. A one-shot Timer whose wait_time is the attack cooldown keeps attacks spaced out; start it after each attack and only attack again when it times out.

Put the stats in data rather than in the script, for example a custom Resource with @export variables, so you can make an Elite version by changing numbers instead of code.

Weaknesses and drops

A weakness is a promise to the player: learn this and the fight gets easier. Show it in the world, such as an armored back that glints or a monster that steps out of the water to attack, so players can discover it without a menu.

Drops come with a suggested chance per kill. Common habitat materials drop often, trait materials less often, and the threat level's reward least often, while a boss drops everything. Use the loot table calculator to check how many kills a player needs before a rare drop shows up.

Frequently asked questions

Is this a D&D monster generator?
No. It makes enemies for video games, so the stat block has HP, damage per hit, movement speed, attack cooldown, detection range and AI behavior states instead of armor class, challenge rating or ability scores.
What are behavior states?
They are the modes of an enemy's AI and when it switches between them: Idle until it hears something, Patrol along a route, Chase when it spots the player, Attack when in range, plus one state that fits its role, such as Enraged for a tank or Phase two for a boss.
Is the monster generator free?
Yes. Generating, rerolling, copying and downloading monsters runs in your browser with no account. Only the optional Draw this monster with AI panel needs a Ziva account, and each drawing uses your plan's AI usage.
Can I use the JSON in my game?
Yes. The JSON has the name, description, stats, attack pattern, behavior states, weakness and drops as plain fields, so you can load it in any engine or copy the numbers into your own enemy data.
How do I make a monster harder without changing its design?
Keep the habitat, role and traits and pick a higher threat level. HP and damage scale up while the attack pattern and behavior stay the same, so you get an elite version of a normal enemy.

See all tools