///////////////////////////////////////////////
    RypelCam Unreal Engine 1 Edition - V1.3

       created by RypeL, update to v1.3 by VegasKill
         Rypel@gmx.de
http://rypelcam.ut3darkclan.com




Included programs:

1.  RypelCam Unreal Engine 1 Edition - V1.3
    Purpose: RypelCam is a tool that enhances the playback of game replays
    and allows movie makers to create camera paths and cinematic sequences

2.  Unreal Tournament Demo Manager 3.0 by UsAaR33 with extensions by {GkC}Poema
    Purpose: in-game browser of demos, automatic demo recording functionality, new
    demo recording driver with numerous fixes, additional functions during playback

3.  MovieUnreal2002 by Yoda with extensions by Argon
    Purpose: Framegrabbing to create high-quality movies from game replays


Installation:

1.  Extract all files of the .zip archives to the system folder of Unreal Tournament
    (example: C:\UnrealTournament\System)
2.  Open Unrealtournament.ini (in the system directory)
3.  Find the line that says DemoRecordingDevice=Engine.DemoRecDriver
4.  Change it to: DemoRecordingDevice=udemo.uDemoDriver
5.  Backup User.ini, so you can restore the original key binds when you want to play
6.  Final step, in User.ini, add the key binds as listed below. Place them at the end
    of the section [Engine.Input], or replace the existing key binds. In case of key
    binds that share the same key, only the last entry in the list is valid.
    (it is possible to assignt multiple commands to a key bind, separated with "|")

Key binds:

1=summon Cam.saveMouseRotTrigger
2=summon Cam.mouseMoveTrigger
3=summon Cam.mouseMovezTrigger
4=summon Cam.timeDispTrigger
5=summon Cam.btimetrigger
NumPad0=FirstPerson
NumPad1=viewclass CamControl
NumPad2=viewclass CamControl | behindview 0 | summon Cam.startTrigger
NumPad3=viewclass CamControl | behindview 0 | summon Cam.startTrigger2
NumPad4=editactor class=camcontrol
NumPad5=summon Cam.Knoten
NumPad6=summon Cam.mouseTrigger
NumPad8=togglefullscreen
GreyStar=summon Cam.textTrigger
GreySlash=summon Cam.drawkey
GreyMinus=summon Cam.ViewerTriggerDecrement
GreyPlus=summon Cam.ViewerTrigger
Up=moveRot 1024 0 0 0.01
Down=moveRot -1024 0 0 0.01
Left=moveRot 0 -1024 0 0.01
Right=moveRot 0 1024 0 0.01
PageUp=summon Cam.softlyquicker
PageDown=summon Cam.softlyslower
Delete=summon Cam.slower
End=summon Cam.faster
F=Pause
M=togglemovebv
R=CurTime | TotalTime | CurFrame | TotalFrames
U=ghost
X=ViewRecorder
Y=FindFlags
Aliases[26]=(Command="behindview 1 | set input NumPad0 FirstPerson",Alias=ThirdPerson)
Aliases[27]=(Command="behindview 0 | set input NumPad0 ThirdPerson",Alias=FirstPerson)



//---------------------------------------------------------
// RypelCam - Instructions for use
//---------------------------------------------------------

    Start a demo:
To load an existing replay, open the game menu (Escape key), and select Mod > Demo Manager. If there are no demos listed, you may need to update the demo path on the 3rd tab of the Demo Manager window. Use the time setting "Time Based (?timebased)" and the "3rdPerson (Spectate)" option before starting a demo.

    Creating a camera path:
The left mouse button lets you spectate and switch players, the right mouse button detaches the camera and allows free movement via WASD keys. "Space" moves the camera up, "Control" down. You can pause the replay with the pause key or "F". You still can move around, but you can not turn with the mouse while the game is paused - use the arrow keys instead. Numpad5 allows to set so called cam points, which are represented with an an orange colored flag icon. Cam points contain data of the camera position, perspective and the time, when they were created.
With this information, RypelCam will construct a camera path that goes through all cam points, as soon as you set at least 4 cam points (minimum 4, maximum 50).

    Saving a camera path:
To save a camera path, the game needs to run in windowed mode. If it runs in fullscreen, use Numpad8 to switch to the windowed mode. Numpad4 opens a new editor window, which allows to interact with RypelCam. Under RypelCamProperties, doubleclick "save_all_to_ini".

    Playing a camera path:
The camera can take account of the time, when the cam points were created. This way, the speed of the camera will be dynamic and the camera will speed up and slow down all by itself. Restart the game and select "Demo3+LoadCam" to reload the demo.
The key "5" enables the timed camera path option, and the game will pause automatically, when the creation time of the first cam point is reached (on-screen text will say "Time till Camstart: x"). When the game is unpaused, the camera will start by itself and adjust the speed according to the saved time difference between the cam points.

    Delete a cam point:
If in fullscreen, switch to windowed mode with Numpad8. Open the editor window with Numpad4, expand the section called "RypelCam_Insert_or_Remove_Flag". For "remove_Flag", enter the number of the flag you want to remove. Finally, confirm by double clicking on "remove_the_specified_Flag".

    Insert a cam point:
If in fullscreen, switch to windowed mode with Numpad8. Open the editor window with Numpad4, expand the section called "RypelCam_Insert_or_Remove_Flag". For "insert_after_flag", enter the number of the flag after which you want to insert a new cam point. Double click "I_want_to_insert_a_Flag", then you can place the new cam point with Numpad5.

    Playing a camera path with manual speed control:
If you don't enable the time-dependent camera option, you can manually control the speed of the camera and use the camera while the game is paused. "Delete" and "End" change the camera speed by the value of one unit, whereas "PageUp" and "PageDown" cause speed changes of 20% in respect to the current speed.

    Change position of a cam point:
Select a cam point with Numpad+ and Numpad-. Right click to detach the spectator camera. "2" toggles the option, to move the cam point in-plane with the mouse, "3" allows to move the cam point vertically. The more you move the mouse in a certain direction, the faster the flag will move in that direction.

    Change rotation of a cam point:
Select a cam point with Numpad+ and Numpad-, go into firstperson with Numpad0, then hit Numpad6. Choose a new rotation and confirm it with "1".

    Change various parameters of cam points:
If in fullscreen, switch to windowed mode with Numpad8. Open the editor window with Numpad4, expand the section called "RypelCam_Flags", which contains more parameters that you can change at will.

    Some useful keys and commands:
The key bind for M ("togglemovebv") toggles whether the behindview camera should be moveable with normal movement.
The key bind for R ("CurTime | TotalTime | CurFrame | TotalFrames") shows information about the time and frames of the currently playing demo.
The key bind for U ("ghost") enables the spectator to fly through walls.
The key bind for X("ViewRecorder") sets the view to the player who recorded the demo (will not work for demos recorded on a server)
The key bind for Y ("FindFlags") will change the view to flags, if there are any in the map (CTF game mode)

