
DMO Demo Seek/POV & Freeview Spectator Mode, features, etc.
#1 Posted 22 December 2015 - 01:30 AM
Is it possible to hack it so that we can change the POV of the recorded player?
Been trying to understand the source code; connecthead, connectpoint, myconnectindex, etc.
Does anyone know in detail how these variables work?
OTHER WISHLIST, ENHANCEMENT REQUESTS.
Playback demos in variable speeds (bullet time 0.25x speed, etc). Fastforward, rewind, seek the playback. Freeview spectator mode., etc.
This post has been edited by andwan0: 22 December 2015 - 03:39 AM
#2 Posted 22 December 2015 - 01:31 AM
This post has been edited by Micky C: 22 December 2015 - 01:32 AM
#3 Posted 22 December 2015 - 01:34 AM
This post has been edited by FistMarine: 09 December 2016 - 10:36 AM
#4 Posted 22 December 2015 - 01:41 AM
#5 Posted 22 December 2015 - 02:04 AM
andwan0, on 22 December 2015 - 01:41 AM, said:
Are you trying to ask how to record demos?
#6 Posted 22 December 2015 - 02:31 AM
Trooper Dan, on 22 December 2015 - 02:04 AM, said:
No. I know how to record demos. I already have recorded multiplayer demos. Now I like to see if I can hack the DMO file so that the playback POV is off a different player.
#7 Posted 22 December 2015 - 02:32 AM
Micky C, on 22 December 2015 - 01:31 AM, said:
Lucky it wasn't POF!

#8 Posted 22 December 2015 - 02:59 AM
andwan0, on 22 December 2015 - 02:31 AM, said:
I've never used demo files. I'm surprised that there isn't already a way of switching between the players by pressing space or something.
Anyway, what you want should be possible with scripting, not by hacking the DMO file. It looks like you can detect that a demo is playing with
ifvarand player[THISACTOR].gm 2
One you detect the game mode -- I'm not sure where the best place to do that is, perhaps the APLAYER actor or perhaps one of the events -- you can loop through the sprites and find the various player sprites. The camera coordinates, angle etc. can then be based on the selected player sprite. The player switching could be based on a timer or any number of things. I don't know what kind of input the game accepts in demo mode, but if it detects pressing the spacebar I would use that to switch views.
EDIT: I also don't know whether a playback of a multiplayer game is actually considered to be a multiplayer game as far as the game is concered. If it is, then you could use predefined vars such as numplayers and screenpeek to easily select player sprites.
This post has been edited by Trooper Dan: 22 December 2015 - 03:04 AM
#9 Posted 22 December 2015 - 03:12 AM
#10 Posted 22 December 2015 - 03:36 AM
This post has been edited by FistMarine: 09 December 2016 - 10:36 AM
#11 Posted 22 December 2015 - 03:37 AM
Micky C, on 22 December 2015 - 03:12 AM, said:
Yes, that would be cool. Like freeview in Counter-Strike spectator mode.
Also would be cool would be fastforward, seek, rewind, and setting playback speed, so we can do "bullet-time" 0.25x speed, etc. for fun.
This would lead to some awesome machinima! and eye-candy trailers, etc.
#12 Posted 22 December 2015 - 03:46 AM
Trailers was also one of the main reasons for this I was thinking of.
This post has been edited by Micky C: 22 December 2015 - 03:46 AM
#13 Posted 22 December 2015 - 07:29 AM
Micky C, on 22 December 2015 - 03:46 AM, said:
Trailers was also one of the main reasons for this I was thinking of.
Not necessary a game save file. A DMO file has information to start a game, and has ALL the player's inputs (all the key presses, etc).
So when we playback DMO files, it's just basically starting the same level/skill, but duke will be scripted-controlled. That is why the files are SO small. Problems arise when the game logic is changed, or the map is altered.
Quake 3: The Badge 3.0
Eye-candy made in After Effects I believe.
1. Adding spectator mode into Duke3D should be easy. It's just a free-floating camera (since duke already has cameras). Would be good feature for team games where death results in spectator mode (like in Counter-Strike)).
2. Adding a playback feature with fast forward should be possible by speeding up the tics/timer. Rewinding maybe harder because you need to store the entire history of the game. I think new logic/code needs to be able to compile/render the entire demo in some history/tree... or loads the complete DMO file into memory, whilst adding timer markers.
Many games have a playback, rewind features.. like Carmageddon.
#14 Posted 22 December 2015 - 10:17 AM
andwan0, on 22 December 2015 - 07:29 AM, said:
If you're using EDuke32, Micky C is correct. We rewrote demos to be based on savegames and deltas instead of merely a string of input that depends on the game to be set up perfectly.
You'll be happy to know that I'm planning to take a look at everything demos soon when I prepare the HTTKC trailer.