Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
samiam

OBLIGE with bugfixes and tweaks available

Recommended Posts

Hello everyone,

Some people may know that I once worked on a hack of SLIGE called SLUMP, available here:

http://www.samiam.org/slump.html

Well, the bad news is that the SLUMP project is dead. The good news is that's because, IMHO, Andrew Apted's OBLIGE has taken Doom random map generators to the next level. Well, I couldn't help but to tinker with the code and make my own modifications.

The first thing I have done is make "small" maps smaller than Oblige's "small" maps. This caused a number of bugs to pop up, which I hunted down and fixed. Someone once mentioned that being able to generate 1024x1024 deathmatch maps with Oblige would be nice; making a small map with deathmatch enabled now makes maps very suitable for near-overload-small 1-on-1 fragfests. Sometimes there are little nooks and crannies a player can hide in, but it won't take the other player very long to find them.

Small single player maps are now small enough to be playable as deathmatch maps, so I have added deathmatch starts to the single player maps. A small "single player" Heretic map is a playable 1-on-1 Heretic map, and a small "single player" Doom/Doom2 map is a playable 1-on-1 or 3/4-way free-for-all map (Doom maps have more fabs that players can hide behind).

Speaking of Heretic, I have fixed some Heretic bugs. Doors now always work, and it is possible to go to the secret levels in a megawad. Also, someone complained that Smite-Master is too hard with Heretic maps; I have somewhat fixed this by having the gauntlets and chaos device (sorry, the tome is too powerful) at the start of each level at Smite-Master difficulty.

Also, the chances of hitting a bug that causes the code to be unable to make a map has been reduced.

The code can be downloaded here:

http://www.samiam.org/slump/obhack.html

As an aside, down anyone have SL4's hacks to OBLIGE that change the architecture of Doom maps? http://sl4.dmclub.org/wasd/d2scripts.zip doesn't work anymore, and I can't find d2scripts.zip anywhere on the web.

I have some ideas about what to do with this code, so people let me know if you are interested in me working on this code while Andrew works hard on the rewrite that will become the next version of OBLIGE.

Bug reports are greatly appreciated. Feature requests will be looked at, but things like "have it make rooms in the shape of a pentagon" will be responded to with me explaining why it's hard to do something like that with OBLIGE's current codebase. :)

- Sam

Share this post


Link to post

Less height variants would be nice. I know that's an original Oblige thing, not your mod specific, but there are stairs and cliffs everywhere in Oblige maps. It kinda bugs me.

I'm an oblige sucker myself to be honest, In fact I was considering pumping out a megawad and playing it today.

Share this post


Link to post

You know, it's pretty easy to modify things so the levels are less lumpy. However, I'm holding off on doing this until I can figure out how to recompile the GUI, since how "lumpy" someone wants a map to be is a very subjective. I'd like to have a pulldown menu with "lumpyness", with options like "Flat", "Some lumpyness", "lumpy", "insane", etc. Speaking of which, I'd like to see more size options: "tiny", "small", "medium", "large", "huge", "insane". This way, there is more flexibility for people.

However, first I need to implement features in my "real" open-source project (a DNS server).

That said, I have fixed some generally Heretic-specific bugs, and have added support for Heretic's hidden levels.

Basically, when they made the orignal Heretic, they added three extra levels that, for unknown reasons, were not made part of the levels accessible from the menu. I once heard these levels were made for deathmatch play, but the truth is that only E6M3 is small enough to be a real good deathmatch map. I think they just couldn't find a good place for these three maps so decided to just tack them on at the end.

When they added the 18 levels for "Shadow of the Serpent Riders", they made these three maps E6M1-3.

