My idea relies on demos you can record in Quake 3. I think that having ability to record all of the actions that happen on client's screen would be usefull in many ways, from recording strategies, presenting your appartment, showing paths to distant areas, recording events, thievery, flame wars or even some great finds. Demos, previously recorded from inside client (during normal playing) could be then played, again, from inside of client only. Let me explain in detail how i thought it can be implemented.
First i'll remind whats the way of packets that server sends to client.
1.Server
2.Network
3.Client(server's packets deciphering algorithm)
4.Client(display)
If between 2 & 3 we will place algorithm:
1.Server
2.Network
2a. Client(demo recording algorithm)
3.Client(server's packets deciphering algorithm)
4.Client(display)
then, if toggled, demo recording can begin. My idea of recording it was that every single packet sent to client is stored in a file with a timestamp attached to every one of those packets. Then, we will need an algorithm to play recorded files:
1.Server
2.Network
2a. Client(read demo file, simulation of recieving server packets)
2b. Client(demo recording algorithm)
3.Client(server's packets deciphering algorithm)
4.Client(display)
Demo recording should be started from both main menu and from command "/record demo_file_name". From main menu, when 'Demos' position is selected it leads to submenu:
1. Record demo.
2. Play demo.
2. Stop recording.
1 leads to input dialog that tells you to enter filename, when accepted it starts recording
2 leads to dialog box with a list of demos stored on disk, lets say, under client/demos/ dir, when one is accepted, playback begins
3 quite obvious
Im sure that we currently have a lot of other more important coding tasks. However, as this idea might sound complicated, the idea relies on quite simple rules described above. Im not sure it how much of a work it require, but it is not that scary as it looks at the first glance. Playback of demo files requires in fact only an agorithm that simulates a server sending packets which are read from file. The rest is done normally by the client. Except that when in playback mode, you are disconnected and you have no control over the movie (or tha player) besides escape key. Maybe rewind/ff or pause keys can be added but no pressure on that
As a last step, Demos forum can be added, where players post their files. Files could be stored on webserver, even if the sizes of original file is quite big, im sure zipping it would provide good results.
Having bigger library of demo files would be yet another factor that makes our community stronger. Imagine a thief willing to make his 'job'; he needs to keep in mind that anyone around can be currently recording