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

Doom Engine vs Build Engine (2018 edition)

Recommended Posts

We all know the winner for which engine was more technologically advanced was the Build Engine... in the 1990's. Since then, we have gotten access to the source code of both engines, and made awesome improvements in modern source ports.

 

So, I think this should have a rematch. And this time, we include the modern source ports of today.

 

Who's with me?

 

Feel free to move this topic, I had no idea where to put it.

Share this post


Link to post
10 hours ago, crazyflyingdonut said:

And this time, we include the modern source ports of today.

 

Which ones. In Duke3D's case, the most advanced(and the only one still actively developed) is Eduke32. In Doom's case, there are many engines which strive for different things and different feature. The most advanced(in terms of features) is definitely GZdoom.

 

If GZdoom vs Eduke32 is what u want, count me in.

Share this post


Link to post

I would wait for the 2019 edition, when Ion Maiden will be released. It will be a huge upgrade for the EDuke32/Build engine.

Share this post


Link to post
1 hour ago, ReaperAA said:

If GZdoom vs Eduke32 is what u want, count me in.

 

That's exactly what I want!

 

47 minutes ago, Nancsi said:

I would wait for the 2019 edition

 

Nah! Let's do one now before Christmas comes.

Share this post


Link to post

Well Ion maiden have a playable demo, so it's kinda made on 2018.
 


Also we have Duke Nukem 3D Forever, that make good use of scripts, vehicicles and large maps interaction. but i dont remeber all of that of my playthorugth. 

Have a great use of dynamic interaction and explosions just like Duke3D and i can make vertircal more 3D destroyed stuff, like that one of the beggining. Have stairs and enfasis on jumping around, that is cool. But then, we have stuff like Extermination Day, Infinite Void, Dead.Air or Total Chaos! that make stuff that you don't know is for Doom.

Build engine can win IF they can make more that dynamics places and more on nigth ligthings, caves with water (stuff that is different for Doom maps) and is a win for Build for me.

Share this post


Link to post

sure Eduke32 is no slouch and Ion Maiden and DNF2013 mod really show what it is capable of.

 

But GZdoom is GZdoom. That thing is a entire new engine at this point now. 

30 minutes ago, jamondemarnatural said:

we have stuff like Extermination Day, Infinite Void, Dead.Air or Total Chaos! that make stuff that you don't know is for Doom.

 

