Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

How double Precision is working in Star Citizen

Turrican187Turrican187 Member UncommonPosts: 787
edited April 2016 in Star Citizen
OK let me explain how they "solved" this issue in easy words.

First you have to realize that Ships are moving in a different grid than characters or everything a character can move around physically (let it be a mug or a crate - Doors and other shipstuff including the pilot are not physic elements)

For ships we have a 32Bit float grid where lets say 1 Unit (sx1) is 10cm for players we need a much smaller grid lets say 0.5cm therefore we need a subgrid cx1.cx2 where cx1 and cx2 both are 32bit floats. (for simplification I use x only imagine x to be a 3D positional Vector).

x1 is something that the engine knows and thereof knows it has to be enforced to place the stuff. x2 is something that has been tackled on top. Now the following scenario happens
------------------------

Commander Catskills is entering the Game
CPU: oh nice a Commander, lets place it cx1.cx1 <updatecalls>
GPU: Aye, done, CharacterCatskills rendered character is happy
CPU: he's running around to his ship at sx1, he is now at cx1. <updatecalls>
GPU: Everything fine, CharacterCatskills done rendered
GPU: Everything fine, Ship done rendered
CPU: Wait I meant cx1.cx2 <updatecalls>
GPU: Oh ok error corrected CharacterCatskills rendered
(at this point we have a jiggle on the character asset, which is increasing with the Lenght of the float delta to the scenes Vector.zero).
CPU: CharacterCatskills sits down on his pilot seat I merge Pivots and make him a ship asset <updatecalls>
GPU: thats fine, rendered on sx1 ... less work to do Character is on the easy-to-calculate grid
Commander Tom is entering the Ship and a few people are loitering on the platform
CPU: there is CharacterTom on the ship at cx1.... <updatepassed>
CPU: there is Character003 on the Platform at cx1.... <updatepassed>
CPU: there is Character003 on the Platform at cx1.... <updatecalls>
GPU: Busy time, all placed, rendered and all are happy
(We have a graphics lag at this point before the 2nd detail grid could be placed)
CPU: wait wait GPU here you have the detail grid for the characters (cx1.cx2) <updatecalls>
GPU: sorry my fault all rendered and happy.
Commander Catskills now starts the engines and lifts off
CPU: ok sx1 is now moving, CharacterTom is in the ship and has to be moved to cx1... <updatecalls>
GPU: ok Charactere placed and rendered, ship rendered - but CharacterToms Physic Hitbox is now clipping through the Ship.
(this is the point where someone falls through a solid mesh - the problem is growing with more stuff to calculate)
CPU: Oh noes you didn't wait now we have lost our precious crewmember, detail grid is now redacted but here you go it should have been cx1.cx2.
GPU: character could not be placed, error correction at work, Ship gone, CharacterTom is now outside the ship EVAing.

----------------------
With a 64Bit GPU system (which does not exist) they would only need to pass one 64bit variable per axis and it would be fine, due to the system that 2x32bit vectors are passed, the vector is doing all kinds of  strange stuff that you can see. this problem is not fixable, a faster system would lower the jiggling and fall through stuff but they will still occur (no matter of how fast the system would be).

No doubt they have double precision with all bugs that comes with it.
BUT 2x32Bit is 33Bit NOT 64Bit

When you have cake, it is not the cake that creates the most magnificent of experiences, but it is the emotions attached to it.
The cake is a lie.

