Videomaking

From Q4MAX

Contents

Introduction

Starting with Q4Max 0.77, you have the possibility of directly taking screenshot sequences with netdemos. This allows you to have a full fps sequence with a constant speed regardless of your graphics settings and pc performance, instead of requiring a fast machine for some 30 fps captures with i.e Fraps, or just giving you a fluctuating speed and other side effects of converting netdemos into renderdemos and using the avidemo command.

The screenshots can be either in tga or jpg format (demo_aviscreenshotJPEG 0|1) and will be saved in q4max/screenshots/avidemos.

Framerate

The screenshot output will be at the framerate corresponding to the tickrate the demo was recorded in.

The engine spaces frames in integer intervals, so you don't get 60 fps with si_fps 60 (as 1000/60 = 16.6666667). It'll work with a 16ms interval, giving you 62.5 fps.

si_fpsframetimeframerate
60-6216ms62.5 fps
63-6615ms66.666667 fps
67-7114ms71.428571 fps
72-7613ms76.923077 fps
77-8312ms83.333333 fps
84-9011ms90.909090 fps
91-10010ms100 fps
101-1119ms111.111111 fps
112-1258ms125 fps

Capturing an entire netdemo

Use the avinetdemo <filename> console command. You can use tab completion to cycle through possible netdemo filenames - just be sure to quote the filename when you're done, like you would when manually playing a netdemo from the console.

i.e
avinetdemo "my-netdemo.netdemo"

Q4Max will take a screenshot for every frame until the demo ends. The files will reside in /q4max/screenshots/avidemos/<filename>

i.e
/q4max/screenshots/avidemos/my-netdemo/

If you decide to interrupt the capture, press esc and click on disconnect, or faster, use a disconnect bind.

Capturing specific parts of a netdemo

The procedure is quite similar to what you may be used to from Quake 3.

  • You will want to have a disconnect bind to stop demo playback when you are done. You will also need to bind "toggle demo_aviscreenshots" to your the key of your choice, so that you can manually start/stop screenshotting whenever you want.
i.e
bind space "toggle demo_aviscreenshots"
  • Eventually, set demo_avidemoname <filename>as the screenshots will be saved in q4max/screenshots/avidemos/<filename>. If not, it'll save in /q4max/screenshots/avidemos/unknown .
  • Start playback as a timedemo, either from the demo menu, or from the console with
playnettimedemo "my-netdemo.netdemo"
This is crucial. Playing the netdemo as a timedemo ensures you're not missing any of the possible frames per second. Doing otherwise will result in duplicate / missing frames, making the capture worthless.
  • Press your aviscreenshots bind to start taking screenshots, press it again to stop.
  • If you feel the timedemo is going too slow inbetween the parts you want to capture, toggle r_vertexlight to speed it up, using a bind.
  • If you feel the timedemo is going too fast inbetween the parts you want to capture, toggle r_swapinterval to slow it down, using a bind.