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

Zandronum and oldschoolism

Recommended Posts

Get off my lawn.

But seriously, and maybe I'm just being cynical here, I think a lot of the hate (and there really isn't that much - mostly just grumbling) is based around resentment. I use Zandronum myself when playing online, simply because it's what's used by most of the servers. I can understand how someone who plays and maps for Boom or vanilla or ZDoom, might feel that they have to run a bastardized version of Doom in order to play with their friends.

Regarding the technical specifics, I couldn't really say, but playing Zandronum definitely feels different, especially when compared to the plainer source ports I mentioned. I'd be pretty interested in exactly how they're different, as I've never been able to put my finger on anything too substantive.

Share this post


Link to post
XCOPY said:

tl;dr: What does Zandronum have that modifies the game's experience in oldschool doom gameplay?


Although there are numerous differences in the client/server code and how latency compensation, interpolation, and other bits of smoke & mirrors that ports use to try to hide the effects of latency, your post does specifically mention "oldschool" so I'll focus on that aspect alone.

IMO, a true oldschool experience would be one capable of exact fidelity with vanilla Doom. To that extent, an oldschool-flavored port should be able to play the vast majority of vanilla LMP demos perfectly to emulate the little quirks, bugs, and nuances of vanilla Doom.

The three major client/sever (c/s) ports are all based on different versions of ZDoom, which has notably diverged from vanilla Doom compatibility in favor of a perhaps a more modern game feel. Zandronum is based on the 2.x versions of ZDoom where as ZDaemon is based on ZDoom 1.23b33 and Odamex is based on ZDoom 1.22 with 1.23b33 physics. All three ports make some attempt to offer some degree of (toggleable) vanilla feel beyond what they inherited from ZDoom, with Odamex being the closest (it can play vanilla LMP demos), ZDaemon being second, and Zandronum being a distant third.

Some key differences you'll find between Zandronum and vanilla Doom are the physics and the weapon damage.

Zandronum has a different vertical spread for the SSG and a different method of calculating the damage per pellet. Some competitive players complain that this SSG feels too weak, but that is hardly conclusive. ZDaemon does not have the same spread or damage that vanilla Doom does, nor does it appear to be the same as ZDoom 1.23b33, however it is closed source and no further information can be determined. Odamex's spread and damage match that of vanilla Doom.

While I'm not that well versed on Zandronum or ZDoom 2.x's physics code, I probably qualify as an expert on the ZDoom 1.23b33 code as I added the ZDoom physics code on top of Odamex's vanilla physics code. Some of the general changes all versions of ZDoom have when compared to vanilla is wallrunning in both north and south directions, aircontrol, proper three-dimensional explosion damage/thrust, altered gravity, smoothing of the player's view when going over bumpy terrain, and non-projectile actors moving over/under each other.

Typically when you hear competitive players complaining about Zandronum physics, keep in mind that they are typically complaining about the differences between Zandronum/Zdoom 2.x physics and the ZDoom 1.23b33 physics that they prefer, rather than comparing it to vanilla. There appear to be some real differences that do change the feel of the game but I'm sure someone more versed in ZDoom 2.x would be able to offer a better comparison in that direction.

Share this post


Link to post

Zandronum doesn't have the most rigorous vanilla support. Things I've submitted to get in are mainly "NS vanilla" which is what ZD defined as the standard of online competitive play. These are things like the 1.08 ssg damage, zdoom 1.23beta33 physics (rocket jumps) and any other minor stuff that zandronum didn't have.

The thing I think that throws most people off is OpenGL + uncapped frame rate. For people trying it out at first, it feels like you ice-skate because your movement is really smooth. The render for zdoom 2.x is also vastly different from old school, making it look disconnected. Changing cl_capfps to true fixed this for me.


Zandronum is something I feel is more focused on the mod scene than being competitive. Somehow it seems to have the most active competition at the moment... which is surprising, but I feel this is because the players were given everything they asked for and everyone went to town.



In short, ZDoom has deviated so much from Doom. It in essence is more of a 'custom gaming engine mixed with the doom engine', unlike ZD/Oda which are really close to vanilla and have little mod capability relative to Zandronum.
If I had to make a chart:

