GithubHelp home page GithubHelp logo

udemo's Introduction

===============================================================================
                           ______   _______  _______  _______ 
                 |\     /|(  __  \ (  ____ \(       )(  ___  )              
                 | )   ( || (  \  )| (    \/| () () || (   ) |
                 | |   | || |   ) || (__    | || || || |   | |
                 | |   | || |   | ||  __)   | |(_)| || |   | |
                 | |   | || |   ) || (      | |   | || |   | |
                 | (___) || (__/  )| (____/\| )   ( || (___) |
                 (_______)(______/ (_______/|/     \|(_______)
                                             

                      Unreal Tournament Demo Manager 3.5    
                by UsAaR33 (until v3.0) and AnthraX (after v3.0)
		
===============================================================================

1) Description
--------------

UsAaR33's UT demo manager adds a lot of functionality to the Unreal Tournament
demo recording and playback system. Some of the key features are:
* A convenient demo browser that lists demos + packages required to play them
* A uz downloader that can download and install packages required for playback
* Commands to record, stop, rename, and delete demos
* 3rd person demo playback
* Demo speed control, seeking, pausing, ...
* ... and many many more (see OriginalReadme.txt for an overview)

Demo Manager 3.5 is an updated version of the original UT demo manager. While
the interface and functionality hasn't changed much, demo manager 3.5 does
include a lot of fixes for rendering glitches, crashes, etc. It also restores a
lot of functionality that broke because of anti-cheat tools such as UTPure,
UTDC, AnthChecker, ACE, etc.

Demo Manager is an open source mod. The code is available at:
https://github.com/stijn-volckaert/udemo

I am accepting pull requests!

2) Installation
---------------

1) Extract every file to the system directory of Unreal Tournament. (e.g.,
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

Failure to perform steps 2-4 will prevent usage of the speed control, pausing,
seeking, or any other nice feature of the new demo driver!

3) Change log
-------------

v3.5.1:
* [FIXED] Demo manager no longer hangs while trying to play back truncated demos
* [FIXED] The camera now correctly follows guided warshells
* [CHANGED] Minor adjustments to the GUI to work better with v469's GUI scaling

v3.5:
* [ADDED] Compatibility with Unreal Tournament v469
* [FIXED] You can now, once again, save downloaded files in the cache folder
* [FIXED] Sniper rifle not zooming in
* [FIXED] Weapon rendering glitches
* [FIXED] Crashes after seeking back in a demo
* [CHANGED] Removed outdated redirect servers from the default config

v3.4 - Open source release:
* [CHANGED] Lots and lots of portability fixes. Demo Manager now works on
  Linux... sort of

v3.3 beta - build 2009/07/10:

* [ADDED] You can now disable autorecording while spectating trough a checkbox
  in the auto-record tab
* [FIXED] Extreme lag during demo playback (test this please)
* [FIXED] Level Time going out of sync after seeking (experimental! please test!)
* [FIXED] Missing hudmessages
* [FIXED] Small bugs in invisible flag fix	
	
v3.3 beta - build 2009/06/24:
* [FIXED] Invisible flags in CTF based games
* [FIXED] Downloader for missing packages either crashing or not working
* [FIXED] UT crashing while seeking (using the seekto command). While fixing
  this bug I've also been able to speed up the seeking.
* [FIXED] UT crashing when trying to view a second demo after finishing the
  first
* [FIXED] Error while closing down UT after viewing a demo
* [FIXED] Windows x64 crashes in the illegal actor cleanup routine	
* [CHANGED] Rewrote a lot of C++ routines for better stability and portability
	
v3.2 beta - build 2009/05/20:
* [FIXED] ServerInfo (F2) not showing
* [ADDED] You can now type "togglestats" in console to show the smartctf
  scoreboard (only works for 4D)
	
v3.2 beta - build 2007/01/27:
* [FIXED] The camera would sometimes start shaking for no reason (eg: while
  ducking)

v3.2 beta - build 2007/01/05:
* [FIXED] Weaponshow in demos recorded on UTPure7G servers
* [FIXED] Some issues with the viewrotation calculation. As a result of this
  fix, the screen will no longer "roll" while watching someone ineyes in a 3rd
  person demo (someone other than the demorecorder ofcourse...)
* [ADDED] Some minor tweaks to the demoplaybackspec code
	
v3.2 beta:
* [CHANGED] Moved the illegal actor destroying routine to the native side (dll)
* [FIXED] UTDC crashes in serverside demos

v3.1:
* [ADDED] Option to destroy illegal actors (such as the UTDC native check that
  crashes demos)
* [FIXED] Fixed Scoreboard and HUD problems in 3rd person demos (caused by Pure7G)
* [FIXED] Fixed Camera cycling problems in 3rd person demos (caused by Pure7G)
* [CHANGED] Cleaned up big parts of the code

v3.0 and below:
* See OriginalReadme.txt

4) Known issues
---------------
	
* Some messages are displayed twice in the console (broadcasted messages etc)

5) Credits
----------

