stijn-volckaert / udemo Goto Github PK
View Code? Open in Web Editor NEWDemo Manager for Unreal Tournament
Demo Manager for Unreal Tournament
=============================================================================== ______ _______ _______ _______ |\ /|( __ \ ( ____ \( )( ___ ) | ) ( || ( \ )| ( \/| () () || ( ) | | | | || | ) || (__ | || || || | | | | | | || | | || __) | |(_)| || | | | | | | || | ) || ( | | | || | | | | (___) || (__/ )| (____/\| ) ( || (___) | (_______)(______/ (_______/|/ \|(_______) 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. ===============================================================================
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.
Live gameplay vs demoplay comparison
(Offline tests)
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:
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]:
behindview 0
, behindview 1
or a free camera
Using seekto seems to not update the remaining time properly. Here is a video example:
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.
During demoplay - if you move while crouching, you can hear footstep sounds.
Demo file example:
CrouchFootsteps.zip
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.
No
, close dialog, no any play.
Yes
, make next dialog:
But this not change anything.
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:
If DemoPaths (where demo files are stored) contains spaces, then in demo manager after selecting a demo and pressing PLAY button, nothing happens ( 469c ), like it couldn't locate demo files.
Seems like the same issue like in The Uniform Server Zero: https://doc.uniformserver.com/#Server%20Paths
For example
SeekTo 40%
SeekTo +10%
SeekTo -10%
Percentage value unroll to absolute value from full time of demo.
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 !
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.
Can we get a build release of this? Many thanks
Reproduce:
reconnect
(not select it in menu)Expected result: Demo start auto recording after reconnect.
Actual result: Demo wont record.
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 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!
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.
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.
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...
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:
Here is how it looks like with Movie Demo Manager (works only on 436):
Basically second example is my proposal. When you exit 3rd person it needs to place you next to the player you were spectating.
As mentioned on Discord, the demo manager always shows my currently set in-game username when watching demos (instead of the nick the POV-user had when the demo was originally recorded).
When you are moving around while you're in the air, the walking sound never stops. Longtime issue.
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.
For this specific purpose, I wanted to change the shock to a custom one for a frag movie.
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
or
All things must be moved in native, where can be sorted more fast, and without any limits.
Instead of digging through the alphabetical order of the demo, can we have it to be sorted by recent recorded date?
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.
Issue similiar to (might be related or not, I dunno) :
Steps to reproduce using Mod > UDemo Manager GUI 3.5.1:
Additional workaround steps which don't work either:
Finally, additional workaround steps which do work:
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.
In demo manager detect if demo recorded from spectator and check 3rdperson checkbox, for play it.
In other case user start look from spectator eyes, and nothing useful here. This be discussed in #31
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
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.
Both sound and visuals of the hammer are breaking, while charging. This is a long time issue present in every demo manager.
Unable to play a f..king demo ! When playing locally demos recorded as a client on an online server, a player does not move across/along the map, only stuck rotating in same place at the beginning. It makes the whole udemo functionality broken and useless, and until it will be fixed, currently gameplay of ut need to be recorded using screen capture programs.
This video will demonstrate the issue better:
When I play demo 1, I try to play demo 2 after. Then when I go back to demo manager I see demo 1 instead of demo 2.
Strange warping issues every time you use sniper zoom. This was playtested offline in single player, without any mods.
[DM-Deck16]_1-29_18-36-31.zip
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.
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).
Every time you die or you get killed, the kill camera goes epileptic. The higher the framerate the worse it gets.
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.
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.
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.
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
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:
Reproduce:
Expected result: Old demo stop play, and start play new demo.
Actual result: Old demo stop play, new demo not play.
I think it occurs on older demos, like from 2004 and older (Pure6E and before)
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.
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.
Would be nice if it was possible to cut demos.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.