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

Why won't some ports play lmp files?

Recommended Posts

I use gzdoom and zdoom for all my Doom needs but what often frustrates me is their inability to play demo files. Apparently I need to use prboom or glboom to handle these. I'm reluctant to use another port but I guess if I must then I must. But is there some technical reason that the ability to play demos can't be added to gzdoom or zdoom?

Share this post


Link to post

They can play demos, but not vanilla demos. I'm not sure what the exact reasons are, but I think it has something to do with the ability to look up or down.

Share this post


Link to post

It's because a demo .lmp file is a recording of the player's actions. For a port to play it back correctly, it must exactly emulate the behaviour of the exe that was used to record it. Any slight difference will cause a difference in the state of things in-game, and this quickly has knock-on effects that cause the playback to go totally haywire, and typically the player is seen to be running into walls, dying, etc.

Given that even very slight changes in the code will lead to desyncs, and that port programmers tend to make large changes in the code when they implement new features, only those ports that have made a positive effort to maintain compatibility can reliably play back demos of the standard types (such as vanilla, Boom, MBF).

Prboom-plus is the port that has had the most effort put into maintaining and implementing compatibility with many different demo formats, and to making the playback and recording of demos as hassle-free as possible.

Most ports can play back demos recorded by the same version of the same port, of course.

Implementing vanilla or Boom demo compatibility in Zdoom would mean tracking down every single little change that has ever been made since the original source release, and making it conditional on the type of demo that is to be played back. Whole tracts of code would need to be added back in, with who knows what conflicts resulting. It would be a massive undertaking, and vastly bloat the Zdoom code. The whole process would also be enormously error-prone, as there are some real compatibility mazes to be dealt with.

Share this post


Link to post
Grazza said:

Prboom-plus is the port that has had the most effort put into maintaining and implementing compatibility with many different demo formats, and to making the playback and recording of demos as hassle-free as possible.

a bit OT, but lately I've been watching old records from plutonia, and some desynchs with my prboom+ 2.5.1.4
so I've tried to open them in prboomplus instead of glboomplus, and SOME of the desynch-ed demos then worked correctly. (some still didnt)
any special reason for such a behaviour or it's just strange?

Share this post


Link to post
blob1024 said:

so I've tried to open them in prboomplus instead of glboomplus, and SOME of the desynch-ed demos then worked correctly. (some still didnt)
any special reason for such a behaviour or it's just strange?

You have different overflow emulation settings? BTW, there's no "glboomplus" port. just fully functional prboom-plus

Share this post


Link to post
tempun said:

You have different overflow emulation settings?

well I checked a bit and seems not
I also never put hands on such setting, and kept them as default to avoid comp troubles of any sort to be honest

Share this post


Link to post

Some Plutonia demos were recorded using PLUTONIA as pwad and DOOM2 as iwad. Make sure you have the right iwad selected before watching. The same goes for Evilution.

Share this post


Link to post
blob1024 said:

a bit OT, but lately I've been watching old records from plutonia, and some desynchs with my prboom+ 2.5.1.4

what demo?

Share this post


Link to post

plutonia map27
interested in knowing the reason of this issue I checked if it's the new version of the port having this problem (or, to better say, the settings i've in the 2.5.1.4) or not
and the pl27-uv demo runs correctly in my 2.5.1.1 folder, but desynchs in 2.5.1.4
as I said im 99.999% sure that i haven't touched any of the setting.. most of them are totally unknown to me anyway. from what I remember I changed the HUD display, to have the different looking kill ratio display. nothing else.

edit: pl27 is one of the maps who desynch-ed, but I could view other demos which worked properly from the pl demopack, so I avoided the trouble

Share this post


Link to post
Memfis said:

Some Plutonia demos were recorded using PLUTONIA as pwad and DOOM2 as iwad. Make sure you have the right iwad selected before watching. The same goes for Evilution.


okay that was it! now I used doom2 as iwad and plutonia as pwad instead of iwad
at least for map27

but can you briefly explain why similar comp trouble happens anyway?
I thought the correct way is to use plutonia as Iwad, instead of doom2 and plu as pwad
why it does make any difference anyway ?_?

Share this post


Link to post

This is almost certainly due to -complevel 2 vs -complevel 4 issues. If you get different results using different versions/installations of prboom-plus, then it's probably because one of them is using -auto and the other isn't, or the demo is too new to be included in the patterns I made and doesn't include the footer info.

If a Final Doom demo desyncs for you, try forcing -complevel 2. If it desyncs with that, try forcing -complevel 4. It's overwhelmingly likely that one of them will work.

Note that the program can't tell from the demo file itself whether it was recorded using Final Doom or Doom2. This isn't a bug in the prgram, but an unavoidable consequence of the data format being the same but the behaviour being different. If it is (one way or another) fed the wrong info, then there is about a 30% chance the demo won't play back correctly (lower % for shorter demos, higher % for longer demos).

My autoloading patterns were designed to solve this problem by containing a full listing of Final Doom demos that need -complevel 2 to be forced.

Edit:

blob1024 said:

I thought the correct way is to use plutonia as Iwad, instead of doom2 and plu as pwad

Yes, but some people didn't do it this way, and compet-n accepted demos recorded either way. And if you record using prboom-plus, then the choice of iwad/pwad doesn't matter - what determines the behaviour is which -complevel you set.

blob1024 said:

why it does make any difference anyway ?_?

Because Final Doom features Ultimate Doom's different lost soul behaviour and has a teleporter bug all of its own.

Share this post


Link to post

thanks a lot for the explanations !
btw

Grazza said:

If a Final Doom demo desyncs for you, try forcing -complevel 2.

now, that came to my mind, but I wondered "how" to do so. I actually had the similar problem in some casual playing of doomcore (dcv.wad) map30, since without complevel2 some monsters do not teleport in. When I was using demorecord, I was using the -complevel setting and all worked fine, while launching the game normal way resulted in the opposite.
do i have to change the "default compatibility level" setting in the option manually each time I want a different behaviour? or how should I force a diff cl with the normal launcher in glboomplus?

Share this post


Link to post

No, default_compatibility_level is not relevant to playback*. To force a complevel for playback, you need to put it in the command line.

Alternatively, load the Doom2.wad as the iwad and Plutonia/TNT as a pwad - on detecting a vanilla demo, it will then use -complevel 2. This is the way the autoloading patterns do it, in fact.

-------------------------------
<small>* For playback, the program:
1) Uses info from the demo footer, if present.
2) If there is no demo footer, it examines the demo's binary format (including header info). That either determines a complevel uniquely, or else narrows it down to a few possibilities.
3) Looks to see if a -complevel has been forced from the command line. If it doesn't match the binary format of the demo, it is ignored. If it does match, then it is used.
4) If there is no footer and no -complevel forced, and the binary format didn't uniquely identify a unique complevel, then it looks at which iwad has been used. For doom.wad, it uses -complevel 3. For doom2.wad it uses -complevel 2, For plutonia.wad or tnt.wad, it uses -complevel 4.</small>

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
×