User panel stuff on forum
  15 posts on 1 page  1
Client Talk
2007-10-07, 02:19
Member
115 posts

Registered:
Mar 2006
i don't if this should be in client talk so if some admin seems this unfit move it :>
i coded a cmdline mvd parser with a rudimentary mysql interface etc for it to be used with demo sites, but since all of the people (except kovaak) who
started working on something with me bailed out ill just release it
http://jogi.netdome.biz/mvd_parser.tar.gz
btw if it crashes or burns down your house
wasn't me

for the not so witty people (yes molgrum you) here is a output log
http://jogi.netdome.biz/parsetext.txt
one of the good guys! so please don't ban - jogi.netdome.biz
2007-10-07, 02:45
Member
715 posts

Registered:
May 2006
<3
---Where can you see lions? Only in kenya! Come to kenya we've got lions.
2007-10-07, 02:46
Member
115 posts

Registered:
Mar 2006
<3 u 2
one of the good guys! so please don't ban - jogi.netdome.biz
2007-10-07, 03:35
Member
12 posts

Registered:
Dec 2006
Bullshit. I totally bailed on you.
2007-10-07, 13:24
Moderator
1329 posts

Registered:
Apr 2006
Nice stats
Servers: Troopers
2007-10-07, 13:36
Administrator
1265 posts

Registered:
Jan 2006
I kinda love this
never argue with an idiot. they'll bring you back to their level and then beat you with experience.
2007-10-07, 18:10
Member
950 posts

Registered:
Apr 2006
Really cool to have instant stats after a game. gg jogi.
2007-10-11, 09:35
Moderator
383 posts

Registered:
Jan 2006
can someone build it for Win32?
With best wishes, B1aze.
2007-10-12, 09:34
Member
344 posts

Registered:
Nov 2006
Jogi: is there some qwd/mvd stream specification somewhere or did you reverse engineer this stuff? What about making a documentation for about the file format? :-)
2007-11-06, 02:55
Member
75 posts

Registered:
May 2006
Tuna wrote:
Jogi: is there some qwd/mvd stream specification somewhere or did you reverse engineer this stuff? What about making a documentation for about the file format? :-)

Hehe funny, jogi and documentation, that's a good one

No need to reverse engineer the format when you can just look at a client to see how the demo/network parsing is done. He cut out all the irrelevant stuff and just read things such as entity positions and what not.

There are no official specs for MVDs, no... which is pretty sad I wish it had been been more of a strict format to start with, and allowed to be extendable without breaking old clients (which would've been pretty easy to do).

I am by no means an expert on any of these formats, but here's a quick summary of the different formats (feel free to correct any mistakes):

Dem (NQ demo):
The network packets are just written to file. When playing back just pass read messages from the demo instead of the network.

QWD:
- Pretty much all network messages are saved.
- Each demo packet has a time stamp saved as a float. The number of seconds since the demo started (actually it's not 0 at start always).
- After the time stamp there's a byte containing the type of command the packet contains. For QWDs these can be:
* dem_cmd = A movement command containing viewangles and movement vectors.
* dem_read = Contains a net message that is passed on to the network layer.
* dem_set = Sets sequence numbers for the net channel at demo startup.

MVD:
- The demo is only uses 30 fps and is then interpolated on playback.
- The timestamp is saved as a byte containing the number of miliseconds since the last demo packet.
- MVDs do not contain any dem_cmd commands.
- MVDs contains their own specific command types:
* dem_multiple = Send a packet to more than one player. A 32-bit bit mask is sent with this, 32-bits indicating which of the 32 players that should receive it.
* dem_stats = Stats for a player has changed.
* dem_single = Send a message to a specific player. Both this and dem_stats contains an integer specifying which player should get the packet.
* dem_all = Send the packet to all players.
- The messages above are only used to specify who should get a message, after that you read the actual message like in the dem_read case.
2007-11-06, 09:36
Member
405 posts

Registered:
Jan 2006
MVDs demos may use not only 30 fps, but depends of server setting sv_demofps, in old mvdsv (1-2 year ago?) sv_demofps was 20.

MVDs also contain dem_read too, this mean message belong to set of players specified in previous dem_(multiple|stats|single|all), client saved such info during parsing. IMO dem_read was disigned to reduce demo size because u does't specifie players set, however dem_read does't reduce it because mvd header still have the same size, except when used alot of dem_multiple (in server this used only in one place - for chat aka say/say_team).
<3
2007-11-11, 12:14
Administrator
2058 posts

Registered:
Jan 2006
i get this trying to compile it

empezar@brucelee ~/quake/mvd_parser $ make
rm -f *.o
rm -f mvd_parser
echo "#define VERSION \"0.0.1\"\n#define BUILDTIME \"`date`\"\n#define COMPILER_VERSION \"`g++ -v 2>&1|grep version`\"" > include/version.h
g++ -c -Wall -I./include main.cpp -o main.o
g++ -c -Wall -I./include parser.cpp -o parser.o
g++ -c -Wall -I./include cmdline.cpp -o cmdline.o
cmdline.cpp:49: error: stray '\' in program
cmdline.cpp:49: error: stray '#' in program
cmdline.cpp:49: error: stray '\' in program
cmdline.cpp:49: error: stray '#' in program
cmdline.cpp:56: error: stray '\' in program
cmdline.cpp:56: error: stray '#' in program
cmdline.cpp:56: error: stray '\' in program
cmdline.cpp:56: error: stray '#' in program
cmdline.cpp: In function 'int Parse_Switch(char*, char*)':
cmdline.cpp:49: error: expected `)' before 'n'
cmdline.cpp:50: error: 'BUILDTIME' was not declared in this scope
cmdline.cpp:51: error: 'COMPILER_VERSION' was not declared in this scope
cmdline.cpp:56: error: expected `)' before 'n'
make: *** [cmdline.o] Error 1

how about releasing a binary? i have a 64-bit system.
2007-11-12, 01:20
Member
21 posts

Registered:
Feb 2006
There's a little bug in the Makefile.

Just change:
echo "#define VERSION \"$(VERSION)\"\n#define BUILDTIME \"$(DATE)\"\n#define COMPILER_VERSION \"$(C_VERSION)\"" > include/version.h

to:
echo "#define VERSION \"$(VERSION)\"" > include/version.h
echo "#define BUILDTIME \"$(DATE)\"" >> include/version.h
echo "#define COMPILER_VERSION \"$(C_VERSION)\"" >> include/version.h

That worked for me.
2008-01-31, 11:42
Administrator
1265 posts

Registered:
Jan 2006
whats the current status of this?
never argue with an idiot. they'll bring you back to their level and then beat you with experience.
2008-01-31, 11:47
Member
1435 posts

Registered:
Jan 2006
http://qw-dev.net/projects/show/mvdp
  15 posts on 1 page  1