/////////////////////////////////////
special thx to:
GreEn`mArine for his support, suggestions and testing
Viper for testing
Azura for the forum
ep1taph for the ftp

RypelCam readme revised by VegasKill, 14.01.2020


//---------------------------------------------------------
// Demo Manager 3 - Instructions for use
//---------------------------------------------------------

    Commands of the Demo Manager 3:
- stopDemo: Stops playback
- slomo x: Controls speed of playback
- ghost: Enables ghost mode, so that the spectator can go through walls
- goto time slomotime: Goto a specific time in the demo. Time should be the remaining time, example 1701 is 17:01 remaining
- pauseafter time: Pauses the game after x amount of seconds
- pauseonnextevent: Pauses the game when an avent occurs, for instance when a player is killed
- PlayBack x: Toggle playback mode mid-demo.  0=timebased, 1=framebased, 2=noframecap
- SeekTo x: Seek to the demo at time x. (i.e. seekto 130 goes to the 2 minute, 10 second mark).
- Viewself: View from the spectator in 3rd person mode
- ViewRecorder: view from the player who recorded the demo. (only client demos!)
- FollowPlayer: View from the player you are currently looking at.
- FindFlags: View from the flags in a CTF game.

    Overview of on-screen options (added by {GkC}Poema):
- linkplayer: Links to the current player. In freecam mode the killmessages of this player will be shown
- linkteam: Links to the current team. In freecam mode the killmessages of all players of this team will be shown
- linkteamfc: Links to the current flagcarrier of the current linked team. First execute linkteam
- showmkillmsgs: Determines how many multikillmessages are shown. Four settings are possible

    Overview of camera options (added by {GkC}Poema):
- showcam: Show the coordinates of the camera location and rotation on screen
- setcamspeed: Sets the speed of the spectate camera. Default is 1
- savecampos campos: Save the current camera to the campos number
- togglerot: When enabled, pressing left and right will make the camera rotate instead of strafing
- changecammesh nr: Change the visual camera points to another mesh nr. When no nr is specified, the next mesh is taken
- movecam x y z pitch yaw roll time: Move the camera x, y, z and pitch, yaw, roll from the original point in time 'time'
- movecamto x y z pitch yaw roll time zeroswitch: Move the camera to the specified coordinates and rotate vector in time 'time'. Zeroswitch determines if 0 are the current value or really 0
- movecamtopos pos time: Move the camera to the specified camera position in time 'time'
- moveloc(to)(pos), moverot(to)(pos), movefov(to): Same as above
- stopcam: Stop movement of the camera
- movecamtobetween pos1 pos2 factor t: Position cam between pos1 and pos2 in time t. Factor decides the exact position of the cam, e.g. factor:1/2 is right in the middle.
- togglecamMode: Changes between constant speed cam mode and accelerated/deccelerated mode
- togglerollmode: Changes between constant speed roll mode and accelerated/deccelerated roll mode
- togglepauseAfterMove: Toggles whether UT should be paused after a camera move has been completed
- setairplaneroll rollspeed maxspeed: Make use of airplane rolls instead of user defined rolls. rollspeed is the speed of the roll, and maxspeed is how fast a roll can change, the roll speed can differ per path so experimentation is needed

    Overview of behindview spectator options (added by {GkC}Poema):
- holdBv: Removes the bv adaption of objects, bv will stay a fixed lenght from player
- stickyBv i: The bv is 'sticky'. 0: off, 1: always directly behind the player, 2: current position
- savebvpos i: Save the current behindview position to the campos number
- movebv x y z pitch yaw roll time: Move the behindview x, y, z and pitch, yaw, roll from the original point in time 'time'
- movebvto x y z pitch yaw roll time zeroswitch: Move the behindview to the specified coordinates and rotate vector in time 'time'
- movebvtopos i time: Move the behindview to the specified behindview position in time 'time'
- movebvloc(to)(pos), movebvrot(to)(pos): Same as above
- invertbvz: Toggles 'Duck' to be up or down in behindview
- togglebvmode: Toggles between constant bv camera speed or accelarating/deccelarating
- followflag teamid nroftimes: Follow the flag of team teamid, stopping just before nroftimes flagreturns
- focus name time: Focusses on an object or a player specified by the name and in the specified time
- togglefocusmode: Toggles between constant speed move focus mode and accelerated/deccelerated mode
- rotatecam campos1 campos2: Rotates the camera around camera position campos, much like behindview. The camera will start at campos2.
- rotatecam_dist campos dist: Rotates the camera around camera position campos with distance dist, much like behindview
- togglemovebv: Toggles whether the behindview camera should be moveable with normal movement

    Overview of path options:
- addwp wp time pathnr position: adds waypoint 'wp' to path 'pathnr' with a time of 'time' at a position
- removewp pathnr position: removes last wp of a certain path at a certain position
- printpath pathnr: prints the waypoints of path 'pathnr'
- printpath2 time pathnr overridewptime : prints the waypoints of path 'pathnr' with global time
- settimewp time pathnr position: Sets the time of the waypoint of path 'pathnr' at that position
- changepathmode: Changes the path mode. Possibilities are: Direct, smooth1 and smooth2 movement
- recordPath startpos pathnr: Record a realtime path. startpos is the camera startposition to be used (default=10), Pathnr default is 0
- addrecordwp: Record a new wp in the realtime path. The camera position at which it will be saved will be the last one plus 1
- movepath time pathnr overridewptime: Follows the waypoints of path 'pathnr', where the time is divided over the waypoints with time zero.
- stoppath: Stop the following of a path
- toggletimedistance: Changes between time- and distance-based mode
- show_path time pathhnr overridewptime: Visually shows the path specified
- showpaths time overridewptime: Visually shows all paths specified
- changepathmesh nr: Change the visual path points to another mesh nr. When no nr is specified, the next mesh is taken
- setpathfps fps: Set the fps used to visually show a path

    Overview of additional path options (added by {GkC}Poema):
- IPaddwp wp ratemodifer fovmodifier pathnr position: adds waypoint 'wp' to path 'pathnr' with a a certain rate and fovmodifier at a position
- IPremovewp pathnr position: removes last wp of a certain path at a certain position
- IPprintpath pathnr: prints the waypoints of IPpath 'pathnr'
- setrmwp ratemodifier pathnr position: Sets the ratemodifier of the waypoint of path 'pathnr' at that position
- setfmwp fovmodifier pathnr position: Sets the fovmodifier of the waypoint of path 'pathnr' at that position
- IPmovepath pathnr: Follows the waypoints of IP path 'pathnr'.


//---------------------------------------------------------
// MovieUnreal2002 - Instructions for use
//---------------------------------------------------------

MovieUnreal can force the engine to render at a fixed framerate, create screenshots or avi videos (without sound) at an adjustable framerate to create high-quality movies. For further informations and instructions, consult the readme file provided in the MovieUnreal2002.zip archive.