Urgent fix needed for camera interpolation

Cheo

Active member
Hello, I'm making this post to highlight the scale of an issue that is already known and ask anybody for help and suggestions.

UCC 3.0.10 introduced a much need camera interpolation fix that made the camera actually smooth on high framerates - until that point, it always felt like playing at 60fps even on a 300hz monitor. However, this fix is not complete and faces a severe limitation, which is moving platforms. More specifically, objects on the MovingPlatform layer and rigidbody platforms, which include driveable and rideable objects. You can see this for yourself in the demo scene in the Moving Platforms, Ride and Drive sections - when standing on one of these objects, the camera is no longer correctly interpolated and we're back at 60fps. It is also worth noting that setting the newly added Inteprolate bool on Ultimate Character Locomotion to false also cancels the fix.

At first, it may sound like we can make do with this limitation, but my intention here is to prove that we can't. For an asset with "Ultimate" in its name, it turns out that many mechanics from iconic games cannot be reproduced without limiting the framerate.

For example, take the amazing boat chase at the opening of Uncharted 4 :


I'm currently trying to replicate this mechanic with Ultimate Seating Controller, the basics do work and I know I can get there eventually, but I can't release a game containing that without either locking the framerate to 60 or expecting players to accept a huge frame drop !


Same for the funny mine cart section from Resident Evil 4 Remake, it can't be properly reproduced !


And moving platforms from most 3D platformers, take Super Mario Galaxy :


Or hell, every open world game like GTA that allows you to get in and out of all sorts of vehicles !


Many games that released decades ago run perfectly well on a 300hz monitor, I can't think of many PC games today that are released with a 60fps lock, the most famous example would be FromSoftware games like Dark Souls, but still it's a big company that makes renowned games so they can more easily get away with it, for small indies like many of us here having this limitation doesn't help us at all, since our games usually have smaller scales and limited graphic quality the last thing we need and the players are expecting is for our games to not run smoothly ! I mean you've all heard about games combining bad graphics with bad performances and getting mocked and badly reviewed as a result, right ? Well if you don't mind me saying so we're facing a similar problem here !!

So please dear Opsive devs, I hope you understand the urgency of the situation, I don't expect you to solve this issue overnight but you absolutely need to make this your number 1 priority right now ! I am available for testing if anybody asks, and invite anyone on this forum who may have an idea on how to fix this problem to share their thoughts. Thanks for reading.
 
This limitation is caused by the rigidbody objects being updated at a different rate than the controller. I have this on my list of things to look at in the future but one idea right now is to have the vehicle also interpolate using the simulation manager. This will update the vehicle at the same rate allowing you to not be framerate locked.
 
Look the whole point of this post was to say that this issue can’t wait and should be UCC’s top priority right now, any dev with a 60+ monitor will agree with me !
If this trick using the simulation manager sounds like a possible fix then please give it a shot, once again I can test it if necessary.
I’m not familiar with the Simulation Manager so I have to ask : would this somehow affect the vehicle’s overall movement ? If yes then that fix would become a bandaid, as we should be able to keep its intended movement.
 
This will be fixed, but right now I am not able to dedicate time to it since it could take weeks of trial and error to get it working. This is a tricky issue, something that I may need to consult with the Unity engineers at Unite with. This problem also isn't specific to the Ultimate Character Controller. The Kinematic Character Controller would also have this same restriction since they are both updated similarly. This same issue would have also existed within version 2 of the controller.

would this somehow affect the vehicle’s overall movement ?
No, it wouldn't.
 
The Kinematic Character Controller would also have this same restriction since they are both updated similarly.
It doesn't have it ! And neither does Physics Based Controller, I just tested these assets and I can tell you that their cameras remain smooth as butter when standing onto moving rigidbody platforms at 300fps, with rigidbody based characters.

If the Simulation Manager fix does work, then that would be awesome - but in case it doesn't, I have to remind you that Physics Based Controller costs about 28 dollars, and Kinematic Character Controller nothing at all, while UCC costs about 260 dollars. Maybe I've got some nerve to say this, but if you really can't find a solution then I'd suggest you pay for contact with Unity.
 
All of the rigidbodies within the Kinematic Character Controller have the PhysicsMover component attached to them which is similar to what I was referring earlier to registering with the Simulation Manager. If it works there then it'll most likely work with a similar setup with the Ultimate Character Controller, but right now I just don't have the time to really sit down and dig into it. I'll let you know as soon as I do (and thanks for testing!).

I don't have the Physics Based Controller but based on the description it's a Rigidbody controller and not a kinematic controller so it's a different update rate. This is similar to what version 1 of the Third Person Controller did.
 
