Baron of Hell
Register | User Profile | Member List | F.A.Q | Privacy Policy | New Blog | Search Forums | Forums Home
Doomworld Forums : Powered by vBulletin version 2.2.5 Doomworld Forums > Classic Doom > Source Ports > What is complevel?
 
Author
All times are GMT. The time now is 04:41. Post New Thread    Post A Reply
Hock
Banned


Posts: 185
Registered: 10-09


I see on speedrun demos and things like that where people talk about Complevels, but i have no idea what that means can someone tell me what that is?

Old Post 02-25-11 22:47 #
Hock is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
Ralphis
IDL Founder


Posts: 3722
Registered: 09-02


It stands for compatibility level and it is a feature of the prboom+ engine. Basically, there are different compatibility levels for the engine so that maps can be played under original Doom conditions (known here as Vanilla Doom), Boom, MBF, etc (all of which were future modifications of the Doom source code).

Old Post 02-25-11 23:09 #
Ralphis is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Maes
I like big butts!


Posts: 12371
Registered: 07-06


Complevels are compatibility levels. Since source ports don't behave exactly just like vanilla Doom unless specifically putting some effort into it (e.g. emulating memory overflows, limits, replicating particular bugs), complevel is a parameter which tells the source port how "compatible" with the original Doom it shoul d act, and also with what specific version of Doom. E.g. complevel=2 would be compatibility with the 1.9 executable.

More info on that here: http://doomwiki.org/wiki/PrBoom since the -complevel parameter only really applies to this particular source port and its derivatives.

Old Post 02-25-11 23:12 #
Maes is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Hock
Banned


Posts: 185
Registered: 10-09


But how do you know the difference between comlevel 2-11?

Old Post 02-25-11 23:16 #
Hock is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
Maes
I like big butts!


Posts: 12371
Registered: 07-06



Hock said:
But how do you know the difference between comlevel 2-11?


Check that prboom link I posted a few notches above. It's just an arbitrary number, which just means something because the creators of prBoom decided so. However for Doom you usually need only 0-4 for Doom stuff, and usually 2 will do the trick nicely (v1.9 "compliance"). There are other possibilities, but they are relatively obscure.

Of course, it depends on what you want to do. If you REALLY want to play back or record DOSDOOM demos...

Old Post 02-25-11 23:23 #
Maes is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
EarthQuake
9.5 on the Richter!


Posts: 2839
Registered: 05-03


So what is the out-of-the-box complevel? The last (17 according to the article)?

The default configuration file lists it as -1.

Old Post 02-25-11 23:53 #
EarthQuake is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03



Maes said:
Of course, it depends on what you want to do. If you REALLY want to play back or record DOSDOOM demos...

DOSDOOM != vanilla and only a handful of publicly-released demos out of thousands need a complevel on playback.

@Hock: is there something wrong with the Using Prboom-plus and -complevels (with recommendations) sticky in the demos forum that you had to ask this here?

@EarthQuake: yes, -complevel 17 is the default. Doesn't make much sense but there are a lot of such legacy defaults carried over from prBoom that entryway has been too lazy to fix.

Old Post 02-25-11 23:55 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Maes
I like big butts!


Posts: 12371
Registered: 07-06



Never_Again said:

DOSDOOM != vanilla and only a handful of publicly-released demos out of thousands need a complevel on playback.



I know. I didn't exactly paint it in a mainstream light, did I? Of course DOSDOOM != DOS Doom or "Doom for DOS". Ah, words....

Old Post 02-26-11 00:01 #
Maes is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
tempun
Member


Posts: 597
Registered: 08-09



EarthQuake said:
So what is the out-of-the-box complevel? The last (17 according to the article)?

The default configuration file lists it as -1.


17 is PrBoom 2.5.0 compatibility (not that it is stable). -1 means 'the latest one', which depend on PrBoom version. If there ever will be PrBoom 2.6, -1 would be the same as 18.

Old Post 02-26-11 08:53 #
tempun is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
vdgg
MM2 maniac


Posts: 1571
Registered: 08-07


