Film At 11 v0.94beta Copyright 1997, Eric Stern Email: estern@mgl.ca http://www.mgl.ca/~estern Installation: Drop FILMAT11.EXE in your Quake directory. It doesn't have to be, but it probably makes the most sense. Create an icon for it on your desktop if you feel its needed. Fire it up and set your working directory in File/Options. It should be your quake\id1 directory. A. Introduction Film at 11 is a Windows95/NT based Quake Demo file editor. This program may be fairly memory intensive. If you have a low memory system (8 megs or less), editing large demos might be pretty slow. Film at 11 was largely created due to my boredom of watching complete demos. My clan (In Praise of Ammo - http://ammo.mgl.ca) is in the midst of an inter-clan competition (AmmoWar), for the purposes of fun and skill improvement. We basically have 1-on-1 matches, find a nice quiet server, first player to 25 frags wins. Demos of these matches are usually recorded. Thus, watching these demos (either for fun, or to examine the persons performance) has become a common passtime. However, I got bored watching them (some went on for in excess of 1 hour!) since the majority of the time nothing interesting is happening, the players are just running around collecting items. I thought to myself "Self, why couldn't we just remove the boring time in between the action?". So, I did some digging into the demo format, decided it wasn't too difficult, and wrote an editor. During development it occured to me that I could code a routine that would *automatically* remove the boring bits, and this goal has been realized in the form of the "compression" option in Film At 11. My clan is also toying with the idea of making a movie, having been well impressed with the work of the Rangers and Clan Undead. I figured a demo editor would be very valuable for that as well. As I write this FA11 has not yet been used in the creation of a movie. I have put in the features that I feel would be required in the process of making a movie. As I get feedback I will redesign and/or add features to assist in movie making. So, hopefully, this program will be of use to just about about everyone, wether they just want to compress a demo of a game they played to show off to their friends, right up to some serious movie making. -------------------------------------------------------------------------- B. Some background on demo files For really complete information about the demo file format (you WILL need this if you are going to do hard core demo editing), check out Uwe Girlich's incredibly awesome "Quake .DEM specs" at http://www.physik.uni-leipzig.de/~girlich/games/doc/dem.html FA11 would not have been possible without this document, so many thanks to Uwe for his hard work! So, a quick overview of the DEM format. The Quake server outputs an update at a specific time interval. This is generally every 0.05 seconds on a LAN, or 0.1 seconds on an Internet server. This update is refered to as a "block". Each block contains 1 or more "messages". Each message causes the Quake client to perform some specific operation, for example printing some text on the screen, or updating an objects position in the world. See the document listed above for a list of all the messages and their parameters. The first 3 blocks in a demo file contains startup information about the level about to be played. You DO NOT want to mess with this stuff. You can easily screw up the whole demo by messing with this information. Also, the very last block in the file should contain simply a "disconnect" message. This will cause the demo to exit gracefully back to the console, otherwise you will just get a solid network icon at the top of your screen. If you are making/editing a demo and this message is not at the end, its not a bad idea to put it in. -------------------------------------------------------------------------- C. Menu options File/Open: Open a demo file. Loads it into memory. Duh. File/Save: Saves the currently loaded demo to disk. File/Split: This function will break up a .dem file into a bunch of smaller .dem files. The main reason for doing this is that FA11 can only load about 32500 blocks at a time. So, if you have a long demo, you may have to break it up into chunks in order to edit it. If you can think of some other clever reason to split up a demo, this function is handy for that too. If you aren't sure if a demo is too big or not, just load it up. FA11 will tell you if its too big, then you can split it up. You can set the # of blocks to be in each fragment in the File/Options menu. Note that each fragment created is in itself a complete demo file. You can play each back in Quake, no problem. FA11 clones the header blocks from the main file into each fragment. NOTE: Some of you clever people know WHY it is limited to 32500 blocks. Yes, I could have fixed it. But, IMO, due to memory use and loading/saving time, 32500 is about the max you'd want to work with at any given time anyways. Additionally, if the demo file crosses multiple levels, FA11 will offer to let you save the new level in a different file. This is VERY handy since anyone who has ever recorded a multi level demo will know that Quake will NOT play it back correctly. So this feature will let you recover your multi-level demos. File/Splice: Once you've edited each of your fragments to your satisfaction, you'll want to combine the fragments back into one big demo. It will prompt you for the list of files to splice back together. ORDER IS IMPORTANT. If you get the pieces out of order, the demo will be...strange. Of course, you might want to do this on purpose. (Can't imagine why but...) Each file you are splicing together must be a complete demo file! (FA11's split function makes a complete demo file out of each fragment.) FA11 will use the header blocks from the first file as the header for the final file, and remove the header blocks from each other piece. File/Compress: The coolest feature of the program, IMHO. This function allows you to remove chunks of time in the demo where nothing "interesting" is happening. "Interesting" is defined by you, by selecting the events that you consider important with the checkboxes. In general, the defaults selected are what you want. By default the process will only keep 6 seconds before and 3 seconds after each frag. This is perfect for creating a "highlight" demo. No point watching the players running around picking up stuff, right? We wanna see death! Play around with this to see what kind of interesting things you can get. File/Options: Bring up the configuration screen. Working directory: The default directory to load/save files from. Quake directory: Your quake directory (ie C:\quake) Split size: When splitting a file, you can tell it how many blocks you want to put in each file. Minimum of 4, maximum of 32497. Game directory: Same as your -game parameter in quake. Ie if you record a CTF demo (on ctf1 say), then set this to "CTF" (assuming you start quake with "winquake -game ctf". FA11 uses this when loading files for the 3d view. Debug mode: If checked, will show some extra information in the Messages window. Probably not useful to anyone but me. File/Information: Displays some interesting stats about the currently loaded demo. Might take a while to display on large demos. File/Exit: Exits FA11. Duh again. Edit/Copy | Cut | Paste: Standard cut/paste operations on blocks or messages. Be careful what you are doing. Whichever listbox currently has the "focus" (generally which box you last clicked in) gets cut/copied from or pasted into. You CAN paste a message into a block, but you cannot paste a block into a message (obviously). Note: Doing these on LARGE numbers of blocks can take a while. Edit/Paste Special This allows you to paste a message into multiple blocks. Copy the message to the clipboard, select Paste Special, and then tell it how many times you want to paste, and how many blocks to skip between each paste. Using this you could cause it to print the same message every 10 seconds, for example. Checking the "Paste in reverse order" will cause the blocks to be pasted in backwards (if you are pasting multiple blocks). This can make for some REALLY funny stuff. Edit/Insert: This is a sort of generic command, and its action depends on which window is currently active. ie if the Sounds window is active, it will let you insert a new sound. If the Messages window is active, you can insert a new message. Basically, if a given window will let you insert something (not all do), you can do it with this command. Edit/Delete: Deletes something in the currently selected window. See Edit/Insert above. Edit/Remove: Will remove a certain msg type from all of the selected blocks (so select a group of blocks before you use this). It will pop up a dialog and you can select the msg type you want to get rid of. If you select UpdateEntity then the combo box at the bottom will be enabled and you can select the specific entity you wish to remove. Using this, you could strip certain players right out of a demo! Edit/Find: Search for text in the currently loaded demo. This is great if you are looking for a specific event in a demo. For example, if you want to find the point where you picked up a grenade launcher, you could search on "grenade". You can also search on event names, like "centerprint" or "updatefrags". A list of events is provided at the bottom of this doc. Edit/Fix Time: Another nifty function. If you start chopping chunks out of a demo file, the time stamps on the blocks will start to have big gaps in them. This can cause some unwanted effects. Fix Time allows to to fix this up, and play other fun tricks with time. I'll explain the 3 modes of operation. Standardize: This makes sure every time stamp in the file is exactly the same duration. You can select the time base you want the demo to be. In general you want this to be the same as the demo was recorded. See FX below. ex: before: 0 1 5 6 7 8 9 10 after: 0 1 2 3 4 5 6 7 Linearize: Puts time in a nice logical progression, but doesn't interfere with the time between each block. IF YOU ARE PUTTING SPECIAL TIME EFFECTS IN YOUR DEMO, YOU NEED TO USE THIS AND *NOT* STANDARDIZE. ex: before: 0 1 2 3 9 10 12 14 16 17 18 19 after: 0 1 2 3 4 5 7 9 11 12 13 14 Modify: To play tricks with time, select a group of blocks and select this function. Give it a wierd time base. Now that group of blocks will have a different time base than the rest of the demo. Use this to create slow-mo and fast-mo. Its excellent to do a nice slow-mo of that amazing frag you did. Effects/ReCamera: Allows you to move the camera position in the selected group of blocks. So, select a group of blocks. Hit Effects/Recamera. Select the entity that you wish to become the camera. Check the checkbox and select the entity that you wish to track. Hit ok and it will process the demo. Effects/Fade: Allows fade in/out effects, easily. Select a group of blocks. Hit Effect/Fade. Choose wether you want to fade in or out, and to/from black or white. Effects/Slow-Mo: Changes the speed of the selected blocks. Really all it does is insert host_framerate commands at the first and last block you select. After doing this, you can manually change the host_framerate command to tweak the actual speed. Effects/Fast-mo: Same as slow-mo. See above. 3D View: Controls the 3d view window. Has two settings, Off and Solid. Off is self explanatory. Solid will render a view of the level at the currently select block. See 3D view below. Window/*: Your standard MDI window controls. I suggest you Tile your windows and then manually tweak them into a setup you like. Help/About: Vanity information about this program. -------------------------------------------------------------------------- D. The Windows: Blocks: If you used a previous version of FA11, you'll recognise this. It just lists the blocks in the demo. You can select block(s) to cut, paste, fix time, and other things. Clicking on a block will cause all the messages in that block to be shown in the Messages Window. Also, that block will be shown the in 3d View if it is active. Messages: Again, previous users will recognise this. It lists all the messages in the current block. Clicking on a message will cause its parameters to be displayed in the Edit window (if it is editable). Edit: Shows the parameters for the current block and message. Double click on a parmeter to edit it! Sounds/Models: Lists the sounds and models used in this demo. You can add and delete entries in these lists. BE VERY CAREFUL when deleting entries. If you delete a sound and that sound is still used in the demo, the demo will crash when it tries to play the sound. Same goes with models. I only really included the delete function so you can delete any items that you add in manually, not for deleting stuff that was present in the original demo. If you click on an item, it will show the # of that item in the Status bar. Just in case you need that info for something. Entities: Just a reference list of entities in the demo. You can't edit this list. Players names show up in the proper place. 3D View: Yes, its the feature everyone has been asking for! The 3d view of the demo. Load up a demo, select 3D View/Solid and your starting position should appear in the 3D View window. NOTE: 3D View uses OpenGL to render. Thus, you must have the Microsoft (or a suitable substitute) OPENGL32.DLL in your \WINDOWS\SYSTEM directory. If you have 3d hardware, you can use your vendors OPENGL32.DLL. You CANNOT use the 3DFX OPENGL32.DLL for GLQuake. Clicking on a block in the Blocks window will move the camera to that block. You can also use the VCR controls (stop,play) to play the demo. You will notice that the walls are all solid colors. I have not implemented texture rendering yet. The 3d View is not meant to replace Quake. It is meant to give a rough idea of what is going on in the demo at any given time. Thus texturing is not an important feature, and would just slow the rendering down (and its none too speedy to begin with). All entities in the demo (items, monsters, players, etc) are rendered as red boxes. I will probably add textures, and possibly entity rendering in future versions of FA11. For now, the 3d view does what it was meant to. Pushing the little play button will start playing back the demo at the currently selected block. Text messages are printed, and the current timestamp is displayed as it is playing back. Playback will stop at the end of the demo, or when you hit the stop button. Hint: Make the 3d View window as small as you can stand. The smaller it is the faster it will render (and thus be more smooth). -------------------------------------------------------------------------- E. Misc notes: 1) In general, don't save your modified demo over the original. You might want the original again. 2) After you compress a demo, load it in and do a Edit/Fix Time and Standardize it. It cleans up some unwanted effects. Make sure you pick the right time base! 3) You cannot splice together pieces of demos that were recorded on different maps. (Well, you CAN, but the demo will not play back in Quake properly.) I also suspect that you cannot splice together pieces of seperate demos even if they were recorded on the same map, however I haven't tried this yet. It *might* work. Someone try and let me know. :) -------------------------------------------------------------------------- F. Known bugs 1) The text descriptions of each message is not always updated correctly Save and reload the file to bring it up to date, or edit the message. -------------------------------------------------------------------------- G. Credits Thanks to Uwe Girlich for the Quake .DEM specs. Thanks to id Software for Quake (of course). Thanks to the boys in my Clan for testing and ideas. (Oh, and you too Lady Death! :) ) Thanks to Joel Beaudoin for creating QGL (Quake flythrough in OpenGL) on which code my 3D view is based. Thanks to everyone who emailed in suggestions and praise. Quake is a copyright of id Software. Please send any bug reports, ideas or other comments to estern@mgl.ca. Flames or other nonsense will be cheerfully deleted. Please, if sending a bug report, try to give me some *information*. Something like "Your compression thingy doesn't work" is not very helpful. :) Send along the demo file you are having trouble with if possible. If you are sending a demo file along, please MAKE SURE ITS ZIPPED first! Thanks. -------------------------------------------------------------------------- H. Version History v0.95beta - Released Junk 12, 1997 New features - wrote my own File History routines (a pox on people releasing little components without source!) - added wireframe rendering (it was soooooo easy..but kinda useless IMHO) - you can now select multiple blocks, and modify the camera angle on the whole bunch of them - added Edit/Remove (removes a specific type of msg from a group of blocks) if removing UpdateEntity msgs, you can specify the entity - added Effects menu - ReCamera (moves and re-orients the camera in a group of blocks) - Fade... ...pretty much self explanatory - Slow/Fast Mo ...again, self evident Bug fixes - fixed pasting msgs into blocks (including Paste Special) - fixed incorrect message when pasting blocks - fixed spelling of "monster" on Compression dialog - linearize time now works properly - will not write out 0 length (empty) blocks when saving demo v0.94beta - Released April 28, 1997 - revamped the entire program...now an MDI app - added 3d preview - added windows for Sounds, Models, Entities - can insert/delete sounds and models - can insert/edit more messages now v0.93beta - (private) Released March 26, 1997 - added View/This Block - added Edit/Paste Special v0.92 - Released March 25, 1997 - Initial release