Skip to content

kellylawrence/spawn-b-gone

Repository files navigation

Spawn-B-Gone

What Is It?

Spawn-B-Gone will remove selected enemy types from maps/levels for the home computer release of the video game Quake, and should also work for any fan made maps or mods such as Arcane Dimensions, Quoth, etc. (While not tested, it could potentially work for Quake 1 engined based games such as Hexen II for example.)

Why Make It?

Because I suck at video games.

The original goal was to create something that would allow me to remove Spawn enemies from any Quake maps. They are by far Quake's worst enemy type (IMO). (More whining below) I didn't want to have to manually determine which map featured them, open said map, edit it, and save each file in a map editor, so I tried to find a code solution that could somewhat automate the process.

After a bit of trial and error while creating these scripts, I realized any enemy type could be removed entirely from maps. So instead of limiting the scripts to just replacing or removing Spawn enemies, I figured it would make more sense to allow the removal of any enemy type. I thought the name was decently clever though, so I kept it even after changing the scripts focus.

Lastly, this has just been a fun coding exercise (.bat/.sh file creation) for a game I enjoy playing. I've also learned a bit about how Quake map files are created, compiled, and structured in the process.

How Does It Work?

The scripts are just a glorified find and replace function. They search for a user entered string (Ex: monster_dguard) within a Quake .bsp map file, and replace the monster_ prepend with _removed.

Quake seems to expect a certain file/lump size for a compiled .bsp map file that I'm not familiar enough with, so changing the number of bytes in the file seems to cause Quake to crash when the map is loaded. For example, replacing a monster entity name with another of more or fewer characters (E.g., monster_zombie to monster_dog), or just outright removing an enemy map entity doesn't work.

(EntEd seems to work when removing entities, but I'm not sure how it does it properly, and it also seems to crash when loading larger, more modern fan created maps. If you're aware of how I could get around that issue, feel free to contact me or submit a PR.)

How Do I Use It?

1. Requirements

Mac/Linux

Windows

2. Download and Setup

Download either the spawn-b-gone.sh (Mac/Linux) or spawn-b-gone.bat (Windows) script to a directory of your choosing. Preferably wherever the Quake .bsp map file(s) that you want to run the replacement on are already located. This is usually a path that looks like one of the following:

C:\Quake\MODNAME\maps
C:\Program Files (x86)\Steam\steamapps\common\Quake\MODNAME\maps

Note: Mac/Linux users

If you are using spawn-b-gone.sh, you will need to make the bash script exectuable, by running the following command in the directory that you placed the script:

chmod 755 spawn-b-gone.sh

Note: Working with .pak files

If you want to run the replacement on the original games map files or any mods that are contained as a .pak file, you will need to export the .bsp files from within to a temporary directory, using something like PakScape. After running the script, if you are using a modern Quake sourceport, you may be able to leave the extracted .pak files as is. If not, then you will then need to import the modified .bsp files back into the .pak file and save it.

3. Usage

Run ./spawn-b-gone.sh (Mac/Linux) or spawn-b-gone.bat (Windows) in your terminal from whatever directory you've placed the script in, and then follow the on screen prompts. This directory must contain the .bsp files you want to run the enemy removal on. E.g.:

cd C:\Quake\MODNAME\maps\
Spawn-B-Gone.bat

4. Reverting

If any map files had replacements made, you should now have a MAPNAME.bsp.bak file(s) for it in the same directory. You should either keep these files as is, or put them somewhere safe, in the event you want to revert back to the original enemy layout.

To use the original map file, just delete the modified one, remove .bak from the filename of the backup map, and put it in place of the modified file you deleted.

Additional Notes

Does removing enemies from maps break anything?

Aside from the balance of the map as created by the original desiger, this may cause issues in situations where a maps logic/triggered events are tied to:

  • Expecting a specific monster entity type (E.g., A door only opens if a specific Spawn enemy is killed, a Shambler only appears if a number of Death Knights are killed, etc.)
  • Expecting a specific number of enemies on the map (I.e., These scripts will reduce a maps total enemy count)
  • Some other situation I haven't thought of.

In the event of such an issue (or any other), you could easily revert to the original maps backup file that is generated when the scripts are run.

Spawns Are The Worst

For me personally, I find that they ruin the flow of the game. They seem to have no discernible pattern, unlike every other enemy type, and can be used quite poorly in fan made maps. Coming across them changes the game from a fun run-and-gun shooter, to a corner-creeper, where you have to move slow and poke around corners to take the enemy out before continuing on running and gunning.

"get good scrub", "ur nt a l33t gmr", "this ruins my childhood!", etc.

Thank you for your comments. I will take them under consideration. Please forward any additional insights to spawn-b-gone@gmail.com.

About

Remove specific enemy types from maps/levels for the video game Quake.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors