ZDaemon Forum Index ZDaemon
Client/Server DOOM
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Advanced Demo Controls

 
Post new topic   This topic is locked: you cannot edit posts or make replies.    ZDaemon Forum Index -> Implemented Requests
View previous topic :: View next topic  
Author Message
Ladna
Posting Spree!


Joined: 26 Jul 2008

PostPosted: Sun Oct 11, 2009 12:00 am    Post subject: Advanced Demo Controls Reply with quote

Having the ability to control the viewing of demos would be spectacular, i.e.:

Pause
Fast-Forward
Rewind

Knowing a little about how demo viewing works, rewind implemented in a "start from the beginning and fast-forward (extremely quickly) to this point" would be OK. You could even skip the rendering functions which I imagine would be the bottleneck in that case.
Back to top
View user's profile Send private message
mikehail
On a Rampage!


Joined: 24 Mar 2007

PostPosted: Sun Oct 11, 2009 1:38 am    Post subject: Reply with quote

this would be very delicious Very Happy

I don't like having to commit a lot of time to watch a demo, especially with large demos and this would be great!
Back to top
View user's profile Send private message
EarthQuake
Wicked Sick!


Joined: 02 Apr 2004
Location: Athens, Ohio. Dieblieber gonna getcha!

PostPosted: Sun Oct 11, 2009 3:28 am    Post subject: Reply with quote

A demo is a recording of movements generated during that game. When you play a demo, the engine reconstructs what happens during each tic, and the consequence of this is that the monsters, random numbers, et cetera, are all reproduced by the engine so you get a replica of the recorded game.

Rewinding: completely impossible. The game doesn't keep track of what has already happened. Only what instructions the players will take next. Rewinding would require that the game state be saved for every tic of the demo, or that some elaborate backtracking routines would have to be implemented. This is an enormous task.

Fast forwarding: not possible with the current engine. The game is locked at 35 tics per second. Everything that happens is based on this. In order to implement something like this, you would essentially have to modify every section of the code that deals with movement, animation, and rendering.

Pause: probably the most doable of the bunch. Doom originally had a pause option, that would stop the main game loop until unpaused.

Basically, the demo system originally developed by id Software was not intended to have such features. You should probably be thankful for the demo support we already have. You might also do a little research before posting more requests, so Kilgore doesn't have any more aneurysms.
Back to top
View user's profile Send private message Send e-mail
Ladna
Posting Spree!


Joined: 26 Jul 2008

PostPosted: Sun Oct 11, 2009 4:39 am    Post subject: Reply with quote

EarthQuake wrote:
A demo is a recording of movements generated during that game. When you play a demo, the engine reconstructs what happens during each tic, and the consequence of this is that the monsters, random numbers, et cetera, are all reproduced by the engine so you get a replica of the recorded game.


OK.

EarthQuake wrote:
Rewinding: completely impossible. The game doesn't keep track of what has already happened.


This can't be right, because the engine keeps track of who damages a flag carrier and who damages them to award "assists". So there is more of a concept of context than just the next tic.

EarthQuake wrote:
Only what instructions the players will take next. Rewinding would require that the game state be saved for every tic of the demo, or that some elaborate backtracking routines would have to be implemented. This is an enormous task.


I don't really care about "rewinding" so to speak. I care about going to a point in the near past. The point at which you start (current position versus beginning) doesn't matter to me; that's why I said in my OP that you could implement this as super fast-forward.

EarthQuake wrote:
Fast forwarding: not possible with the current engine. The game is locked at 35 tics per second. Everything that happens is based on this. In order to implement something like this, you would essentially have to modify every section of the code that deals with movement, animation, and rendering.


How can this even be true. I haven't seen a computer in the last 5 years that can't run ZDaemon at > 35fps, and that's with the rendering functions enabled. So I know the client is sleeping somewhere. Why don't you just not sleep and skip the rendering functions? I'm OK with burning CPU. If someone's not, you can set something like cl_ffwdrate, idk.

Actually I know for a fact it's not true. Dragan (Polie, whatever) made a demo viewer that works via DLL injection, and it does what I describe but it doesn't skip the rendering functions - which I admit may or may not be doable.

EarthQuake wrote:
Pause: probably the most doable of the bunch. Doom originally had a pause option, that would stop the main game loop until unpaused.


Yeah I remember this.

EarthQuake wrote:
Basically, the demo system originally developed by id Software was not intended to have such features.


I imagine this is the same for all the stuff in ZDaemon that's not in Doom II or ZDoom 1.22 or CSDoom. That's why it's called a "feature request".

EarthQuake wrote:
You should probably be thankful for the demo support we already have.


Can we just assume I'm thankful for ZDaemon by virtue of all the crap I do for the community, or do I have to put it at the top of every post like some pathetic sycophant? And I thought this was the "feature requests" section of the forums.

EarthQuake wrote:
You might also do a little research before posting more requests,


Where and for what? And don't say "the forums" because there's something like hundreds of threads and millions of posts. There's no way I'm combing through that crap. I'll be glad to setup a wiki and a bug tracker on my own server and in my own time (or someone else's server I don't really care), but this "try searching the forums" thing has got to stop.

Frankly I'd love to read the source. I've been reading Odamex's source a lot lately and I have a hugely better understanding of Doom now - or at least Odamex's version of Doom anyway.

EarthQuake wrote:
so Kilgore doesn't have any more aneurysms.


I'd be glad to help, but any code I might contribute gets eaten up in the big, closed-source blob that is ZDaemon, so I don't really know what else to do.

And on a wholly unrelated note, if the general response to, "hey I love ZDaemon, but here's something that, imo, would make it better" is:

- You have no idea how ZDaemon works.
- Did you spend a requisite amount of time searching the forums?
- This is totally impossible.
- You should be thankful for ZDaemon as it stands.
- Just requesting these features is too much of a load on the dev team, let alone implementing them. How selfish!

then I suggest taking this section of the forums down, because it seems like feature requests aren't really wanted. Honestly, I'm not snapping my fingers and making the dev team recook my damn steak, and I don't feel like I need to go around with the attitude of:

"Thank you so much Lord Jesus for the gift of ZDaemon. I know you had better things to do, but you love us gamers so much that you toiled and toiled endlessly so I could waste my life playing this terrific game."

Come on. If a developer feels that way about ZDaemon then they should quit, and if they all feel that way, they should open the source up and retire.
Back to top
View user's profile Send private message
phenex2
Unstoppable!


Joined: 10 Jan 2008

PostPosted: Sun Oct 11, 2009 11:53 am    Post subject: Reply with quote

Ladna wrote:

[...]
I'd be glad to help, but any code I might contribute gets eaten up in the big, closed-source blob that is ZDaemon, so I don't really know what else to do.
[...]


Hey there Ladna!

You don't have to worry that anything "gets eaten up"!
I am very happy that you would like to contribute!
You can get the code here.
Not that much changed in the demo handling compared to the current release!
Every change you submit to this code would of course be public, so
other ports that are based on zdoom can benefit from it.

So put your money where your mouth is and i'll gladly add your contribution
to the current codebase when you are done!

We are quite loaded with work here at the moment and will gladly accept
any help you can offer.

As for now i would rather leave this request in the pending section for further discussion.

PS: Earthquake does not speak for the dev team here. His technical insights and comments on this
request are purely subjective.
Evaluations on the technical feasibility should be left to the devs i think Razz
After all this is the request section ... so you should be able express wild suggestions without being flamed.


Last edited by phenex2 on Sun Oct 11, 2009 3:18 pm; edited 2 times in total
Back to top
View user's profile Send private message
Cybershark
Spamming!


Joined: 05 Jan 2005
Location: off the grid, but still fighting for the users!

PostPosted: Sun Oct 11, 2009 12:59 pm    Post subject: Reply with quote

EarthQuake wrote:
You should probably be thankful for the demo support we already have. You might also do a little research before posting more requests, so Kilgore doesn't have any more aneurysms.

Not my understanding of how this section of the forums works. The request has not previously been made here and so has seemingly not been officially addressed yet.

phenex2 in the other thread wrote:
Check out point 15. at the bottom of the Changelog.
Demos will get splitted on each map start in the upcoming release.

So there won't be so much need for fastforwarding through huge demo files Smile
Back to top
View user's profile Send private message Visit poster's website
mikehail
On a Rampage!


Joined: 24 Mar 2007

PostPosted: Sun Oct 11, 2009 6:12 pm    Post subject: Reply with quote

However; this would only apply to new demos, not old ones correct? Thus the problem would still exist in a way I believe?
Back to top
View user's profile Send private message
Ladna
Posting Spree!


Joined: 26 Jul 2008

PostPosted: Sun Oct 11, 2009 9:20 pm    Post subject: Reply with quote

Hey Phenex. Thanks for clearing some stuff up for me.

phenex2 wrote:
Hey there Ladna!

You don't have to worry that anything "gets eaten up"!
I am very happy that you would like to contribute!
You can get the code here.
Not that much changed in the demo handling compared to the current release!
Every change you submit to this code would of course be public, so
other ports that are based on zdoom can benefit from it.

So put your money where your mouth is and i'll gladly add your contribution
to the current codebase when you are done!

We are quite loaded with work here at the moment and will gladly accept
any help you can offer.


I don't think I have a full understanding of how the development of ZDaemon works. Are the patches that other people have sent in included in that source? If not, where are they, and would my work be found in the same place? When I contribute code, do I retain the copyright, and can I contribute that code under a different (or maybe even the same) license to a different Doom source port? Also if I remember correctly, you were cleaning up Climhazzard's modifications to the source so it would compile properly on Visual Studio 2008 - is that close to done or should I stick with VS2005 for now?