* UsAaR33: Created and maintained demo manager until v3.0
* Cerr, DarkByte, Mongo, Yoda, TNSe, Pavel, Garfield, Jack Porter: for their
  substantial contributions to the original demo manager
* AnthraX: Started maintaining udemo after v3.0

6) Bugs and feedback
--------------------

Please use the issue tracker at https://github.com/stijn-volckaert/udemo to
report bugs.

===============================================================================

udemo's People

Contributors

seriousbuggie avatar stijn-volckaert avatar neonknightoa avatar

Stargazers

João Barros avatar  avatar  avatar Herwin Bozet avatar  avatar  avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

udemo's Issues

Demo Recording FPS cap

Screenshot_1553
Screenshot_1556

If you have 240hz or 360hz Monitors you will have to play UT at high FPS to match your monitor refresh rate. However, if you decide to record demos, the filesize becomes humongous. I checked my demo folder recently, and I discovered that each pug map I play (20 minutes), the file size goes over 100mb for each demo. Setting an FPS recording cap would help to reduce the file size a lot. Recording demos at 370fps is a little too much, personally, I would have it capped at 144fps or 120fps.

Big lagging/jittering while using a combination 'slomo' + 'seekto' 2 times in a row

A demo recorded in client 469c on an online server 469c, with udemo 3.5.1, while playing a game, steps to reproduce the bug:

  • [a] demoplay
  • [b] slomo 0.25
  • [c] seekto 220
  • [d] again seekto 220

After [c], VIDEO 1, lagging/jittering caused by THIS BUG
After [d], VIDEO 2, lagging/jittering much bigger

Notice the difference between [c] and [d]:

  • [d] much much bigger lagging/jittering
  • [d] happens in all spectate modes: behindview 0, behindview 1 or a free camera

Seekto breaks Remaining Time

Using seekto seems to not update the remaining time properly. Here is a video example:

Unreal.Tournament.2023-06-25.-.14-22-48-10.mp4

I used Seekto 1425, which is couple seconds after game ends. Notice the remaining time on the top right corner, it does not represent the actual remaining time of that moment.

Demo manager refuse start play demo when able do this from console

I try start demo play from demo manager, but it say files missing and refuse start demo play.

When I start it from console - it play.

Reason: In demo listed XVehicles.u as file from game, not from cache. So demo manager try search only in game. When game able load it from cache when it actually not found in game.

After I restart game it see file as cached, but still refuse play.

img
No, close dialog, no any play.
Yes, make next dialog:
img
But this not change anything.

RypelCam slomo affects camera speed and movement

There are 2 issues If you use slomo while playing a RypelCam camera path. These issues are not present on 436 and movie demo manager.

Slomo issue 1:
Slomo will define the camera speed. This means if you use slomo 0.2 camera speed will also slow down. Bug is present on 469 demo manager only.

Slomo issue 2:
Camera movement is glitched. For example If I use lower slomo values, the camera starts "shaking" a lot, you can visibly see it in the video below:

RypelCam.slomo.469_1.mp4

Lack of bar, slider and buttons for demo playback !

This must be a good joke. This antediluvian fossil doesn't even has bar, slider and buttons for playback !
Currently it requires to type f..king commands in console ! Like in MS-DOS before Win 1.0 ! But we are in 2023, aren't we ?!.. I had a Sony walkman 25 years ago and it had buttons for playback ! Even my grandma's 30 yo TV had buttons ! For this reason, nobody use this udemo shitty thing and most of people use screen recording software to record and playback their gameplay, not even saying this udemo thing is broken due to other issues as well, the whole udemo thing is useless in it's current state.

--- Description ---: Unreal Tournament has a truly remarkable and complex demo recording and playback system. There was only one major problem: WHERE IS THE BROWSER????

Yeah, also: HOUSTON, WE HAVE A PROBLEM: WHERE ARE THE F..KING: BAR, SLIDER AND BUTTONS FOR PLAYBACK???? WE CANNOT EASILY STEER OUR SHIP !

Demo manager try load packages in wrong order

As mentioned in #25, demo manager for display packages in grid sort it by name of package.
Which is fine.

But later this sorted order used for try load packages one-by-one, for determine if all packages for demo is ok.
Which is not fine, if there appear some dependency between packages.

This partially "solved" via loop with O^2 complexity.

Need remake order of load into which specified in demo file. Possible leave hack with loop.

Udemo reset weapon of pawns to None

event PreRender( canvas Canvas )

        // (Added by Anth) Weaponshow hax
        // UTPure7G resets several values in bbPlayer.RenderOverlays, this
        // prevents the weapon from rendering correctly
        // => Don't let PlayerLinked.RenderOverlays do the weaponrendering
        if (PlayerPawn(ViewTarget) != None && !bBehindview)
        {
            oldWeap = PlayerPawn(ViewTarget).Weapon;
            PlayerPawn(ViewTarget).Weapon = none;

            // set viewtarget to none so the engine calls RenderOverlays on the
            // demoplaybackspec, rather than the viewtarget...

            OldViewtarget = ViewTarget;
            ViewTarget.bHidden = true;
            ViewTarget = none;    
        }

event RenderOverLays(Canvas Canvas)

        // Give weapon back. The weapon was set to none during PreRender
        if (PlayerPawn(ViewTarget).Weapon == None &&
            oldWeap != None &&
            oldWeap.Owner == PlayerPawn(ViewTarget))
        {
            PlayerPawn(ViewTarget).Weapon = oldWeap;
        }

In demo often owner not replicated yet. So you reset it to none, but not return back.

Enough one frame where owner is not set yet, and we get None, instead of weapon.

Normally it is not problem, because you own weapon much before it be your actual weapon.

But when you enter into vehicle it is momentary action. And weapon can be replicated faster from change owner on it.

In fact I see delay of 0.1 seconds or more when change seat between two turrets. And exists enough big gap when player "own" both turret weapons until replication not come.

In general it is not udemo business which weapon handle pawn, own it or no. So if it remove it temporary, it must return back exact as it be before without any assumption or filtering.

Latest version doesn't work on MacOS

Latest version does not work on MacOS (version 4.69). I've changed the paths for the MacOS one but the demo file isn't readable from within the Demo Manager.

Thanks!

No crouching in a demo

Just another funny bug in this unusable shit called "demo recording feature": a player is crouching in gameplay, but then when spectating the demo, he is standing instead.

Auto record wont start if UT started with URL

If UT started with URL of server auto-record not start.

It happens because auto record use load gui menu. But GUI menu load only on first press ESC. But in such case it not happen before connect to server.

Camera is suddenly rotating/spinning super fast around itself infinitely

