Skip to content

Mapping & Porting Guide

wootguy edited this page May 25, 2026 · 35 revisions

If you're a Sven Co-op mapper, just make a map for sven and I'll port it eventually. It's complicated to develop for this mod. If you want to try anyway, check these guides:

Wiki Description
Server Setup Set up a local server set up for testing. Includes basic instructions for the automatic map conversion script.
bspguy Porting Guide Problems and solutions for porting Svengine maps to Half-Life. Focuses on solving crashes and overflows.
Common Porting Problems Solutions to common entity and gameplay problems when porting Sven Co-op maps.
Entity Guide Documentation for entities unique to this mod.
Custom Weapons Guide for creating custom weapons.
Map Configuration New CVars for map CFGs.

If you do manage to create or port a map, tell me and we'll test it on my server. I appreciate any help I can get. There are hundreds of maps left to port.

As a Sven Co-op mapper, the lower limits in Half-Life will be harder to deal with. The biggest pains are the lower model and Alloc Block limits. Use func_detail when possible and merge models into one to save on model slots. Scale up textures to reduce the Alloc Block count. The 8192 world leaf limit can also be a problem, but you need tons of world details to exceed that (io_v1, crystal_mission_1). The +/-4k world boundary is a somewhat soft limit, but players who don't use the custom client will thank you for not exceeding that (combat effects look proper, less net data, player sprays work).

The FGD for this mod can be downloaded here: hlcoop.fgd. Use it together with the sven-coop.fgd or half-life.fgd.

New mapping features

  • Global sound/model replacement files can replace everything. Player movement sounds, default weapon sounds/effects, HUD selection sounds, etc. Stop adding weapon sounds to view model animations.
  • .res files are obsolete. Don't bother making one. The mod knows how to precache everything clients need.

Client commmands

Cheat commands useful for testing maps. The big 3 are god, noclip, and impulse 101 for all weapons. You don't use the cl_ versions here.

Command Description
instakill All your weapons do a million damage.
nodes Toggles node graph visibility. Different colored lines represent each hull path.
Pink = HULL 2 monsters and smaller can pass.
Blue = HULL 1 monsters and smaller can pass.
Orange = HULL 3 npcs can pass.
Yellow = Flying monsters only.
Thick line = An entity blocks the path (door).
revive Revive yourself
strip Remove your weapons
trigger Trigger something in front of you. Or, type in an entity name after this to trigger a targetname.
trigger0 Same as trigger but with the OFF trigger mode.
trigger1 Same as trigger but with the ON trigger mode.
trigger2 Same as trigger but kills the entity.

The Nerfer

I'm irritated by maps that add respawning monsters, increased monster HP, or make slight damage adjustments for no good reason. Three new cvars were created to undo those changes across all maps. These aren't cvars I think mappers should be touching, but here's how they work.

CVar Description
mp_bulletsponges 0 = Never allow increased monster health.
1 = Always allow increased monster health.
2 = Allow increased monster health if there is a "good" reason for it (custom model, death trigger, osprey/apache with a targetname, glow effect, or 90000+ HP)
mp_maxmonsterrespawns -1 = Allow monsters to respawn infinite times
0 = Never allow respawning monsters.
N = Allow monsters to respawn up to N times.
mp_skill_allow 0 = Don't use custom skill file. 1 = Use custom skill file.

My defaults are mp_bulletsponges 2, mp_maxmonsterrespawns 1, and mp_skill_allow 0. Special exceptions are made for maps like svencooprpg where infinite monster respawns are a gimmick and can be stopped by destroying the spawner. I'll enable skill files in maps like sc_shogo_b where the gimmick of the map is that everything dies in 1 hit.

More thoughts

Attempting to balance maps via monster health and respawns is a fool's errand. Even if you subjectively succeed, it's just that one map that's balanced now. What about the other 3000? The server op should be handling this job, not every map author with their own preferences.

A minimum/maximum player limit set for each map could work too. 10x monster HP is actually fine if there are 30 players. When that's implemented, the nerfing stuff might go away. That would create a new problem though, where mappers/porters are upset that their map never comes up due to the minimum player limit. As a player I think that could be more fun though. On the rare days where there's a full server, I'm thinking "wow there's X players we should be playing Y map, and we finally have enough players for Z map!" ...and then the resident evil map comes up. Or some other slow map filled with cutscenes.

Clone this wiki locally