EDIT: Oh I guess it's Microsoft Visual C++ 6.0 not VS2005.

EDIT 2: And I have another question. If someone sends a patch is there a way for me to apply that to the 1.06 source - like version control or a posting of patches somewhere?
Back to top
View user's profile Send private message
phenex2
Unstoppable!


Joined: 10 Jan 2008

PostPosted: Mon Oct 12, 2009 12:31 am    Post subject: Reply with quote

mikehail wrote:
However; this would only apply to new demos, not old ones correct?
Thus the problem would still exist in a way I believe?


Yes it would not work for old demos. The priority is to have it working with the new format first.
I don't know if backward compatibility is planned at all, because the old demo format makes it
a bit hard to find and properly setup the point of map change.

There are far more important things to be done so i would consider it an optional goal.

If someone feels like doing it, you know where to find the code Wink

Ladna wrote:

Are the patches that other people have sent in included in that source? If not,
where are they, and would my work be found in the same place?


The patches that other people submitted (including myself) were mostly features from zdoom.
Since other ports could not have any benefit from them as the zdoom code is already out there
the authors did not really strive for making them public.
You can just ask the people that are mentioned in the changelog for the patches they submitted.

The idea is that the patches are almost always independent from each other
and you can just start working from the unmodified 1.06 code.

Ladna wrote:

When I contribute code, do I retain the copyright, and can I contribute that code under a different
(or maybe even the same) license to a different Doom source port?


Zdaemon is licensed under the 'Doom Source License' just like Skulltag and Zdoom.
If you make your patch public it will be licensed under the DSL, thus you can also contribute your code to those projects.

You can even contribute it to GNU projects because the Doom License is compatilbe in that direction as far as i know.
As for other license compatibilities you would have to ask your lawyer.

Ladna wrote:
Also if I remember correctly, you were cleaning up Climhazzard's modifications to the source
so it would compile properly on Visual Studio 2008 - is that close to done
or should I stick with VS2005 for now?


Yeah i've been a bit lazy and didn't finish the code cleanup yet.
For now use VC6++.

Ladna wrote:

If someone sends a patch is there a way for me to apply that to the 1.06 source - like version control or a posting of patches somewhere?


As far as i remember Stealth was giving out SVN accounts to the 1.06
code, if you really need version control for your work. But the patches
are usually not so involved so I did not encourage people to use it.
Back to top
View user's profile Send private message
EarthQuake
Wicked Sick!


Joined: 02 Apr 2004
Location: Athens, Ohio. Dieblieber gonna getcha!

PostPosted: Mon Oct 12, 2009 12:43 am    Post subject: Reply with quote

I came off as aggressive. It wasn't intentional, and I apologize.
Back to top
View user's profile Send private message Send e-mail
Ladna
Posting Spree!


Joined: 26 Jul 2008

PostPosted: Mon Oct 12, 2009 3:43 am    Post subject: Reply with quote

I got a little touchy in my reply too, sorry.

EDIT:

OK trying not to doublepost here.

phenex2 wrote:
Zdaemon is licensed under the 'Doom Source License' just like Skulltag and Zdoom.
If you make your patch public it will be licensed under the DSL, thus you can also contribute your code to those projects.

You can even contribute it to GNU projects because the Doom License is compatilbe in that direction as far as i know.
As for other license compatibilities you would have to ask your lawyer.


So here's what I would do. I would publish my changes myself under the public domain (on one of my 1000 websites). I would then notify the ZD dev team (most likely you Wink ) that I'd made a patch against v1.06, and send the patch to you. As the code's public domain, you'd be free to use it in ZDaemon and relicense it as you saw fit. This would work with any other project as well (Skulltag, Doomsday) because they could just relicense it. It's sort of like the original Doom source being both DSL and GPL, except public domain code can be used in any fashion.

What I'm really trying to avoid is getting my work locked up in one source port. I love ZDaemon and everything, but if the code I write is applicable to other engines I would rather the entire Doom community benefit from my work - and it looks like putting it the public domain is the best way to do that.

phenex2 wrote:
Yeah i've been a bit lazy and didn't finish the code cleanup yet.
For now use VC6++.


Hey man I know all about being lazy. Don't worry about it.
Back to top
View user's profile Send private message
Kilgore
Air Cavalry


Joined: 17 Jun 2003
Location: Up the river

PostPosted: Mon Oct 12, 2009 11:18 pm    Post subject: Reply with quote

Ladna: I wonder what did I do to you to deserve such offensive remarks, especially when I contribute work here while you don't.

If you feel that the ZDaemon team is restricting you, be my guest and publish your code anywhere you like. I'll be skeptical though about the sincerity of your claims until I see anything tangible.

Anyway... the request is accepted and will be done: can't commit on a version yet.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies.    ZDaemon Forum Index -> Implemented Requests All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group