Sam Trenholme's webpage
Support this website or listen to my music

ObHack

Scroll down for downloads

ObHack is my name for some modifications Fritz and myself have made to Oblige, a random map generator for the original Doom, Doom 2, and Heretic. It is name thusly because it is a hacked Oblige, and as a tribute to the ObHacks posted to the once-great Usenet newsgroup alt.hackers.

ObHack is a fork of version 2 of Oblige (Oblige 0.81-0.97). It has the following features that Oblige2 does not have:

  • Real secret areas that take work to find
  • Improved random number generator which allows arbitrary English or Spanish text to be the seed, resulting in a nearly infinite number of possible seeds
  • New modes: Single Player + Deathmatch, Deathmatch without exits, and Capture the Flag
  • Progressive level size: Levels get bigger as one gets to higher levels in the wad
  • Enclosures and variable room sizes
  • Adjustable light level
  • Tiny and gigantic level sizes
  • Option to have swarms or even more monsters
  • Monster traps are back (removed in Oblige 0.94)
  • Boss levels now have boss monsters in them
  • Choice of player starting weapon
  • More texture packs, including contributions from Mr. Chris
  • Deathmatch starts in single player maps
  • Support for Blasphemer 0.1
  • And other features not listed here

Git repo

ObHack is currently in deep freeze; development is focused on adding tests to the code base and making it more deterministic. There is a Git repository for ObHack at GitHub, GitLab, Bitbucket, and Sourcehut.

Download

Most people will want to download the final version of the ObHack-8 fork of ObHack:

Oblige 7.70

I have a local mirror of Oblige 7.70, both source code and a Windows binary are provided. This was the final release of Oblige.

Of interest is the fact that Oblige uses a private Lua 5.1 variant with some non-standard changes to the syntax (notably, “each” for iterating tables and “continue” for loops).

ObHack FreeDoom: The “Hockey Rink” version

The most recent updates are done to an older version of ObHack, which I call “ObHack FreeDoom”, based on the 2009 code base. I use this older version because it’s more compact than more recent versions; this is a size optimized release for fitting on a now-obsolete “hockey rink” business card sized CD.

This release also includes my fork of an older version of FreeDoom. To save space, only four levels (MAP01, MAP02, MAP12, and MAP30) are not placeholders. MAP12 is a random map made with the default settings and seed for the included ObHack program. MAP01 and MAP02 come from FreeDoom; MAP30 is a proposed deathmatch map for FreeDoom from this thread; the author released the map under the FreeDoom license.

ObHack has been tweaked to use a particular seed and settings which makes a 32-map megawad which is the “canon” megawad for ObHack FreeDoom. This way, we have a fixed 32-map megawad (and, yes, I run a good number of different tests to make sure the megawad is fixed) which is made using procedural generation to save space. It is, of course, possible to use another seed and different settings to get more variety.

The wad is optimized for Doomsday 1.8.6, but has been tested and works in Chocolate Doom 3.0.0 (note that the ObHack generated wads will often times have issues with Chocolate Doom, but the base DOOM2.WAD file has no incompatible maps), GZDoom 4.3.3, and should work with any modern source port out there. The megawad even has demos (actually, the same very short demo repeated three times) so that ports like Chocolate Doom do not crash.

Support

Since I am not getting paid for this work, and since professional support contracts cost tens of thousands of dollars a year, the amount of support I provide for ObHack is very limited. I do pay attention to ObHack bug reports filed in GitHub, but I am under no obligation to answer or even address your concern.

Please do not send me a private message asking for support; if you do, I will refer you to GitHub.

Older releases

Older releases of ObHack (and SLUMP) can be seen here.

Other files

Here is a local mirror of all Oblige releases.

There is also version 1.8.6 of the Doomsday/Dengine engine for playing Doom. Please note that this version of Doomsday does not work with newer (post-0.7) releases of FreeDoom. Be aware that I do not provide any support for Deng 1.8.6 besides having a download; people who want a supported version of Doomsday should go the the Doomsday website and download the latest version there.

See also

Here is a Doom random map generator being updated as of 2021:
https://github.com/dashodanger/Oblige