Sunday, February 19, 2006

Basic parser for Q3A ready

Unlike my last posting could suggest, entity parsing was easy too. Sometimes it helps to read the writing half of a communication. I just added "gamestate" parsing and now my one and only recording can be transferred into text without any "still unknown" parts. I know, that parsing of "servercommand" and "download" is still missing but I'm not sure how to create recordings with such a content and my code needs testing.
Next, I'll play against some bots and record the action to get a better input example. Then I'll think about a better representation. Maybe I can remove all these "EOF" tags from the text output.
Please download the LMPC source via CVS and try yourself!

DM3 file format brings in new problems

I just implemented the first part of the snapshot parsing (general data and player data), which was fairly easy. I looked then at the entity data. These are encoded in the end just like the player data with a clever field re-ordering and delta-encoding (only changed data appear in the demo file). But the fact, which entity appears in a given snapshot is not encoded completely in the snapshot itself but it possibly needs an internal state just like the game itself. This would mean I have to re-create a complete state machine with many former frames and all the entities in there.
Just read the function CL_ParsePacketEntities() in the file cl_parse.c to understand what I mean. It is not really clear, which entities should be read with CL_DeltaEntity() just by looking at the input file. I need a bit more time to think about it.

Saturday, February 18, 2006

Machinima in TV show

The short machinima part in the 3sat TV show on the Berlinale film festival was a bit disappointing: it was about 4 minutes long, contained some really basic interviews and showed some seconds of machinimas. The whole machinima movement was shown as a hobby thing made by nerds and not as new way to produce film. They even showed a HL2 movie and did not detect the revolutionary face movement quality. Of course, all this machinima stuff could make cinema and even the more traditional TV obsolete. Thus, TV people must laugh at this looming danger! On a personal side, I did two break tests in the taekwon-do class just for the camera but they are not shown. That's show business.

LMPC plus Q3A grows and grows. Now LMPC can parse the command name of the first command in a message. Up to this point, I used from the Q3A source only the basic message parse functions (MSG_*) but I hope, that I can use now the full source of the command parse routines directly.

Wednesday, February 08, 2006

Machinima in TV, LMPC + Q3A

Yesterday a camera team from Lizard Medienproduktion came to my place and made a short interview about machinima and my involvement. At the end they even filmed me during a Taekwon-Do class in Garching. My master used the opportunity and let me do two break tests (leg and hand).
Part of this will be sended in the so called computainment show "neues" (news) at the channel 3sat. The sending date is Saturday, february 11, 2006, 5.00-5.30 pm GMT+1. I'll record a MPEG2 file (via DVB-t) of this show. Maybe can distribute the 4 minutes about machinima.
This installment of "neues" is fully dedicated to the Berlinale film festival, which starts tomorrow. And where else should machinima be mentioned, if not in a computer show, which reports from a film festival?

A much more down-to-earth thing is, that I just checked into the LMPC source a basic binary to text translator for Q3A, which understands currently only the top-layer block structure (no internal game data) but it is a start and now I know again my old program and can remember how to create the internal node tree.

Monday, February 06, 2006

LMPC with Q3A support - start of implementation

Over the weekend I copied the demo relevant files from the Q3A source into the directory src/quake3 of LMPC. Then I activated by default the already existing DM3 support in the main compile infrastructure files and started implementing. First I converted the Q3A source from DOS line endings to UNIX line endings, changed all the C++ comments to standard C comments, and removed some GCC warnings. The next step was to create the library libquake3.a, which should contain all the needed parts of the Q3A source. I had to add several header files to make this happen.
The last step was to implement the function isDM3bin() in the file src/udm3.c. Thus the LMPC option --info works now on Q3A demo files too. All the rest will follow.
As usual I'll first implement the "binary read -> text write" part. To simplify this I'll use the already existing "node-tree as text" output code, which creates not XML but my own structured text (known from DEM, QWD, and DM2 text files). It's easy to write a XML backend later on.