G/Zdoom .... Zandronum ................................. ZD .. Oda Choc/Vanilla
|-------------|----------------------------------| --- | ---|


If anyone is expecting a lot of old school support, it would only happen if ZDoom adds it. I don't see anyone ever considering pursuing such things as vanilla compatibility for demos or such anytime soon/ever.

Sean has a really good post on this.

Share this post


Link to post
Dr. Sean said:

Zandronum has a different vertical spread for the SSG and a different method of calculating the damage per pellet. Some competitive players complain that this SSG feels too weak, but that is hardly conclusive.


The differences in spread and damage both come from the different pseudo-random number generator used. Zandronum has a setting to use the vanilla PRNG instead of ZDoom's PRNG. It's compat_oldrandom.

Share this post


Link to post
Gez said:

The differences in spread and damage both come from the different pseudo-random number generator used. Zandronum has a setting to use the vanilla PRNG instead of ZDoom's PRNG. It's compat_oldrandom.



Hmmm... I wonder if this should be implemented in ZDoom as well...

That said, even Boom uses another RNG, retaining the original table for demo compatibility only, so it's hardly ZDoom alone that's changing it.

Share this post


Link to post

XCOPY said:
What does Zandronum have that modifies the game's experience in oldschool doom gameplay?

I tried it and the issue I had was with the servers, rather than the engine directly. Almost all of them, including servers running classic megawads or the IWADs, required additional huge files. If I'm going to have to spend minutes downloading files that do nothing I'm interested in and even sometimes search the web (when getwad failed), it's no surprise I shorten my server list by removing Zandronum, given it's only going to give me a smallish additional number of servers I could really be interested in.

Perhaps making some resource WADs related to high res or whatever optional could help.

Share this post


Link to post
Gez said:

The differences in spread and damage both come from the different pseudo-random number generator used. Zandronum has a setting to use the vanilla PRNG instead of ZDoom's PRNG. It's compat_oldrandom.


It's been a while since I looked, but I think it's more complicated than this. IIRC, the way hitscan lines are calculated in ZDoom after 1.22 is totally different than Vanilla or anything else.

A couple things make me say this. First, the clipping code >= 1.23 is totally different. Second, ZDaemon also has an option to use the old-school number generator, which IDL always used, and the spreads were still different than both Vanilla and Zandronum (then Skulltag). I don't doubt the PRNG plays a role, but it's not the only difference.

Again it's been a while since I looked though, this is just what I vaguely remember.

Share this post


Link to post

zandronum feels much more smoother and faster
i played doom on my playstation as a kid and im not complaing that im using an improved engine

Share this post


Link to post
chesse20 said:

i played doom on my playstation as a kid and im not complaing that im using an improved engine


The playstation has a cut framerate much lower than 35.

Share this post


Link to post
Ladna said:

It's been a while since I looked, but I think it's more complicated than this. IIRC, the way hitscan lines are calculated in ZDoom after 1.22 is totally different than Vanilla or anything else.

ZDoom uses a blockmap-based algorithm (originating from Doom 1.2 and earlier, but replaced by a slowed BSP-based algorithm afterwards) which was preserved in Heretic and Hexen. There was a bug-through-omission in it, which Randy fixed.

Though there is a compat_hitscan setting in ZDoom to use the BSP-based method along with its own glitches. With a combination of that and compat_oldrandom, the shooting should be pretty much identical.

GhostlyDeath said:

The playstation has a cut framerate much lower than 35.

Isn't it 30 Hz? Like Doom 64? However, in addition to a slower framerate, the enemies have lengthened state durations making them even slower, so that their attacks would be easier to dodge with a controller.

Share this post


Link to post
Gez said:

ZDoom uses a blockmap-based algorithm (originating from Doom 1.2 and earlier, but replaced by a slowed BSP-based algorithm afterwards) which was preserved in Heretic and Hexen. There was a bug-through-omission in it, which Randy fixed.

so zandronum uses the heretic ssg? makes sense it feels nerfed.

Share this post


Link to post