I wanted to ask about this quite a long time ago (if it's too advanced, may be split off the thread, moved etc.)

- What are the differences between -complevel 2 and 3 (full list of features)
- What are the differences between -complevel 2 and 4 (full list again, I heard something about lost souls vs. floor behaviour, but didn't find it written explicitly anywhere)
- Finally, differences between -complevel 2 and 9, if possible (I guess the list may be quite long)

Old Post 02-26-11 16:00 #
vdgg is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03



vdgg said:
- What are the differences between -complevel 2 and 3 (full list of features)

With -complevel 2, as compared to -complevel 3:
  • Lost Souls don't bounce off surfaces
  • Only three original episodes of DOOM1 are supported (no Thy Flesh Consumed)
  • On the last level of each of the first three episodes of DOOM1 the death of the last boss of any class can trigger sectors tagged with the 666 special (e.g. Cyberdemon on E1M8 in UAC_DEAD.WAD, Spider Mastermind on E1M8 of NUKEMINE.WAD)


vdgg said:
- What are the differences between -complevel 2 and 4

With -complevel 4, as compared to -complevel 2:
  • Lost Souls bounce off surfaces
  • The player's Z-coordinate is not set when teleporting, which can lead the player to spawn not directly on top of the destination teleporter pad but in the air above it


vdgg said:
- Finally, differences between -complevel 2 and 9, if possible (I guess the list may be quite long)

I imagine comparing the two would be like comparing vanilla to ZDoom. ;) A full list of changes would be interesting and useful, though. Here are a few to start with:
  • Monsters don't get stuck on doortracks
  • Live monsters can be knocked off from tall sectors
  • Pain Elementals spawn unlimited number of Lost Souls
  • Blazing doors' closing sound is not doubled
  • A Thing stuck in a ceiling doesn't prevent the sector's floor from lowering
  • Stairs are built differently (vanilla fails to preserve the index of the previous sector found and restarts its linear search from the last sector of the previous staircase instead)
  • Max Health in DEH applies only to health potions
  • Support for generalized linedef and sector types, friction and pushers.

entryway could probably expand this list greatly.

Old Post 02-26-11 22:39 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Phml
Forum Staple


Posts: 3261
Registered: 06-09


I don't know much about the technicalities so the following might be somewhat wrong, but between complevel 2 and 9 I also noticed :

- monsters not going back to sleep once they infought something outside of player view
- (all?) overflows fixed
- a new bug forcing a switch back to your previous weapon the first time you select a weapon out of ammo
- cyberdemons and spider masterminds not roaring everytime they get a new target

Old Post 02-27-11 00:00 #
Phml is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
Quasar
Moderator


Posts: 5993
Registered: 08-00


I'm still trying to figure out why they can't have nice names and instead we have to use cryptic numbers.

Example:
code:
const char *complevelnames[NUMCOMPLEVELS] = { ... "boom202", // complevel 9 ... }; int D_CompLevelForName(const char *name) { int i; for(i = 0; i < NUMCOMPLEVELS; i++) { if(!strcasecmp(complevelnames[i], name)) return i; } return -1; }

Or if there are so many levels you'd actually concerned about the speed of the search (very unlikely), use a hash table lookup :P

Old Post 02-27-11 02:48 #
Quasar is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03


The complevels do have internal aliases (see usage.txt) but they are too unwieldy to be used on the command line. The numbers are short and sweet and there are only four of them to remember - 2, 3, 4 and 9. Sure, cmd-line aliases like "doom2", "udoom", "fdoom" and your "boom202" could be devised but would they be easier to remember than numbers?

Old Post 02-27-11 03:16 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Xaser
Forum Staple


Posts: 2590
Registered: 07-03



Never_Again said:
would they be easier to remember than numbers?

Yes. Names are much easier to associate with meanings than numbers are.

Old Post 02-27-11 03:56 #
Xaser is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Catoptromancy
Forum Regular


Posts: 902
Registered: 08-06


Both would be best but I like numbers. -vanilla is cool (complevel 2), but what about complevel 1 or 0? -oldvanilla, -reallyoldvanilla.

For someone not versed in command lines, -complevel 9 is as cryptic as -avg and would need to look them up anyway. The usuage.txt that prboom has is a good quick reference I use often.

Old Post 02-27-11 04:43 #
Catoptromancy is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
chungy
Senior Member


Posts: 1833
Registered: 06-05


It wouldn't be hard to support both numbers and names with -complevel (if you can't figure it out, you're not even a novice programmer :P). Most of it seems rather obvious of how to handle: doom12, doom16, doom19 (or doom2), udoom, fdoom, dosdoom, tasdoom, boomcompat, boom201, boom202, lxdoom, mbf, prboom203, prboom210, prboom211, prboom230, prboom240, prboom250

The prboom* ones are the only possibly difficult/ambiguous ones going from what's in README.compat. Still, the README.compat file shouldn't be taken away just because names are added :P

Old Post 02-27-11 04:58 #
chungy is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit/Delete || Quote
RjY
anARCHy


Posts: 943
Registered: 05-02


Quasar: well I think the reason -complevel has only ever had cryptic numbers was that it was only ever intended as a debugging / testing thing, not really meant for end users. I'm sure I read that somewhere but I can't find it now (isn't that always the way? Nevertheless it can be inferred from "the numbers are subject to change between versions" in README.compat...)

chungy: I added aliases for the common complevels (i.e. the ones that I use) in my own engine years ago, but the patch never went upstream for several reasons, one of which was that I couldn't think of good names for all the others :-) Your list is good but I think several are too long, anything over 6-8 chars is going to get annoying to type.

Some thoughts: I think to do this properly the config file would also have to have aliases stored in it, to avoid exposing the internal representation and thus gaining the ability to tweak it and add in extra complevels that were originally missed (e.g. boom_compatibility_compatibility needs splitting into two, PrBoom+'s -doom95 switch, etc.) but naturally keeping the existing numbers as aliases themselves so everything everyone is used to still works :-) (Anyone else remember when e.g. boom went from 5 to 9 and mbf went from 8 to 11?)

Old Post 02-27-11 10:28 #
RjY is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Solarn
Member


Posts: 564
Registered: 09-08



RjY said:
Your list is good but I think several are too long, anything over 6-8 chars is going to get annoying to type.

More annoying than -complevel?

Old Post 02-27-11 10:53 #
Solarn is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03


Ha! Chungy's proposed list matches mine exactly, except that "boomvanilla" may be more intuitive than "boomcompat" (which could be mistaken for what is -complevel 9). At any rate, only complevels 0-4 and 9 are of practical value, and their proposed aliases should be easy to remember. The rest should not be used anyway except for debugging.
Well, there's also -1/17 to be considered, I propose "-latest" and "-current". It would be nice if the other two compat-minded ports (Choco and Eternity) would adopt the same convention.

Old Post 02-27-11 14:33 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Gez
Why don't I have a custom title by now?!


Posts: 11040
Registered: 07-07


While "boom202" is okay if you want to be explicit, it should have the simpler alias of "boom" as well. (Because, does anyone ever use a different version of Boom than that one?)

And "doom16" could be "doom1666" given that maybe one day there might hypothetically be actual emulation of doom.exe v1.6. (Main difference with 1.666 would be lost souls counting as monsters I guess.)

Last edited by Gez on 02-27-11 at 15:38

Old Post 02-27-11 15:33 #
Gez is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
RjY
anARCHy


Posts: 943
Registered: 05-02



Solarn said:
More annoying than -complevel?
"-complevel boomcompat" is a bit of a mouthful, don't you think? That's what I meant, anyway. Sorry for the misunderstanding, if there was one.

Old Post 02-27-11 23:21 #
RjY is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Grazza
=/-


Posts: 12398
Registered: 07-02


I'd welcome it if Andrey introduced user-friendly alternative ways to set complevels. That is, keep the existing system (since many of us are used to it, and may well have batch files, etc., set up for it), but also allow people to force complevels using other command-line options.

Some suggestions:

Allow something like -cl as an abbrevation for -complevel

Allow command-line options such as -boom202 without requiring -complevel or -cl at all.

Allow other "internal" names for the complevels to be used in that way too; e.g., -prboom_5 = -complevel 16

Allow friendly forms (no more than 3 or 4 characters) for the most common complevels; e.g., -boom = -boom202 = -cl 9 = -complevel 9


While we're doing complevel wishlists, I'd also like the default complevel and [temp] complevel to be settable via the launcher.

And how about a "smart" setting for the default complevel, which works as follows:

Scan the wad(s) upon loading for any obvious Boom features. If detected, set the complevel to 9 to play the wad. Otherwise, set it to 2, 3 or 4 depending on the iwad. This would mean that if you are playing only Boom and vanilla/limit-removing wads, then you will hardly ever need to worry about the complevel at all - even when recording.

Old Post 02-28-11 01:47 #
Grazza is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
chungy
Senior Member


Posts: 1833
Registered: 06-05


I agree that boomcompat is ugly, a mouthful, and not really ideal, but I couldn't think of any other name on the spot then. boomvanilla would also have a possible issue with being confused with boom 2.02, I'm not sure. Personally I don't care much for either of these names :P

Also, given how DOSBox is around these days and most people have computers well enough to run Doom in it, I'm not so sure that emulating all the historical Doom versions in PrBoom is worth the effort. I'm not a PrBoom developer but I think it's easy enough to load them in DOSBox anyway and ignore it. Still, "doom1666" is not a bad alternative if the developers do strive for plain 1.6 emulation.

Old Post 02-28-11 02:27 #
chungy is offline Profile || Blog || PM || Email || Search || Add Buddy IP || Edit/Delete || Quote
Gez
Why don't I have a custom title by now?!


Posts: 11040
Registered: 07-07



chungy said:
I agree that boomcompat is ugly, a mouthful, and not really ideal, but I couldn't think of any other name on the spot then. boomvanilla would also have a possible issue with being confused with boom 2.02, I'm not sure. Personally I don't care much for either of these names :P


-bve, for "Boom vanilla emulation".

Old Post 02-28-11 04:40 #
Gez is offline Profile || Blog || PM || Search || Add Buddy IP || Edit/Delete || Quote
Quasar
Moderator


Posts: 5993
Registered: 08-00



chungy said:
Also, given how DOSBox is around these days and most people have computers well enough to run Doom in it, I'm not so sure that emulating all the historical Doom versions in PrBoom is worth the effort. I'm not a PrBoom developer but I think it's easy enough to load them in DOSBox anyway and ignore it. Still, "doom1666" is not a bad alternative if the developers do strive for plain 1.6 emulation.

After working on Strife I can tell you that emulation of all versions between 1.666 and 1.9 should be relatively trivial, because we found very few differences that could be attributed to anything that changed in id's code between the two. In fact the only one we have confirmed for certain is that in v1.666, tracer targets are not cleared when save games are loaded, causing undefined pseudo-random behavior from homing missiles.

Old Post 02-28-11 05:37 #
Quasar is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03



chungy said:
Also, given how DOSBox is around these days and most people have computers well enough to run Doom in it, I'm not so sure that emulating all the historical Doom versions in PrBoom is worth the effort.

In PrBoom - maybe, that port has been dead for years. In prBoom-plus, on the other hand, it's worth every man-hour entryway put into it for the demo support alone. Not to mention high res, uncapped fps, OpenGL, real-time monster health tracking, advanced TAS tools etc.

Old Post 02-28-11 14:03 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Grazza
=/-


Posts: 12398
Registered: 07-02


Indeed, supporting some of these obscure modes involved sorting through a real compatibility maze just for the sake of avoiding desyncs in a handful of demos. Providing a slightly more user-friendly way to access them, or squashing a few visual discrepancies, seems a small undertaking by comparison.

I'm not aware of any engine-related desync issues between 1.666 and 1.9 (complevels 1 and 2). The caveats about only partial emulation in the case of complevels 0 and 1 that I put in usage.txt could be removed, I think.

I'm not convinced we need user-friendly short forms for things like complevel 7 (which is in fact three different behaviours in one). Has anyone ever used that for playing or recording? Given that it is correctly autodetected for playback (together with the version info, which the program needs because the behaviour changed between versions 2.00, 2.01 and 2.02 of Boom), I don't see when it would ever be used.

The purpose of this is to make things simpler for users, and a list of 18 short forms (of which only 2 or 3 will ever get used) strikes me as unnecessarily complicated.

Old Post 02-28-11 18:08 #
Grazza is offline Profile || Blog || PM || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
Never_Again
knows his birth month


Posts: 980
Registered: 04-03


Which reiterates the earlier point everyone ignored so far: only four complevels are in common use

2 doom2/doom19
3 ultdoom/udoom
4 finaldoom/fdoom
9 boom

and these four is all you will ever need in 95% of cases (an example symbolic value). There are a handful of old WADs that need -complevel 2 (doom12) to work properly, a handful of demos that need a -complevel forced on playback and a few handfuls of WADs with mapping errors that are only playable with some sort of -complevel -1 setup.
That brings the total to six:

0 doom12
-1 current/latest

Everything else accounts for less than 1%, so discussing what the best alias would be for 7 (Boom's vanilla emulation) is akin to arguing about the number of angels that can fit on a pinpoint. In fact, the best alias for it might very well be something like "boomsfakevanillacompatibilitynottherealdealdontuseit" lest someone get confused and starts using it. Ditto for -complevel 1 (v1.666) - it's nice to have it available for the sake of completeness but the fewer people use it the better, all it does is make demos incompatible with v1.9-friendly ports.

Old Post 02-28-11 21:56 #
Never_Again is offline Profile || Blog || PM || Email || Homepage || Search || Add Buddy IP || Edit/Delete || Quote
All times are GMT. The time now is 04:41. Post New Thread    Post A Reply
 
Doomworld Forums : Powered by vBulletin version 2.2.5 Doomworld Forums > Classic Doom > Source Ports > What is complevel?

Show Printable Version | Email this Page | Subscribe to this Thread

 

Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is OFF
vB code is ON
Smilies are OFF
[IMG] code is ON
 

< Contact Us - Doomworld >

Powered by: vBulletin Version 2.2.5
Copyright ©2000, 2001, Jelsoft Enterprises Limited.