I'm playing in 3dperson mode, a demo recorded as a spectator behindview 0 + specfix on an online server, I'm using: seekto XXX, slomo 0.25 and slomo 1, from time to time, and nothing more, everything is working for a while, then suddenly, while changing from slomo 0.25 to slomo 1, demo gets broken: camera is rotating super fast around itself infinitely, then I'm going back to slomo 0.25 and everything is ok, then I'm going back to slomo 1 and the camera bug again, and so on, the camera bug persist evertime when switching from slomo 0.25 to slomo 1, until I restart demo, the same bug manifested a single time during demorec but then has dissappeared by itself after a while, and has reappeared in demoplay and won't dissappear in demoplay until demo is restarted, this bug is critical, makes demorec & demoplay features partially broken, what a piece of crap...

Feature request: Seamless transition when spectating 3rd person and going into freecam

When you are spectating someone in 3rd person and you decide to go into free cam to fly around map, it will remember your previous freecam position on the map and spawn you there. Here is a quick example with normal 469 demo manager:

normal.demo.manager.mp4

Here is how it looks like with Movie Demo Manager (works only on 436):

movie.demo.manager.mp4

Basically second example is my proposal. When you exit 3rd person it needs to place you next to the player you were spectating.

Allow game tweaking and modding when playing back demo

During demo playback, the game does not allow some of the tweaking commands to make the game look different. Testing the following console command works in offline single player, but when playing back a demo, even if it is an offline demo - it does not allow you to tweak and modify it using some of the console commands.
Screenshot_1888

For this specific purpose, I wanted to change the shock to a custom one for a frag movie.

Too many demo files crash UT

udemo crash
Screenshot_2191

when I launch UT and bring up xconsole
didnt change anything

Note: The game starts but when I press Esc to show the menu it crashes with that error
Update: I cleaned up the Demo recording folder and it works now

  1. Count of loaded demos must be limited, possible with warning.
  2. Sorting must be optimized for reduce hit limit.

or

All things must be moved in native, where can be sorted more fast, and without any limits.

[demo playback] Add jump forward / backward to 'seekto', relatively to CurrTime

Currently we can use seekto to only jump to a given time forward or backward, but in that case, time must be absolute, which is not a problem when we want to jump to a specific time, but it's not so handy when we want to quickly jump for example 1 or 3 or 5 min forward or backward independly of the current time position, slomo higher than 1 is not so elegant as well in this scenario.

Simply implement CurrTime + and - RequestedTime jumping in seekto command.
For example: seekto +300 jumps 5 mins forward, and seekto -300 jumps 5 mins backward.
If the resulting time is less than 0, set at start, if is more than demo's length, set at end or don't set at all.

Can't delete a fucking demo

Issue similiar to (might be related or not, I dunno) :

delete_demo

Steps to reproduce using Mod > UDemo Manager GUI 3.5.1:

  • A. Select demo X.
  • B. Play demo X.
  • C. Stop demo X.
  • D. Press "DELETE" demo X - not works:
    • it says: "WARNING! FAILED TO REMOVE - Be sure that you are not currently playing this demo"
    • no, I'm not playing the fucking demo because I already stopped it in step "C", see?
    • Still not see? Go to an ophthalmologist.

Additional workaround steps which don't work either:

  • E. Select a different demo Y
  • F. Select again demo X
  • G Press DELETE demo X - still not works

Finally, additional workaround steps which do work:

  • E. Select a different demo Y
  • F. Play demo Y
  • G. Select again demo X
  • H. Press DELETE demo X - it works

It seems it will refuse to delete demo X / unlock the demo X file, as long as another / differenet demo Y hasn't been played afterwards, only then the lock handle of demo X is released.

Demo manager can open out of screen

Sometimes Demo manager open as
scr_1681069038
This make it unusable.

I think need ensure coordinates not goes negative on open.

Look like somehow it try center around point (0,0).

Slomo command affect demo spectator as well

When you use slomo command in demoplay, you expect it not affect speed of movement demoplay spectator for flyby near.
But it affect, which is bad.

Suggestion alter flying speed for demoplay spectator, after apply slomo command for make it same.

This also "pause" game with set very low slomo, but still able fly around: #17

Udemo crash UT

DemoPlaybackSpec CTF-XV-LavaGiantV8.DemoPlaybackSpec0 (Function udemo.DemoPlaybackSpec.SetPlayer:0000) Infinite script recursion (250 calls) detected

