A software bug, often abbreviated as a bug, is an error, flaw, mistake, failure or fault which produces an unexpected result. It is more common in the computer section as bugs are often related to programming/software/gaming.
Map bug Edit
- In the zombie escape community, there are frequently maps which are buggy and/or causes crashes. This is because when compiling a map in hammer (Source SDK), there are a lot of factors which are taken into consideration to successfully create the .bsp file format, the actual map file.
- It is impossible for a map to be 'error-free' when you compile it, but luckily, those errors are not dangerous and will not make the map unplayable. These are common errors which will most likely appear in any map and are unremarkable because it are internal errors.
- Bugs or errors that players can notice are external errors created/caused by the author itself (most likely unintentionally), and can make the server crash or end up being a map impossible to finish. These are bugs that need a fix or update. This is called a fatal error.
- A fatal error prevents the map to be in a final/stable state unless fixed.
Entity limit (as a crashing cause) Edit
Entities are all things inside a map that have a certain active or inactive state of which the server has to keep track of all the time during the map's active period. There is a total limit of 2048 entities a map can carry. Going over this limit will undeniably crash a map on load. All entities that count to this number are:
- prop_dynamic's (such as Bahamut, the Predator, ...)
- prop_physics (All movable items)
- game_ui's (such as Gandalf in Minas Tirith),
- Particles (such as materia from Mako Reactor)
- Named lights
- Dynamic lights (are rarely used)
- path_tracks, which define paths for elevators and eventually bosses
- Removable walls (as appear in Paranoid),
- Commands (only 1 entity)
- Spawns (usually 64)
When creating a map, you should assume that all players and their loadout (weapons and inventory) will take about 650 entities from the 2048. This means that you have a rough 1400 entities left to play with. To be completely safe, you should keep the number below/at max. 1300 as there are servers with extra plugins that may spawn even more (useless) entities.
Many maps in zombie escape have several stages/levels, which all need extra entities as the map progresses. While you can kill entities from a previous level so they are removed from this total count, the number will often gradually increase as higher levels always require more entities than you would with only the same level!
That's why often this entity limit will cause a map to crash near the end of a long playtime. This is merely bad luck if you encounter this, and it's never the server's fault in this case. Valve has decided to put the limit to what they needed for their levels in Half-Life 2, so there is no way around this number, nor will they change it.
No way around the limit? Edit
There are a lot of tricks to obtain a very high level of entities while keep the number far lower than 2048 on start of the map, by for example spawning a repetitive entity a couple of times over with only 1 extra entity/spawn.
A good example for this are the guards on Minas Tirith. The guard exist of 1 trigger_push, 1 prop_dynamic (the model itself), 1 point_template (that is the entity which registers all selected entities for the guard to spawn them elsewhere) and another entity which counts the total hits before the guard dies from the zombie knife hits. Then, knowing the spawning has no limit, you can insert a origin location somewhere on your map where you want to spawn this template/guard(s) and then, when a new level gets triggered, that level will spawn that one guard template on all the locations you have inserted (about 25/level), so that would mean that that specific level takes only up to 100 entities for itself instead of the 400 entities that would otherwise have spawned if you didn't used a point_template that can spawn/recreate these entities on other locations. This method is called smart mapping.
A thing to note is that there is no limit inside Hammer itself, the .bsp file that it creates for making maps is the file that takes these limits into consideration! So it's never Hammer itself that is going to warn you when you hit the entity limit! (however the compiler will do it).