Total Chaos proves what GZdoom is capable of. The only advantage of Eduke32 might be the better performance(atleast that's my case).

Share this post


Link to post
33 minutes ago, Kore said:

It's been a long time since I kept up with eduke32 but I never saw it as a port dedicated in implementing new features. I might be wrong but I think various features shown in this video are impossible to recreate in eduke32.

https://www.youtube.com/watch?v=o3ejmj2KmW8

 

I don't know if Eduke32 supports all of those features but I do know that it supports some of the shadow warrior features like ROR, Voxels and vehicles.

Share this post


Link to post

From the point of view of someone who has never really taken his time to look at the source code of either engines, but who has played games on both and tried his hand at mapping, I've got the impression that the Doom engine is built fundamentally more robustly than the Build engine.

 

Let me give you a few examples:

 

In Doom, sector effects are entirely dependent on what flags you provide to the sector. In Build, sector effects can depend on any number of arbitrary conditions. If you want to have a damaging, non-liquid floor for instance, then you are forced to use tile 859 as a floor texture. Want to have a room with a green tint? Gotta assign tile 200 (floorslime) to its ceiling, but make sure that the room is underwater first or else it won't work. Want to have a mirror effect? Gotta use the mirror texture -- but note that you can only destroy the mirror with 3 different types of explosions, which are hardcoded. Want to make a sector's brightness pulsate? Gotta drop a special sprite (7) in the sector, and set its lo- and hi-tags accordingly. Want to have the player start with no weapons? Need to place a damaging texture under him, all except purple lava will work. It's inconsistent and completely arbitrary design.

 

In (vanilla) Doom, the enemy behavior is consistent, and each monster of a type you encounter behaves the same. Individual instances only differ slightly through flags such as difficulty, starting angle, or the ambush flag. Any additional enemy behavior would require a new actor, like for instance the Hellknight, which is simply a Baron with less health. In source ports, there can be additional flags such as dormant, or stealth, or even entire effects that change certain properties, such as health, or effect upon death. These are however clearly separated from other flags, and are generally modular and can be combined with other effects.

 

In Build this does not apply.  Enemy behavior can once again depend on arbitrary conditions, such as the palette which you assign to it. For instance, if you assign palette 21 to a Lizard Trooper, he becomes an Assault Captain, which provides him with increased health and the ability to teleport. On the other hand, there is a grand total of 8 different sprite objects for the Lizard Trooper actor, which in effect are all the same enemy in different states of behavior. 1680 LIZTROOP is the standard instance, 1681 LIZTROOPRUNNING is the same but it never stops running towards you, 1682 LIZTROOPSTAYPUT is the instance that doesn't move, 1715 LIZTROOPSHOOT ducks and never stops shooting towards you, 1725 LIZTROOPJETPACK starts in the flying position, 1741 LIZTROOPONTOILET starts with the trooper sitting, making a flushing sound and then resumes normal behavior, 1742 LIZTROOPJUSTSIT is the same as the previous but without the flushing noise, and 1744 LIZTROOPDUCKING starts the trooper in the ducking pose but he doesn't keep shooting at you. Wouldn't it have been a lot smarter to make the Trooper and the Captain different sprites, and making this myriad of different behaviors depend on tags instead?

 

Furthermore, difficulty flags in Duke 3D are not separate from the other values you can assign to a sprite (they are stored in the lo- and hi-tag as well, which are used for different purposes on other sprites), and indeed work only with certain enemies or pickups. There is absolutely no consistency here. Oh, and there's the recon patrol car, which can only move along a single preset path in the entire map (which you construct with special locator sprites), and moreover which cannot physically coexist with a moving train object, as they use the exact same locator sprites. If no path is set, the patrol vehicle disappears instantly.

 

Then you have the myriad of absolutely strange bugs in Build, the most common of which is how you can get crushed by simply walking into a corner whose angle is too sharp. At the same time though you are able to crouch under pretty much any ceiling no matter how close it is to the floor, UNLESS the ceiling is at the exact same height as the floor AND given the condition that neither the ceiling nor the floor is sloped. It's also possible to shoot certain actors while they are in their shrunken state, which will make them resume their normal behavior and stay at their current size. For others however, like the pigcop, they are invulnerable while shrunk, and all damage done to them while shrunk will be applied after growing back. And if you place a floor-aligned sprite underwater, and the player swims on top of it, swimming will be cancelled and the player suddenly regains gravity.

 

There seems to be absolutely no consistency or regard for modularity in the design of the Build engine, and it is riddled with cryptic bugs that almost certainly result from haphazard programming. In all regards honestly, even without looking at the source code, and despite all the advanced features that Build introduced, from a software engineering standpoint the Doom engine wins hands-down.

Share this post


Link to post

@Doom64hunter That's just recycling code for different things, neither rare nor inherently "worse". Why make a new tag for an entity when you can recycle sprites and palettes for specific purposes, polyobject actors in zdoom utilize actor angles, that's exactly the same stuff. Besides, making the palette change determined by palette is something funnily appropriate. There's also the fact that most effects tied to textures seem to exist to streamline map creation and enforce consistency, unlike Doom where nobody seems to agree whetever mud and blood are dangerous or not. 

 

All in all, most of the "crypticality" comes from the fact that Build hasn't changed much over the years, it didn't need to. GZdoom essentially uses the same data as original Doom, but it shovels much on top of that, which hurts its performance. 

Share this post


Link to post
8 hours ago, 94's the best style said:

The moving sectors are a huge plus for build, as is room over room. 

I think I've seen moving sectors in a couple of Doom maps... and I don't think 3D floors count as room over room?

 

@Doom64hunter Maybe that's why I've noticed that there aren't as many custom Duke 3D maps, while for Doom you have almost anything anyone could ever want.

 

5 hours ago, ReaperAA said:

DNF2013 mod really show what it is capable of.

 

I actually didn't bother playing the released version of Duke Nukem Forever, but I HAVE played DNF2013 mod for Duke Nukem 3D with EDuke32, and it's fucking awesome. It's also short, but I can forgive the people who made DNF2013 for it being short, because the maps are BIG. And FUN.

Share this post


Link to post
1 hour ago, Doom64hunter said:

It's also possible to shoot certain actors while they are in their shrunken state, which will make them resume their normal behavior and stay at their current size.

 

Literally experienced this today while I was having fun with Nuclear Winter.

 

Even without taking a close look at the source code the Build engine seems to be just bizarre in comparison, possibly because it was created by a single person as opposed to a team.

Share this post


Link to post
13 minutes ago, 94's the best style said:

GZdoom essentially uses the same data as original Doom, but it shovels much on top of that, which hurts its performance. 

That's more to do with how G/ZDoom is designed, however, not Doom. There was no foresight in ZDoom expansion; all actors have access to all actor features with just a flagset to redirect code, and just a few native actor types breaking it up while also introducing vtable lookups. Compound this with all the actor code now being moved to an underperforming VM and it just all starts slamming the into the performance wall face first. 

 

None of these are Doom's problems. 

Share this post


Link to post
6 hours ago, ReaperAA said:

Total Chaos proves what GZdoom is capable of.

 

Yes.

 

No disrespect intended to both port and mod, of course, but it also doesn't look or feel like Doom anymore. Its soul is gone. Great if you want to make a mod like Total Chaos; not so great if you want to stick to the Doom engine feel.

 

The main drawbacks of using a modern Duke3D port is that the map format is still the same. So you're still relying on weird hacks and a list of rules and a list of exceptions to the rules in order to do the things you would like to do. Plus, no updated editors exists that could take a lot of that work out of your hands. The Duke3D engine always felt 'hacky' to begin with, but that did not stop peeps from crafting some excellent games - including my favorite game: Blood.

Share this post


Link to post
4 hours ago, Mordeth said:

The Duke3D engine always felt 'hacky' to begin with, but that did not stop peeps from crafting some excellent games - including my favorite game: Blood.

Blood is a good game. I'm almost finished with it.

Edited by crazyflyingdonut

Share this post


Link to post
5 hours ago, Kore said:

It's been a long time since I kept up with eduke32 but I never saw it as a port dedicated in implementing new features. I might be wrong but I think various features shown in this video are impossible to recreate in eduke32.

https://www.youtube.com/watch?v=o3ejmj2KmW8

 

Ion Maiden will have tons of new features.

Share this post


Link to post

Didn't Carmack say that the Build engine was hold together by bubblegum or something like that?

Share this post


Link to post
On vendredi 9 novembre 2018 at 9:07 PM, 94's the best style said:

polyobject actors in zdoom utilize actor angles, that's exactly the same stuff

I don't see how.

 

The interface for polyobjects was defined by Hexen by the way, so using angles was not ZDoom's decision. Even more, it seems it was something that Raven implemented before they decided to make a new map format, or they would have used (more logically and consistently) the thing ID field that they had added. (There are IMO two hacks in Hexen, using angles instead of TID for polyobject is one; the other is not having added a line ID field to the linedef struct and having to instead rely on Line_SetIdentification. But then again, it's hard to compare the situation of Raven's Hexen (modifying an engine with which other games had already been made) with that of 3D Realms' Duke Nukem 3D (creating the launch title of their new engine).)

Share this post


Link to post

What's "more advanced" is a pretty arbitrary question. How are you defining "advanced"? 

 

There are some areas where GZDoom has infinitely more modern features than Build source ports, such as graphocally (PBR, Shader support, Parallax Mapping, hell even Lightmaps soon at the rate dpJudas is going) and in terms of flexible design (UDMF and ZScript give the mapper so much control).

 

But there are plenty of fundamental things that even GZDoom keeps 'basic' to maintain the soul of Doom, for example the monster AI and locking it to 8 directions of movement only.

 

If by "most advanced" you mean "supports the most modern features " it's GZDoom. If you mean "the least old-fashioned features" then it'll always be the Build engine.

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
×