Comments

  • GrumpyHobbitGrumpyHobbit Member RarePosts: 1,220
    Not to be picky but you know this how?
  • Turrican187Turrican187 Member UncommonPosts: 787
    Not to be picky but you know this how?
    Cause they said so in 2015 how they are planning to do this - It was in one of their shows and the actual client tells me they did it exactly this way

    When you have cake, it is not the cake that creates the most magnificent of experiences, but it is the emotions attached to it.
    The cake is a lie.

  • ErillionErillion Member EpicPosts: 10,329
    Is this a quote (then please link) or written by you ? 


    Have fun
  • Turrican187Turrican187 Member UncommonPosts: 787
    edited April 2016
    Erillion said:
    Is this a quote (then please link) or written by you ? 


    Have fun
    This is written by me, based on what the developers said how they wanted to bypass the 32bit problem.
    I won't rewatch all Videos from 2015 to give you a video link where they exactly said that.

    But as you have seen them all somewhere in the back of your head there is a developer saying something like" we will use 2x 32bit Floats"

    The common human mind made out of 2x32Bit = 64 Bit (hey it's doubled) but actually it's 33Bit :)

    When you have cake, it is not the cake that creates the most magnificent of experiences, but it is the emotions attached to it.
    The cake is a lie.

  • ErillionErillion Member EpicPosts: 10,329
    Given the explanation you have given in the OP and the explanation that "its is not fixable" .... why is it not happening all the time ?

    It HAS happened occasionally ... its the basis for bug videos that have been shown.

    But it is clearly not happening all the time ... in fact ... very rarely, if the many hours of SC videos and twitch streams i have seen and the many hours i have played are any indication.


    Have fun
  • DistopiaDistopia Member EpicPosts: 21,183
    edited April 2016
    Not to be picky but you know this how?
    Cause they said so in 2015 how they are planning to do this - It was in one of their shows and the actual client tells me they did it exactly this way
    Tried searching for the terms you're using in regard to SC, all I found were two links to a thread from the SA forums dated much earlier than 2015 I believe they were from 2010. OF course there was a certain name mentioned as well.

    Sadly I can't access those threads lol. 

    https://www.google.com/search?client=opera&q=Star+Citizen+2x32+string&sourceid=opera&ie=UTF-8&oe=UTF-8#q=Star+Citizen+2x32+floating

    For every minute you are angry , you lose 60 seconds of happiness."-Emerson


  • ErillionErillion Member EpicPosts: 10,329
    edited April 2016
    Distopia said:
    Not to be picky but you know this how?
    Cause they said so in 2015 how they are planning to do this - It was in one of their shows and the actual client tells me they did it exactly this way
    Tried searching for the terms you're using in regard to SC, all I found were two links to a thread from the SA forums dated much earlier than 2015 I believe they were from 2010. OF course there was a certain name mentioned as well.
    These links on technology in SC might help:

    http://www.gamersnexus.net/gg/2019-star-citizen-multi-crew-interview-with-chris-roberts

    http://www.gamersnexus.net/gg/2119-chris-roberts-on-star-citizen-network-and-render-pipelines

    http://www.gamersnexus.net/gg/1854-chris-roberts-pax-east-instancing-and-zoning

    http://www.gamersnexus.net/gg/986-star-citizen-interview-technology

    The first link may be the more interesting one w.r.t. the OP

    "....Roberts cites the move to a 64-bit engine as a major milestone for the Cloud Imperium Games team, emphasizing that the move to 64-bit will allow greater precision and size for positional space. Of the move, Roberts said:

    “There's a bunch of stuff that's really exciting. [The move to 64-bit] is less about 64-bit compile [and] more about 64-bit positional space […] Pretty much every 3D engine works in 32-bit, which is great for a normal FPS – because you usually don't have maps that are bigger than, say, 8km x 8km – but for us, we've got star systems that are millions of kilometers across and the precision of 32-bit just isn't enough.

    We've spent about 8 months now – it's done – moving the engine over to 64-bit world space coordinates. The last part of it was moving rendering over so it became camera-relative. The GPUs themselves generally don't work in 64-bit – they work in 32-bit – but since you generally won't be able to see millions of kilometers away, the visible range is inside 32 bits, but the overall system space is much bigger. ..."


    Also interesting:
    http://www.scqa.eu/?keywords=64

    Various answers on 64 bit in SC.



    Have fun






  • DKLondDKLond Member RarePosts: 2,273
    edited April 2016
    Hard fact as pure speculation based on nothing at all again, I see ;)

    Star Citizen is like The Secret World - only in real life. You know, every conspiracy theory known to man has come true at the hands of Chris Roberts!
Sign In or Register to comment.