These maps can be accessed via the "-warp" command line parameter, or via the "ENGAGE##" (Heretic's version of "IDCLEV##") cheat code. When you finish E6M1, you go to E6M2, and on to E6M3. E6M3 doesn't have an exit (which supports the "deathmatch map" argument).

As it turns out, it, depending on your source port, may or may not be possible to play E6M4, E6M5, and so on. The original DOS Heretic definitely supports E6M4 (Sailor Scout's old Heretic shrine makes a note of this); E6M5 and so on look to be buggy. There is no secret level defined for E6; best not to have one.

What I have done for ObHack is just add support for E6M1, E6M2, and E6M3; the wads that exist in the original Heretic. E6M3, like the Heretic E6M3, doesn't have an exit. After you kill all the monsters, I guess you just call it a day or something.

As an aisde, Snowberry in the beta version of Doomsday doesn't support Heretic wads with E6 maps, even though the original DOS Heretic has no problem with these wads.

Anyway, if anyone has more information on the history of these three extra wads, I'd be interested in hearing about it.

I have also fixed some other bugs: Not being able to make a map because a door fab wasn't found was fixed. There was also a bug where the door color statues sometimes block things, making it impossible to finish the level without using the noclip ("kitty") cheat code. My fix is not perfect; it tries to determine if the statues block, and if they may block, it puts the state closer to the wall (which looks a little ugly, but it's better that than a level that can't be finished). The real fix is to add these statues when it's still possible to mark the "blocks" with the statues as non-passable. I've also fixed a failed assert that sometimes popped up when making small deathmatch levels.

Again, bug reports are welcome; I also like hearing feature requests.

- Sam

Share this post


Link to post
JohnnyRancid said:

Less height variants would be nice.


Done. ObHack 003a now has a field entitled "steepness", which, surprise surprise, determines how much height variance the random maps will have. You can go from almost flat to having as much height variance as the current Oblige maps.

It's here:

http://www.samiam.org/slump/obhack.html

There's some other enhancements, such as being able to have "tiny" or "huge" maps. What I had to remove, alas, was Hexen and Wolfenstein 3D support, since I don't have either game and am therefore unable to test the generator for those games.

My next plan (besides fixing the lack of health in tiny maps) is to make a command-line version of ObHack.

- Sam

Share this post


Link to post

Yesterday, I uploaded an update to ObHack. This is a new release with the following new features:

* It is now possible to specify how much of a map is indoors or outdoors

* It is now possible to have "swarms" of monsters; this is twice as many monsters as hordes. Perfect for the hardcore Doomer who has been playing Doom 8 hours every day since 1998, and thinks Hell Revealed is far too easy. Note that having this many sprites in the game can crash some source ports.

* New mode: Single Player + Deathmatch. This makes maps which try to be both reasonable Single Player and Deathmatch maps. This way, you can learn the map playing it single player, then kick all of you friends' butts playing the same maps Deathmatch.

* Now parameter: Initial weapon. Mainly for balancing deathmatch, this allows each player to optionally start with either a single-barrel Shotgun (Basic weapon) or Rocket launcher (Hardcore weapon). In Heretic, the basic weapon is the Crossbow, and the hardcore weapon is the Phoenix Rod. Also useful if you don't want to play "hunt the crossbow" when starting Heretic maps.

This should be my last update for a while (unless people request for features). It can be downloaded here:

http://www.samiam.org/slump/obhack.html

- Sam

Share this post


Link to post
samiam said:

* Now parameter: Initial weapon. Mainly for balancing deathmatch, this allows each player to optionally start with either a single-barrel Shotgun (Basic weapon) or Rocket launcher (Hardcore weapon).

That's a really nice idea!

Not sure if the new GUI has room for it. Hmmm... actually it could override the "Traps" button since traps (especially the open-monster-closet type) don't make much sense in deathmatch maps, so that button would otherwise be quite useless.

Share this post


Link to post

Hey,

I was wondering why the seed is limited to -9999 through 99999, is there a reason this is not a 32 bit integer? Although I did notice that you have increased this from the original Oblige limit of -999 to 9999.

−2,147,483,648 to +2,147,483,647

Or for the insanely hardcore, what about a 128bit long, to make sure we never see the same 2 levels =)?
−170,141,183,460,469,231,731,687,303,715,884,105,728 to +170,141,183,460,469,231,731,687,303,715,884,105,727

Do you think the seed range could be increased in ObHack at all, or is there a very good reason for this limitation?

Thanks,

Share this post


Link to post

Presumably you are requesting this because you have already played levels using the almost 110,000 seeds currently available?

Share this post


Link to post

You are right Enjay its still a ridiculous amount of combinations / permutations. I was just thinking that since Oblige/OBHack are superb algorithmic generators, why set an artificial ceiling on the possibilities that they can generate. Especially Oblige that is capped at just 10999 possibilities.

Share this post


Link to post
TheInitialCommand said:

why set an artificial ceiling on the possibilities that they can generate.

The current rewrite allows five digits (00000-99999).

The reason is because 4 or 5 digits is easy to communicate to other people without making a mistake. And like Enjay said, if you made a megawad for every seed, that would be over 300,000 levels to play through, and I bet if you managed to play them all you'd go insane, well, more insane :-)

Share this post


Link to post

Hahaha,

Yeah these are all good counter arguments, but no one has that nagging feeling that the most perfect level ever designed is sitting in seed 2418242, or anywhere else outside the realm of the current possibilities? Not that we would be able to find it anyway =)