No, it uses Heretic's (a.k.a. Doom 1.2's sight checking.
This has nothing to do with how hitscan attacks work. They are mostly the same, ZDoom uses a better, more precise, tracing algorithm - but this should not affect the SSG's spread.

Share this post


Link to post
Gez said:

ZDoom uses a blockmap-based algorithm (originating from Doom 1.2 and earlier, but replaced by a slowed BSP-based algorithm afterwards) which was preserved in Heretic and Hexen. There was a bug-through-omission in it, which Randy fixed.

Though there is a compat_hitscan setting in ZDoom to use the BSP-based method along with its own glitches. With a combination of that and compat_oldrandom, the shooting should be pretty much identical.


Graf Zahl said:

No, it uses Heretic's (a.k.a. Doom 1.2's sight checking.
This has nothing to do with how hitscan attacks work. They are mostly the same, ZDoom uses a better, more precise, tracing algorithm - but this should not affect the SSG's spread.


Hmm, I still think they're pretty different. I didn't bother to fully understand it, but (in MBF and Heretic) PTR_AimTraverse does:

slope = FixedDiv (opentop - shootz , dist);
while ZDoom 1.23 does:
pitch = -(int)R_PointToAngle2 (0, shootz, dist, opentop);
It seems to me like this difference would account for the different vertical spreads, but I could be wrong.

Share this post


Link to post
Ladna said:

Hmm, I still think they're pretty different. I didn't bother to fully understand it, but (in MBF and Heretic) PTR_AimTraverse does:

slope = FixedDiv (opentop - shootz , dist);
while ZDoom 1.23 does:
pitch = -(int)R_PointToAngle2 (0, shootz, dist, opentop);
It seems to me like this difference would account for the different vertical spreads, but I could be wrong.


When I made a patch that implemented ZDoom 1.23b33 weapons as an option, the vertical spread for the ZDoom 1.23b33 SSG was noticably reduced, with ranges from around 18% to 28% less than that of vanilla Doom's SSG vertical spread. The code you quoted above was what appeared to cause that diversion.

Share this post


Link to post

Ok, people. If you investigate this stuff and note a significant difference, why do you just complain here about ZDoom being different instead of REPORTING THE GODDAMN BUG!!!!!

It's really annoying to find this kind of discussion about a supposed difference and then someone creeping up saying he already investigated and posting the code responsible.


But regardless, this is only the aiming code, not the shooting code. But the problem is certainly related with replacing the (mathematically bad) slope value with a proper pitch. The real cause must be in A_FireShotgun2:

	for (i=0 ; i<20 ; i++)
	{
		damage = 5*(pr_fireshotgun2()%3+1);
		angle = self->angle;
		angle += pr_fireshotgun2.Random2() << 19;

		// Doom adjusts the bullet slope by shifting a random number [-255,255]
		// left 5 places. At 2048 units away, this means the vertical position
		// of the shot can deviate as much as 255 units from nominal. So using
		// some simple trigonometry, that means the vertical angle of the shot
		// can deviate by as many as ~7.097 degrees or ~84676099 BAMs.

		P_LineAttack (self,
					  angle,
					  PLAYERMISSILERANGE,
					  pitch + (pr_fireshotgun2.Random2() * 332063), damage,
					  NAME_Hitscan, NAME_BulletPuff);
	}

But keep in mind that Zandronum/Skulltag have replaced this function completely so there's more potential causes for error. Does this only happen with Zandronum or is the most recent ZDoom also affected? I can't say.

Share this post


Link to post

Maybe because they weren't confident enough yet to report anything as being a bug. I would not myself ever go onto the ZDoom forums and state something as vague as "The SSG spread feels different to me; fix it." I'd rather at LEAST have some kind of clue where the difference is coming from first. Speculation to that end can take place anywhere, I see no need for it to be entirely on the ZDoom forum.

You complain about this happening all the time, and yet your number of complaints indicates that you do visit here often enough to pretty much always find these threads. It kind of negates the reason for the complaint, from my point of view. I could see your point if they were on, say, the dead crusty old New Doom forums where nobody ever goes and complaining about shit and why ZDoom "never fixes all this stuff." Nobody here was even complaining, only speculating.

Share this post


Link to post