Hi Cheo,

Just been checking my FPS rates too. May seem silly question but is this in the editor or build settings? I'm just using a laptop on RTX3070 (Decent laptop)

In editor mode the game I'm making often floats around 60 FPS to 125 much lower than build (I think editor takes a hit on FPS). But I find fine for editing.

Build settings though I'm getting 165+ FPS and more constant seems pretty decent for the amount of things going on in my game basically once I hit build I have a decent running game.

I tested (Whilst player stood on moving platforms) in the demo and I'm getting a constant 162-165 FPS in the editor. I haven't done a build yet for the demo though.
 
Last edited:
Hi ! You've got the exact same GPU as me so you should know what very high fps look like, that is if your monitor goes beyond 60hz ? If so, then you should see a clear cut difference with the camera when standing on moving platforms or driving the demo car - it doesn't matter how high your framerate is, even if you get 300 fps when you're standing on one of those platforms the camera isn't correctly interpolated and feels like you're playing a 60fps game. Unless you have a 60hz monitor I'm very surprised by what you said ! Lastly I'll add that this issue occurs both in editor and in build.

Edit : Just so we're on the same page, if you're using Windows, when you go to Parameters -> System -> Display -> Advanced Display Settings, you should find a dropdown for the refresh rate. Is it at 60hz or more ?
 
Last edited:
Just checked I'm definitely using 165hz. I totally get you now. You mean feels like as opposed to seeing 162-165 or even 300 FPS. Seems smooth and slick certainly not jittery or of concern to me personally but ill keep experimenting I may be missing something need to compare more. One thing I did observe when I had too much content in my assets folder my game things definitely took a toll regardless to FPS in the editor went way below 60 FPS was really jittery and high total spawn counts of enemy (300+)
 
When you're rotating the camera around while standing on the train from the moving plaforms section, does the camera rotation feel as smooth as it is normally when standing on the ground ? And are you using the latest version of UCC ?
This should have nothing to do with the content of the project or even the scene, this limitation is precisely about ucc and moving plaforms with rigidbodies, you should be able to see the contrast in a big project as well as in a project containing UCC only.
 
I'm on version 3 (3.0.08) The camera rotation seems identical to me for both scenarios to me personally in both on train and off. Agreed having tested rotation either way on or off the train though there seems to be noticeable frame drop with no FPS to indicate this it was at 162-167 FPS, but I had to look very carefully but it appears when going into camera rotation max (stick fully pushed) speed I can notice regardless to on or off a platform though for me. I personally don't see this as an issue but I can get why it could be.
 
You’re not using the latest version ! A camera interpolation fix was introduced in 3.0.10, go to the package manager and get the latest version (should be 3.0.11), you’ll then see the difference, and keep in mind that the actual fps count is not what matters, you should see what I mean once you update !
 
I'll finish my total project then try the update at some point. Sounds like your right though can you revert to previous version until there is another update or which ever version visually functions better?
 
I don’t know if there’s a way to download older versions of ucc, but you can always use those you have already downloaded, you can find them in the Opsive -> Installs folder.
Could you please try the latest version in a separate test project and confirm whether you have this camera issue ?
I’d also recommend updating UCC to the latest version for your project, especially with this camera smoothness fix - despite the rigidbody platform issue it remains an overall huge improvement. Each version also usually comes with its share of small fixes.
 
Thanks Cheo, good point. I have now used the latest version in a new separate project (version 3.0.11) and looked at very carefully. The camera is seriously smooth both ground and on platform way better than before, cant believe I never noticed this definitely keeping updated from now on although I think its tricky mid project. I have carefully looked at both Platform and train scenario both work very well on camera works fine checked rotation and with stick full down rotating this time I cant notice anything just super smooth now when rotating.
 
Last edited:
… Well damn, if you saw the smoothness enhancement but not the contrast when standing on the train, then I’m at a loss for words here ! You might as well be the first person to say this, so if you're positive about the camera remaining smooth all along and if you'd like to help with this issue, I think you can ping Justin for that !
 
Is the latest version of NVidia being used too? I have ran into issues with not keeping updated before. Be interesting to see if others have same issue too with the camera since the update.
 
Just giving you guys a heads up that it does make sense for the character to be locked to the fixed timestep when the character is not being interpolated (such as on Rigidbody objects). I just quickly did some tests and have some promising results but am far from it being ready to fully test. I don't want to make any promises for what will be in the next update but it's my goal to have this in it
 
That's great ! About NVidia Silver that can't be related, we're talking about some physics related camera interpolation, this must be entirely on the scripting side, especially since we can get this issue with a high frame rate count to begin with.
 
Top