Share this post


Link to post

Hey, I appreciate people using my fork of ObHack and providing feedback on it. I apologize for not replying sooner; I've been quite busy and don't have time to scan forums as much as I would like.

Anyway, Enhas and I have been working together in private email on improving ObHack. Enhas has done most of the work; I'm just blessing my patches and making releases.

The first thing Enhas has done is clean up the FreeDoom code. I've played through a wad made with the modified code in FreeDoom, and it looks good. So, I'm making a snapshot of this code available for testing here:

http://www.samiam.org/slump/ObHack-win-20080128.zip

In compliance with the GPL, the full source code:

http://www.samiam.org/slump/ObHack-src-20080128.tar.bz2

This will become the 003e release of ObHack.

Enhas is also making some improvments that I will incorporate in to the 004 series of ObHack (some tweaks to how smaller maps look).

Also, I agree that it would be nice to give the RNG a greater range. What I'm thinking is using a different seed whenever any parameter is changed, such as the number of monsters. Right now, a map with a given seed and only a few monsters gives you pretty much the same map with a given seed and a lot of monsters. I'd like to change that.

Right now, the internal code can handle a seed with a value as high as 500,000 or so (the seed used is a 31-bit value; I multiply the seed by 3803, add the level number multiplied by 37 to that number, then add an offset so we can retry making a given level multiple times in case there's a problem like being unable to place a staircase).

I plan on changing the random number generator (RNG) to one where the RNG seed can be a string of arbitrary length for the 004 series of ObHack.

(Geek talk: The way I will do this is to change the Mersenne twister seeding core so that, instead of using a Linear congruential generator to seed the RNG state from the supplied seed value, it uses a cryptographic hash called "Radio Gatun" to set these values)

Release date: Ha! This is free software. :)

- Sam

Share this post


Link to post

would it be possible to have boomctf support? (ctf format compatible in odamex, zdaemon and skulltag)

//      5130 = "Blue flag";
//      5131 = "Red flag";
//
//      5080 = "Blue Start"      
//      5081 = "Red Start"
it could be pretty fun :P

Share this post


Link to post

CTF maps are planned. They really need to be symmetrical so that no side is at a disadvantage, but currently Oblige cannot make symmetrical maps -- that is something I'll be working on with the rewrite.

Share this post


Link to post

Just letting everyone know that I have just posted a new developer's snapshot. In this snapshot, there is a new level size: Progressive. This makes the early levels small and the later levels huge in a given episode (in Doom 2, it's an 11-map cycle; map01 is tiny; map11 is huge, and map12 is tiny again).

http://www.samiam.org/slump/obhack.html

Share this post


Link to post
Worst said:

would it be possible to have boomctf support?


Done.

As an aside, I now understand why no one use Odamex. It took me hours, and I mean hours to figure out how to get Odamex to play a simple CTF map. Odamex does not include any documentation, and the wiki's documentation is pretty sparse and hard to use as a reference.

Odamex doesn't have built-in help on the server; I had to resort to looking at the source code to figure out how to use it.

Basically, I had to open up both a client and a server; the secret command is "usectf 1", then to restart the server ("ctf" tells you whether you have CTF; instead of a nice "CTF enabled" or "CTF disabled" message, Odamex just has the next-to-useless "yes" and "no" responses). Eventually, the server will decide that you want to play ctf.

It literally took me longer to get Odamex set with CTF to make sure CTF maps worked than it took for me to add CTF support to ObHack.