History: FFrame::Serialize <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.SetPlayer) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) <- (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView) 
Critical: FFrame::Serialize
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.SetPlayer)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: (CTF-XV-LavaGiantV8.DemoPlaybackSpec0 udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: UObject::ProcessEvent
Critical: (DemoPlaybackSpec CTF-XV-LavaGiantV8.DemoPlaybackSpec0, Function udemo.DemoPlaybackSpec.PlayerCalcView)
Critical: UGameEngine::Draw
Critical: UWindowsViewport::Repaint
Critical: UWindowsClient::Tick
Critical: ClientTick
Critical: UGameEngine::Tick
Critical: UpdateWorld
Critical: MainLoop

It happens on some demo when you call seekto few times. This need look from player eyes when command called. need ensure there not created loops. Like check
PlayerPawn(PTarget) ~= self before make recursive call.

Sniper Zoom bug

Strange warping issues every time you use sniper zoom. This was playtested offline in single player, without any mods.

Sniper.Zoom.Bug.mp4

[DM-Deck16]_1-29_18-36-31.zip

Add RypelCam support for 469 demo manager

RypelCam works exclusively on 436 with movie demo manager. RypelCam in 469 does not work properly, the main issue is the camera which does not rotate.

RypelCam download:
RypelCam_436.zip

Here is a very quick tutorial video on how to use RypelCam, this is on 436 only, I'm also using movie demo manager:
https://drive.google.com/file/d/1f2yk-XcGBZzxnuLif8uh-TyZW0VymOiQ/view
You need to make new binds for RypelCam to work, they are inside Readme. Open a demo and put at least 4 camera flags, they are basically snapshots that the camera will follow. You place camera flags with NumPad5. After you place four of them, you press NumPad1 to spectate the camera actor and NumPad0 to enter behindview 0. You play the camera with NumPad2.

 

And here is how RypelCam behaves in 469 demo manager. Video link:
https://drive.google.com/file/d/1hoj1wtGRJxkv1YtGcpZUunPDNgjO5VoC/view
As you can see, the camera is moving properly, its following the path - that's a good sign. However, the camera does not rotate. Notice how the camera is frozen and does not rotate compared to the 436 example, it follows the path but without any rotation.

smartctf stats not working with udemo.udemodriver

They show up when I switch back to engine.demorecdriver, but if I use the udemodriver, they don't work.

I should note that the "mutate smartctf showstats" command does nothing (no error message either), and togglestats gives an "Unrecognized command" error.

If I use udemo.udemodriver and then type 'togglestats', it says "udemo couldn't spawn statsthingie". 'mutate smartctf showstats' just does nothing, also no error message, same as before.

Is there any chance you might be able to explain to me why this happens, and/or provide a fix in a future update? Or tell me why it's impossible to fix?

I'm using the UT99-1337 version from the PG discord, updated to 469 with the latest patch (16th of april).

Seizures when you get killed

epileptic.mp4

Every time you die or you get killed, the kill camera goes epileptic. The higher the framerate the worse it gets.

3rd person view no result

After a demo being recorded, nothing shows up on the 3rd person view checkbox. No replication or any data only works on the first person.

Weapons with HD textures does not render

When recording a game with HD weapon textures, then the weapons will not show in 3rdPerson (Spectate) view.
When in first person view, the weapons render without HD textures.

Seekto is very slow and not accurate

If your demo is long with a lot of players and action, the demo becomes "heavy" for the seekto command. If you use seekto with values such as 800 and beyond, you will notice how slow the seeking is as well as how inaccurate it is. The higher the value, the slower and more inaccurate the seek is.

To demonstrate this, I have made a quick example. In this clip I use "seekto 1400". You can see how slow the seeking is (it took around 12 seconds). When the seeking is done, notice what it says in the console - "Currently at 1412". That means there is 12 seconds of inaccuracy.

seekto.mp4

This example is not as bad and it is somewhat acceptable. However, there are other mods like Siege, which are ten times more heavier with a lot of stuff going on, this results in a much longer seekto than a CTF game. A Siege game could take up to minutes, if you try to seekto with a value like 3000, it will take minutes to process the seek.

Here is the demo file from my CTF video example I showed, it has the needed files to play it back.
https://drive.google.com/file/d/1XreXNXMr84nhDif5o0duPzwKt0RUlmYU/view?usp=sharing

Slomo makes Remaining Time inaccurate

I used Slomo 100 at the beginning, then switched to Slomo 1 after pause. Notice the inaccuracy with the remaining time. About 5 seconds of inaccuracy from my example:

Unreal.Tournament.2023-06-25.-.14-19-29-05.mp4

File mismatch & suggestion

Demo playback have file dependency, otherwise it just stay stuck... it doesn't even play when I used a dummy .utx to load a demo but it doesn't either when I'm using a dummy .umx file because someone was wanting to play their oldddd demo back in the days. Most of the time the .dem file gets deleted after no recovery I think.

This is the result when I tried to use a different .umx file for the map, which let's say original is no longer there for an example.
image

Clicking No doesn't play the demo, neither does Yes if it doesn't download it even though it said it was downloaded successfully.
In this case, it'll be Dasbot.umx. Otherwise, it play successfully.

Warning: Failed to load 'Texture CTF-BT-II-DoubleVision.Screenshot': Object not found: Texture CTF-BT-II-DoubleVision.Screenshot
Warning: Failed to load 'IACEv08c': Can't find file for package 'IACEv08c'
Warning: Failed to load 'ACEv08h_C.u': Can't find file for package 'IACEv08c'
Warning: Failed to load 'ACEv08h_C.u': Can't find file for package 'IACEv08c'
DevMD5: FF6FA2124F04703C9D707F92B5E603F6.uxx checksum: a175e82215b4b9b46a035e854db6fb72 (94.2ms)
DevMD5: Anc.utx checksum: 0596c306b6b6e52a707b9dc0c9a7ec6e (33.6ms)
DevMD5: BalMic.utx checksum: 653ddccc895ff9a72dd1b537e92323e1 (7.4ms)
DevMD5: 66D66EC7458EDB420FE969BE636F7F67.uxx checksum: c78915550dee4110f8827a84a5675dae (0.1ms)
Warning: Failed to load 'BTPPUser': Can't find file for package 'BTPPUser'
Warning: Failed to load 'BTPlusPlusv0994_C.u': Can't find file for package 'BTPPUser'
Warning: Failed to load 'BTPlusPlusv0994_C.u': Can't find file for package 'BTPPUser'
DevMD5: 1542D4954E3A947A74E2AEBDDF7D0F7E.uxx checksum: 8c8869990cf97c644408258868ef2d82 (0.1ms)
DevMD5: CountryFlags2.utx checksum: c3f83052c711e29a1c7e99aa53682f92 (1.2ms)
DevMD5: CTF-BT-II-DoubleVision.unr checksum: 8cf1f78a2d6c95dc949fe6b0c121bbe6 (29.1ms)
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
DevMD5: Dasbot.umx checksum: 101fa50018bade817df8961350c36f70 (3.8ms)
DevMD5: 2E0105154E353D8924EDB48DF6416D34.uxx checksum: e2f5b3d772c2be58d269448b8e17a67e (0.2ms)
DevMD5: 4DF59BA011DAA3D3500087C6E7D45DFC.uxx checksum: 27a40a3e1c4686e10ce59a3baeb70df1 (0.0ms)
DevMD5: 7254A827428A39B9A5360AADCEB24F96.uxx checksum: e44ef43d6750c503f05ccbee7ab80870 (0.4ms)
DevMD5: MOVERSFX.uax checksum: 9463f351579fc4ce65d3cabec7fa869e (12.1ms)
Warning: Failed to load 'NexgenCC': Can't find file for package 'NexgenCC'
Warning: Failed to load 'Nexgen112N.u': Can't find file for package 'NexgenCC'
Warning: Failed to load 'Nexgen112N.u': Can't find file for package 'NexgenCC'
Warning: Failed to load 'Nexgen112N': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'NexgenABM102N.u': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'NexgenABM102N.u': Can't find file for package 'Nexgen112N'
DevMD5: EAA28E794A3CD893E6F93FBA8C9A5510.uxx checksum: ade1cc29264854efa15eeaeab1db862a (0.1ms)
Warning: Failed to load 'Nexgen112N': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'NexgenPlus100N.u': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'NexgenPlus100N.u': Can't find file for package 'Nexgen112N'
DevMD5: 121B36CF4ACBD41131AA578973EDE381.uxx checksum: 63fd16473919bd3a2171818be73e05d8 (0.3ms)
DevMD5: 32AC087A4351EDBB66CBCDA7547187B9.uxx checksum: c5b80f47547ed4fe87a956748b22e617 (0.3ms)
DevMD5: 31B371604303CC91BB6793B31CB80BC5.uxx checksum: d57330109a88a8f4394f81eff5f25e9f (0.0ms)
DevMD5: EB75B649453E9079962AE9A6EF43B5E8.uxx checksum: 6657b87ef6d47b46a4eeed233cae4058 (0.2ms)
Warning: Failed to load 'Nexgen112N': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'ServerAffiliates106N.u': Can't find file for package 'Nexgen112N'
Warning: Failed to load 'ServerAffiliates106N.u': Can't find file for package 'Nexgen112N'
DevMD5: SGTech1.utx checksum: 6596727a9f7a5f241127c0a2dbc8d389 (57.8ms)
DevMD5: 9581A8C447F3CE54DC849BBA90448629.uxx checksum: 64bd9d24d755ebc1d91ea3bf9b9fe66c (0.1ms)
DevMD5: 95C1443E40221F28DF97DDBC044E515B.uxx checksum: a43fbf778aa7639b39d8c567742c26ae (0.3ms)
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
DevMD5: 944205774B038989EFC5B58033549969.uxx checksum: 912b5aa4b998a26471265d8b1b437825 (53.7ms)
DevMD5: 6F4C227F470BAEA6CAF15DA1E726FD3A.uxx checksum: 25a5015eef84e0fdd02f487e8b158d97 (1.4ms)
DevMD5: 2F33FCED4824B3F594DAF9B181D736DB.uxx checksum: 7e93232c15c2d0f790569479116dcbd5 (31.5ms)
DevMD5: EB2AC6F04A4E2C1EEBD74982F3582E66.uxx checksum: 36ce835232c30746b5553f1195e79f9d (0.1ms)
ScriptLog: Client Area is None for Transient.DownloadFramedWindow0
UdemoDownload: UT Demo Manager sucessfully downloaded all necessary files for Demo!
Warning: Failed to load 'Texture CTF-BT-II-DoubleVision.Screenshot': Object not found: Texture CTF-BT-II-DoubleVision.Screenshot
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
ScriptLog: Client Area is None for Transient.DownloadFramedWindow1
UdemoDownload: UT Demo Manager sucessfully downloaded all necessary files for Demo!
Warning: Failed to load 'Texture CTF-BT-II-DoubleVision.Screenshot': Object not found: Texture CTF-BT-II-DoubleVision.Screenshot
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
Warning: Failed to load 'Dasbot.umx': Package 'Dasbot' version mismatch
Log: appRequestExit(0)

If there is a bypass for this, this may restore many hope for a lot of players who wished to share their old demo online through youtube or whatever. Like beside the Yes and No click box, just let it/say Just play anyway!

Demo:
https://www.mediafire.com/file/x3a3ir44d5nj1d5/CTF-BT-II-DoubleVision_6-10_19-51-32.zip/file
Link to the map: http://www.i4games.eu/maps/CTF-BT-II-DoubleVision-v2#comments
If you are missing anything else let me know.
I'm not having issue with the demo atm, it just these mismatch issue are known.
Also, when it said it downloaded all files successfully but it didn't get the Dasbot.umx because the one I have in my system is a dummy file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.