Doom Modder Cheat Sheet
Posted by Climhazzard. Updated 19 hours ago
Classic Doom Modder Cheat Sheet
Here's a bunch of snippets, tips & tricks, and other useful info for modding doom.
Creating a new "Player"
// ZSCRIPT.zs
class MyCustomPlayer : DoomPLayer
{
Default
{
// Edit properties here
}
}// MAPINFO
GameInfo
{
PlayerClasses = "MyCustomPlayer"
}Listening to a Linedef for a "Player Use" Event
// ZSCRIPT.zs
class MyEventHandler : EventHandler
{
override void WorldLinePreActivated(WorldEvent e)
{
// check for the activation type. ie. a player pressues use on the linedef
if (e.ActivationType == SPAC_Use && e.Thing && e.Thing.Player)
{
// only activate on a linedef where args[0] is 30.
if (e.ActivatedLine.args[0] == 30)
{
// print a message to the player's screen
e.Thing.A_Print("You did it!");
}
}
}
}// MAPINFO
GameInfo
{
AddEventHandlers = "MyEventHandler"
}Creating a logger
// Logger.zs
class Logger
{
enum LogLevel
{
Log_Info,
Log_Warning,
Log_Error
}
const logEnabled = true;
private static void WriteLog(string levelStr, string msg)
{
if (!logEnabled) return;
Console.Printf("\n[ModName][%s] %s", levelStr, msg);
}
static void Info(string msg)
{
WriteLog("INFO", msg);
}
static void Warning(string msg)
{
WriteLog("WARNING", msg);
}
static void Error(string msg)
{
WriteLog("ERROR", msg);
}
}Doom Graphics
Doom sprites follow the format
[XXXX][F][A][XXXX] Is the sprite identifier [F] Is the frame letter, A-Z [A] Is the angle, and must be 1, 8 or 16 (16 uses 1-8 A-F)
Helpful Resources
To create a new mod with zscript quick start
In UDB, create a map in UZDoom Doom2 (UDMF) format. Choose ZDoom ACS as the script type.
Add DOOM2.wad as a resource
Add your project directory as a resource here as well