Tutorial · Dark Souls

Boss vs Boss Battles in Dark Souls Using DSMapStudio

Tested on v1.11.1 Updated 2026-06-09

Boss vs Boss Battles in Dark Souls Using DSMapStudio

Pitting two bosses against each other comes down to two ingredients: getting both into the same place as enemies, and making them hostile to each other so they actually fight instead of ignoring one another. DSMapStudio handles both — placement in the Map Editor, enemy data in the Param Editor. It's a for-fun, experimental setup, so expect rough edges, but the recipe is short. You'll want a Dark Souls project open (Dark Souls setup) and a handle on placing enemies.

The two conditions

Two things must be true for two bosses to fight:

  • Both present as enemies in the same map. A boss is just an enemy entry with a boss model, stats, and AI. Staging a fight means two such entries near each other.
  • They're on opposing sides. Enemies decide who to attack from their team / allegiance in NpcParam. By default most enemies share a side and won't hit each other; putting two on different teams is what turns proximity into a brawl.

Get both right and the AI does the rest.

Place the bosses as enemies

In the Map Editor, create each boss the way you'd place any enemy: duplicate a nearby enemy entry (so it inherits correct draw groups and collision), then change its model, NpcParam, and think param to the boss you want. Do this twice, positioning them near each other in an open area with room to fight, and give each a unique entity ID. Why duplicating a nearby enemy is the reliable approach is in the place enemies guide.

Make them fight — team and allegiance

This is the step that turns two bystanders into opponents. Each enemy's NpcParam carries its team / allegiance — which side it's on, and therefore who it treats as an enemy. Set the two bosses to opposing teams so each registers the other as hostile. Share a side and they'll stand around ignoring each other no matter how close; oppose them and they engage. This same "enemy infighting" mechanic makes any two enemies brawl, not just bosses. The allegiance fields live in NpcParam, so the Param Editor is where you set them.

Testing it live with Cheat Engine

DSMapStudio places the bosses and makes them hostile; iterating is faster if you can spawn and watch them on demand. The community approach pairs DSMapStudio with Cheat Engine to trigger and observe the matchup live while you tune positions, stats, or allegiance — without a full reload each time. DSMapStudio defines the fight; Cheat Engine is for testing and showcasing. (For a packaged mod others load, you still distribute the edited map and params; Cheat Engine is just your test harness.)

A few realities

Bosses weren't built to fight outside their arenas:

  • Arena ties. Many bosses are wired into their arena through event scripts (EMEVD) — fog gates, music, triggers. Pulled elsewhere, a boss may behave oddly, skip phases, or wait on triggers that aren't there.
  • AI/animation fit. A boss running its normal AI against another boss can look strange; not every matchup is clean.
  • Balance is irrelevant. This is spectacle — one boss usually steamrolls the other depending on stats and movesets.

None of these stop the fight; they're just why boss-vs-boss is a playful experiment, not a balanced feature.

Save and test

Ctrl+S, point ModEngine2 at the project's mod folder, load into the map. If they ignore each other, recheck team allegiance in NpcParam — shared sides are the usual reason a "fight" doesn't start. If a boss is missing, its placement or draw groups need attention (placing enemies).

Place both as enemies, set opposing team allegiance, test the matchup. Placement detail: place enemies guide; allegiance fields: Param Editor hub; unique entity IDs keep each boss addressable by scripts.

Watch it in action

Community video guides this article draws on — credit to their creators.

How to Set Up Boss vs Boss Battles with DSMapStudio + Cheat Engineby community · watch on YouTube →