I don't know enough about ZDoom philosophy to file a bug. You guys break compat all the time; how is anyone supposed to know which cases are bugs and which cases are "improvements"? In general (and this is my biased perspective of ZDoom as "a game engine that happens to load Doom resources") my approach is to assume you guys know what you're doing behavior-wise, and only investigate differences myself or others have noticed between EE and ZDoom to see if I can pull them over into EE reasonably (3D radius attacks, etc.).

To be a little less OT, the reason I like "old-school" ports is that I like Doom, and they implement Doom. (G)ZDoom is a great port, and its derivatives (ZDaemon and Zandronum) all have things to recommend them, but they're a little too far from Doom for me. I could make a big list I guess, but (and maybe this will make Graf explode again) I can't be bothered to do that. Anyone who plays Doom seriously knows there are tons of differences.

Share this post


Link to post

When in doubt you can also start a general discussion on the ZDoom forums. But the rule should be: If you feel that something is different enough to notice it even casually, the likelihood that something unintended is going on, is high.

The problem is not with me, but Randy as lead developer doesn't post here which means that the discussion will bypass the most important person in the entire matter.

Ladna said:

I could make a big list I guess, but (and maybe this will make Graf explode again) I can't be bothered to do that. Anyone who plays Doom seriously knows there are tons of differences.



You are damn right. On the one hand you complain that 'ZDoom is gone too far from the original game' but on the other hand you do nothing to help fix the situation. I concur that not everything you may report would be a genuine problem (I know well that some people get all worked up over the tiniest bit of change) but I'm quite certain that there's still stuff lurking around that could be changed.

Share this post


Link to post

Whooooooooooooooooooooooooooooooooooooooa not complaining here (I actually prefer the ZDoom SSG spread because I was raised on ZDaemon... I'm trying to get over it but it's a long road to recovery). I will make you a deal though. For every hour I spend investigating and filing ZDoom bugs, you spend an hour working on whatever Quasar tells you to ;). If you accept, you should know that you are already roughly 6 hours in the hole due to this SSG spread bug.

Share this post


Link to post
Ladna said:

For every hour I spend investigating and filing ZDoom bugs, you spend an hour working on whatever Quasar tells you to ;)

O_o

Share this post


Link to post
Graf Zahl said:

Ok, people. If you investigate this stuff and note a significant difference, why do you just complain here about ZDoom being different instead of REPORTING THE GODDAMN BUG!!!!!

It's really annoying to find this kind of discussion about a supposed difference and then someone creeping up saying he already investigated and posting the code responsible.


I seem to remember people complaining about odd ZDoom behavior compared with Vanilla being dismissed as stuck in the past, not being worth addressing, etc. I don't care enough to dig through people's DW post histories, but have I been wrong in my assumption all along or did you guys have a change of heart recently?

Share this post


Link to post
AlexMax said:

I seem to remember people complaining about odd ZDoom behavior compared with Vanilla being dismissed as stuck in the past, not being worth addressing, etc. I don't care enough to dig through people's DW post histories, but have I been wrong in my assumption all along or did you guys have a change of heart recently?

here we go, alex parachutes in to enflame threads needlessly yet again. you like when people claw at each other, don't you?

quick edit: adding quotation of the post before it turns into "This post intentionally left blank."

Share this post


Link to post
AlexMax said:

I seem to remember people complaining about odd ZDoom behavior compared with Vanilla being dismissed as stuck in the past, not being worth addressing, etc. I don't care enough to dig through people's DW post histories, but have I been wrong in my assumption all along or did you guys have a change of heart recently?



No. If you dig through the past you'll notice that I take such issues seriously. However, I still make distinctions between something being wrong (like the SSG spread) and something being different (like the RNG stuff)


Personally I find many purists' complaints ridiculous - especially when it's about things that's different in other ports as well - but if something is obviously different in a trivial manner it should be changed back.

Share this post


Link to post
Graf Zahl said:

No. If you dig through the past you'll notice that I take such issues seriously. However, I still make distinctions between something being wrong (like the SSG spread) and something being different (like the RNG stuff)

I think I figure what you're getting at. Thanks for not assuming the worst of my question.

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
×