Feature #278

Servers-side and per-client demo recording

Added by boutetnico over 6 years ago. Updated about 2 years ago.

Status:In Progress% Done:

80%

Priority:NormalSpent time:-
Assignee:-
Category:Server
Target version:2.78
OS: Arch:

Description

Implement a per-user server-side demo recording feature.
Provide commands (start/stop) to qagame to allow demo recording control.

Links:

Warsow-race implementation: https://github.com/Racenet/racesow/blob/master/source/server/sv_demos.c
Xonotic implementation: https://github.com/xonotic/darkplaces/blob/div0-stable/sv_demo.c
Q3-arena demo file specification: http://skuller-vidnoe.narod.ru/q3dspecs.htm


Related issues

Related to ET: Legacy Development - Feature #229: Add support of ETTV (ETpro*) New 05.03.2013
Related to ET: Legacy Development - Task #913: Add menu(s) for controlling sv demos playback New 30.12.2015

Associated revisions

Revision f4e462d8
Added by Jacker over 5 years ago

initial commit of server side demo recording based on openarena version

Revision faa3cc15
Added by IR4T4 over 5 years ago

server: memory leaks fixed in sv_demo.c

Revision c75d03b8
Added by IR4T4 over 5 years ago

qcommon: catch invalid playerState field count in MSG_ReadX functions

Revision 7e1d474f
Added by ZTM over 5 years ago

qcommon: exact error messages

Revision 93669de2
Added by IR4T4 almost 5 years ago

server: our world doesn’t know the tell cmd

Revision d36ae5c7
Added by IR4T4 over 4 years ago

server: fix illegal memory access for bad demo messages

Revision d340cad2
Added by Jacker over 4 years ago

server: move the demo cl command capturing to its own function

Revision 3c3e6b20
Added by Jacker over 4 years ago

server: cleaned up the server side demo impl

Revision 8ed27620
Added by Jacker over 4 years ago

build fix

Revision c6177b1b
Added by IR4T4 over 4 years ago

renderer2: fix char array comparison (not empty)

Revision 972a2b23
Added by IR4T4 almost 4 years ago

server: NULL check for userinfo removed - MSG_ReadString is always returning a 0 terminated String

Revision c2555d50
Added by Jacker almost 4 years ago

svdemo: writing userinfor in the wrong place

Revision 925cd95b
Added by lrq3000 over 2 years ago

server: Fix mover state in demo in SV_DemoReadAllEntityState

Revision fa59f3ee
Added by IR4T4 over 2 years ago

docs: README-serverside-demos.md

Revision dac84e48
Added by IR4T4 over 2 years ago

doc: shrinked serverside demos readme for ETL

Revision 68e48931
Added by Spyhawk over 2 years ago

server: better autorecord hooks, refs #278

Revision 1ee6ae96
Added by Spyhawk over 2 years ago

server: fixed clang warnings, refs #278

Revision 76bea83c
Added by Spyhawk over 2 years ago

server: removed duplicate function declaration, refs #278

Revision 67a376a1
Added by IR4T4 over 2 years ago

server: no need to allocate demoname var dynamically, remove demo
commands on SV_Shutdown refs #278

Revision 22593130
Added by IR4T4 over 2 years ago

server: removed duplicate function declaration

Revision cc5469f6
Added by IR4T4 over 2 years ago

server: fix auto recording refs #278

Revision be977012
Added by IR4T4 over 2 years ago

server: fix info prints, clean up refs #278

Revision 19a2c8e9
Added by IR4T4 over 2 years ago

server: ditch dynamic memory allocation in demo code refs #278

Revision 0de96290
Added by IR4T4 over 2 years ago

server: use Com_sprintf instead sprintf refs #278

Revision 3f6121fe
Added by IR4T4 over 2 years ago

server: fix open file handles on errors in demo code & goto
'demo_start_playback_clean’ removed in SV_DemoStartPlayback refs #278

History

#1 Updated by Jacker over 6 years ago

I will implement the recording, this is also related to the ETTV 'like’ feature.

#2 Updated by Jacker over 6 years ago

  • Assignee set to Jacker

#3 Updated by IR4T4 almost 6 years ago

  • Target version changed from 2.71rc2 to 2.78

#4 Updated by Jacker almost 4 years ago

  • Status changed from New to Fixed
  • % Done changed from 0 to 100

#5 Updated by IR4T4 almost 4 years ago

  • Target version changed from 2.78 to 2.74

#6 Updated by Dragonji over 3 years ago

  • Related to Task #913: Add menu(s) for controlling sv demos playback added

#7 Updated by Spyhawk over 2 years ago

For reference: https://github.com/ioquake/ioq3/pull/265

Not sure how the mentioned server-side demo and multiview protocol + server-side multiview demo recording compare to our current implementation.

#8 Updated by Spyhawk over 2 years ago

  • Status changed from Fixed to In Progress
  • Assignee deleted (Jacker)
  • Target version changed from 2.74 to 2.76
  • % Done changed from 100 to 90

Some recent patches need to be merged.
See https://dev.etlegacy.com/boards/3/topics/3018?r=3033.

#10 Updated by Spyhawk over 2 years ago

IR4T4 wrote:

I’m not sure about to send messages to clients when demo actions are done see:
https://github.com/ioquake/ioq3/pull/265/commits/0ee335a9ac043b5bd37e47139d01516348c4103b
Let admins decide - thinking of cheater recording?

Yes, it makes little sense to announce it to clients - see #1021, where auto-record of demo can be enabled if a player has a suspect behavior.

#11 Updated by IR4T4 over 2 years ago

  • % Done changed from 90 to 80


sv_autoDemo has issues ( no demo end/file on simple map change - "/map oasis - /map radar")
- rename all related cvars to start like sv_demoX ?
- add related cvars to UI

#12 Updated by IR4T4 over 2 years ago


- rework sv_demoState cvar - there is no need for a cvar. Internal var + info cmd make more sense. CVAR_ROM flagged cvars should only be used for sharing data between game binaries and this isn’t the case.
This info cmd might display other relevant demo recoding data (recording time etc.)

#13 Updated by IR4T4 about 2 years ago

  • Target version changed from 2.76 to 2.78

Also available in: Atom PDF