An AI enemy generator gives you a silhouette, not a fight
8 min read
An enemy is not a model plus a stat block. It is a behaviour the player can read and plan around. Generation gives you the silhouette; the fight is still yours to design.
The stat block is not the enemy
Ask for a new enemy and you will get a description, a set of numbers, and if you are using image or model generation, something that looks the part. Health, damage, speed, resistances, a name, a bit of lore. It looks like an enemy in the way a character sheet looks like a character.
But think about the enemies you can still picture years later. The Souls games are full of them. So is Doom 2016, Halo, Resident Evil 4, Hollow Knight, and Nintendo's whole back catalogue. In almost no case is the memory a number. The memory is a movement. The wind-up before a swing. The moment it charges. The one gap in its pattern where you get to hit back.
An enemy, mechanically, is a behaviour the player learns. It is a small puzzle that runs in real time. The stats are how hard the puzzle is; the behaviour is what the puzzle is. Generation produces the former very easily and the latter almost not at all.
That is not a complaint about the tools. It is a statement about where the work lives, and knowing that saves a lot of frustration.
Readability comes before difficulty
The first job of an enemy is to be legible from across the room, in motion, while other things are happening. Before a player can beat it, they have to know what it is.
Doom 2016 is the textbook case. Every demon reads instantly by silhouette and by colour at the range you first see it. You know from the shape whether the thing charges, flies, lobs, or rushes. Overwatch does something similar with character reads. Left 4 Dead adds an audio layer: each special infected has a distinct sound cue that tells you what is coming before you can see it.
Generated enemy art is genuinely useful here, but it optimises for a different thing. Image and model generation is drawn towards detail, ornament and texture, because those signals read as quality in a still image. A silhouette that reads at forty metres in motion is closer to the opposite: fewer shapes, bigger contrast, clearer negative space.
A quick test costs almost nothing. Fill your generated enemy in with flat black and look at it small. If you cannot tell it from your other enemies, no amount of texture will save it in play, because in play the player is looking at movement, not surface.
Telegraphs are the actual design
A telegraph is the signal an enemy gives before it does something. The wind-up animation, the flash, the sound, the change in stance. It is the promise that lets the player act rather than react blindly.
The length of a telegraph is one of the most consequential numbers in an action game. Too short and the attack feels unfair; the player loses health and does not know why. Too long and the enemy feels sluggish and the fight becomes trivial. Getting it right is a matter of measuring against the player's own timings: how long the dodge lasts, how long the recovery is, how far the roll travels.
Bloodborne and Sekiro are studied for this. In Sekiro the entire combat system is a conversation of telegraphs, down to a specific symbol that appears for attacks you cannot block. Nothing about that design can be inferred from an enemy description. It comes from the relationship between the enemy's timings and the player's verbs.
That relationship is why generated enemies drop straight into a game and feel wrong even when the numbers are reasonable. The enemy was described in isolation. Combat is not experienced in isolation. Every attack timing is only meaningful relative to what the player can do about it.
Predictability is a feature, not a flaw
There is a persistent instinct that better enemies mean smarter, less predictable enemies. In most games that is backwards.
Players need to be able to form a plan. A plan requires a model of what the enemy will do, which requires the enemy to be consistent enough to be modelled. Halo's Elites are famous for feeling intelligent, and much of that feeling comes from behaviours that are consistent and readable: they take cover, they flinch, their shields flare, they retreat and regroup in ways you learn to anticipate and exploit.
Truly unpredictable enemies feel arbitrary. If a wolf might lunge, or might not, with no signal either way, the player cannot learn. They can only guess, and guessing is not gameplay. The pleasure in combat is watching your own predictions get better.
This is where a language model's instincts can actively mislead. Asked to make an enemy more interesting, it tends to add more abilities, more phases, more randomness and more special cases. That usually makes an enemy less readable, not more compelling. The compelling version is often one behaviour executed clearly, with a gap in it.
Every good enemy has a gap. The moment after it commits. The window when its shield is down. The angle it cannot turn to face. The gap is what turns an obstacle into a puzzle, and identifying the gap is design work no generator will do for you, because the gap only makes sense relative to your player's toolkit.
What the model actually hands you
Be concrete about the deliverables. Text-to-image gives you flat concept art quickly. It is inconsistent between two calls, so your five enemies in a family will not share a palette or a proportion system unless you force them to. There is no clean alpha edge unless you cut one, and no guarantee that a second pose resembles the first.
Text-to-3D in 2026 gives you a single model with a texture. That is genuinely useful for blocking out a fight: something the right size, in the right place, that you can walk up to and swing at. The topology is dense and irregular, the UVs are machine-made, there are no levels of detail, and rigging or retopology is still human work. It is not a hero asset and it will not animate itself.
Text-to-sound gives you short clips, a few seconds at a time, one at a time. That covers impacts and interface blips well enough for a prototype. It does not give you a layered creature vocalisation set, and it is not an adaptive audio system.
Text-to-code is the part that has moved most. A model writing the state machine, the perception check, the pathfinding hookup and the animation plumbing is genuinely good at that. It will wire an enemy up faster than you can. What it will not do is tell you whether the fight is any good.
Stack those honestly and the picture is clear. Generation gets you a thing that is the right size, the right shape, roughly the right sound, wired in and moving. That is a strong placeholder and a weak final enemy, and the distance between the two is entirely behaviour.
Enemies are designed in sets, not one at a time
Individual enemy generation misses the most important structural fact: enemies are interesting mainly in combination.
A single Doom imp is a low-effort target. An imp behind a pinky, with a revenant on a ledge, is a situation. The design work is not the imp. It is the roster: making sure each enemy pressures the player differently so that mixing them creates problems no single type could.
Resident Evil 4 does this with a small cast. Crowds pressure your positioning, chainsaw enemies pressure your patience, ranged enemies punish you for hiding. The tension comes from the combination forcing you to choose which pressure to answer first.
So the question to ask of any new enemy is not is this cool. It is what does this one force the player to do that nothing else in the roster forces. If the answer is nothing, you have a reskin, and adding it dilutes the set rather than enriching it.
This also gives you a good discipline when generating in bulk. Generate the roster, then sort by pressure type. Anything that duplicates an existing pressure gets cut, however good it looks.
A workflow that uses the tool for what it is good at
Start from the pressure, not the creature. Write down the gap in your combat that needs filling. Something that punishes standing still. Something that forces the player to use the ability they keep ignoring. Something that makes verticality matter.
Design the behaviour on paper before anything is generated. Approach pattern, attack, telegraph length, recovery window, what makes it vulnerable. Four or five lines. That is the enemy.
Then generate. Get the silhouette, get a blocked-out model in the world at the right scale, get an impact sound, get the state machine wired. This is the fast part and there is no reason to do it by hand.
Then play it, repeatedly, and tune. This is where the actual time goes, and there is no shortcut, because the only measurement that matters is whether the fight feels good to a person holding the controller. You do not need to have written the state machine to make that call. You need to fight the thing thirty times and notice when you stopped dying for reasons you understood.
Tune in this order: telegraph length first, then recovery window, then damage, then health. Most enemies that feel bad are fixed by the first two, and most people reach for the last two.
The honest position
Generated enemies are a real accelerator and a real trap, in the same way generated art is. The accelerator is that you can have twelve creatures standing in your level tonight, at the right scale, making noises, and you can start feeling out the space of the fight immediately.
The trap is that a room full of plausible-looking enemies is very convincing evidence that you have a combat system, right up until someone plays it and finds that every fight is the same fight.
The thing that makes a fight memorable has never been in the asset. It is in the small contract between what the enemy telegraphs and what the player can do about it, and that contract has to be measured, felt and adjusted in play.
Use the tools to get to the playable state faster. Spend the time you saved on the part that only exists once someone is playing.