Here's a clue, Odamex developers: If you want people to use your program make it easier to use; include documentation for your cryptic commands. Ideally, don't make people have to figure out cryptic commands at all.

Yes, there is a UNIX tradition for cryptic commands, but there is also a tradition of people writing documentation for said cryptic commands.

Anyway, the 20080403 snapshot of ObHack has CTF support. It's really basic; I just put each flag in a corner of a deathmatch map. On one side of the map are all of Blue's starts; on the other side are all of Red's starts. Playing these random CTF maps is like playing a card game; the maps will probably be unbalanced, making the game one of luck as much as it is a game of skill.

It can be downloaded here:

http://www.samiam.org/slump

- Sam

Share this post


Link to post

Neat.

Yeah Odamex needs a lot of work on the user friendliness front. When I tried it on a server, it said it loaded DOOM2.WAD (in the console) and then told me I needed DOOM2.WAD and wouldn't start. Turns out I had v1.666 of the IWAD and you need v1.9, but I had to dig through a lot of stuff to figure that out.

Share this post


Link to post

You know, while waiting for Oblige III to come out (Since you're not getting paid, I'm in no hurry to see it come out), people can use ObHack, since I am making some (minor) improvments to it.

One idea which I will probably not implement is a random dungeon generator that would be good especially for Heretic levels:

http://www.aarg.net/~minam/dungeon.cgi

- Sam

Share this post


Link to post

That dungeon generator is quite good, and he explains the algorithm which is even better. It does create some long hallways which I think may not work so well in the context of a 3D game. Plus it lacks a quest system (keys and switches) which would need to be imposed on the dungeon.

For Oblige III I have been working on the new room planning system (which BTW I'm nearly done figuring out how it will work), anyway I have come across so many different ways that a level could be made, it's likely that Oblige will eventually have more than one method for planning levels (especially DM maps vs SP maps), and I foresee people experimenting with new ones via Mods.

Share this post


Link to post

I have one question about this: how do I add the Cyberdemon and Spider Mastermind into the regular levels? That has been boggling my mind for quite a while.

Also, would it be possible to have support for decorate-based mods? It's just a though.

Share this post


Link to post

The easiest and best way to add the big bosses is with an editor. Powerful monsters like those should be placed with care and malice aforethought. >:-)

Share this post


Link to post

@GreyGhost: What I meant to say was: how do you get Oblige to add the big boss monsters to the regular levels?

Share this post


Link to post

I think GreyGhost was joking around. Oblige cannot add the biggest boss (Spider-Mastermind) yet, because it is too big and would nearly always get stuck against walls or other monsters. This will be fixed in the next release (Oblige the 3rd). Custom mods (e.g. for a monster pack) will also be possible in the next release, though somebody still needs to write the mod for Oblige.

Share this post


Link to post

I've been playing oblige_094 a lot and absolutely love it, great job. Reminds me of the 1980 computer game rogue. I suggest having check boxes for the weapons and monsters you want included (ex. if check cacodemons, chaingunners and super shotgun, then ONLY those would be included in the maps (plentiful enough to compensate for the absense of everything unchecked)). And it would be awesome if cyberdemons/masterminds were available too (of course you could uncheck them). Probably cyberdemons would have a much lower probability of showing up (and even possible but rather unlikely for 2 or more to show up in the same map).

EDIT: actually that checkbox suggestion is too on/off/boolean, not that you should contaminate the project with my ideas anyway. You wouldn't likely want to completely turn off monster types. Maybe better to be able to set the approximate probability of each type of monster (but still have it be slightly random) so you can generate levels that TEND to have tons of hitscanners or whatever you want. Or maybe outright enter a number value for each monster type you want like 'i want 3 cyberdemons and 11 mancubuses' (though that would remove some of the fun randomness of current maps).

Share this post


Link to post

Thanks gggmork.

A mod that implemented selectable monsters would be possible for OBLIGE III (the big rewrite).

BTW folks, I plan to release a 0.97 version soon which is 0.94 plus a few fixes, including at least the following:
- Sam's much expanded Heretic themes
- fix the show-stopper stair problem
- allow Cyberdemons in maps

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×