Search Unity

Draw-Distance: What's the plan? -- HLOD + Imposters + FloatingOrigin

Discussion in 'World Building' started by awesomedata, May 21, 2020.

  1. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    I was digging into some open-world game designs to try to understand how they might be created in Unity. Only one of them I came across completely stumped me:

    Zelda: Breath of the Wild

    Trying to determine how the hell they got a Floating Origin system on the WiiU that apparently had an HLOD system behind it (for epic zoom-outs) all while they must have had some tool to make seamless-looking Imposters (while still having nice physics and everything across the whole world).

    Even with assisted tools like Houdini, making something like Breath of the Wild in Unity (a WiiU game I might add), as far as technology is concerned, seems to be technologically impossible the more I look at it.

    What kind of technology is planned for this kind of worldbuilding -- if any?
     
  2. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Anybody at @Unity have any idea?
     
  3. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    Anybody??
     
  4. Neto_Kokku

    Neto_Kokku

    Joined:
    Feb 15, 2018
    Posts:
    1,751
    Well, there's your answer. It's not impossible in Unity at all, it's just a lot of blood, tears, and reinventing the wheel. I'm working on a Unity project that involves us rolling our own HLOD tools, via a convoluted process of getting Unity to spit out merged model files to be processed by Simplygon command line interface and imported back, which we then use in place of unloaded scenes.

    (Sometimes I wonder if we could have simply re-created the whole project on UE4 in all the time we spent re-creating worse versions of their features, but it's not my call to make).
     
  5. cosmochristo

    cosmochristo

    Joined:
    Sep 24, 2018
    Posts:
    250
    ok, I will try to give some answers. It would have been more helpful if you explained what you meant by technologically impossible, but that's ok.

    Firstly note that I was taught in computer science that single precision roundoff occurred at 6 decimal digits and this knowledge gave me a rule that pretty much governed my design. It is easy to trust and accept the boundaries you are taught and then say "impossible".

    In the late 90's I began questioning things and in the early 2000s I started a completely different approach that lead to my original floating origin paper and later my PhD. One of the cornerstones of that thesis is the position independence principle for equations that happens to mirror foundation ideas for relative physics thought that began after Newtons laws and Hawking very succinctly explained: there is no absolute space or position [ for objects and nature]. Well, I say there is also no absolute space or position for [many] algorithms based on positional parameters: ie. most of what game developers do!

    From the time of "The continuous world of Dungeon Siege" there has been some detailed explanation of some approaches to large continuous spaces. That approach was about dividing space into segments where there was some limitation on the distance one could go from the origin. It also handled preloading and transitions across boundaries. This seems to be fairly common.

    Floating origin exploits position independence and also the variable resolution property of floating point space. It essentially moves things in reverse within a continuous space and there are two main reverse transformation approaches, the most common being shifting, or "rebasing" when a threshold distance is reached.

    If by "impossible" you are saying there are certain limits on precision that effectively put up a barrier to scaling beyond a certain limit, then I have to disagree :) because it depends only on how you manage accuracy and space, not a given precision representation.

    I have been using floats and limited doubles in my full scale space framework. However, I have been told "impossible" or, "can't" so many times that I went through my current code and removed all doubles. Now there are only floats and float operations and I can still navigate continuously from space to ground on a full scale Earth and then out into space all the way to Mars and down to sub millimetre scale. That is *not* to say floating origin alone achieves all this: it was design to be used with other origin centric methods, but it can do a lot of the heavy lifting on its own.

    In short, given enough knowledge of the subject, scaling and accuracy depends only on your imagination, thinking (think relative not absolute), and the design and algorithms that result from the way you think.

    hmm, that was a bit of a diatribe, wasn't it? but they do say, beware of what you ask for :p
     
  6. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    I simply meant technologically impossible without rewriting Unity's current tools/technology.

    So I probably should have clarified that. Things like particle systems, physics, scene positioning, LOD, etc. aren't flexible enough to handle the jarring "re-shifting" of the world position. Even with current Asset Store solutions, I've seen vehicles fall through the world, for example, when origin-shifting occurs (since they aren't all moved simultaneously due to the work being split across the frame).



    No, I don't mean "impossible" in that way, but I still have a slight bit of a problem with your statement.


    The problem here, for me, is the "how 'you' manage" part.

    You and I may manage things very differently in life -- for example, I tend to value great design and manage doing that as effectively and as efficiently as possible over the prospect of managing intense/hardcore programming to fix a broken design.

    Unity's engine has no design, and therefore is a bit "broken" to say the least.

    Unity provides an engine, but an engine that does not take this possibility into account in its design, and therefore, based on the limitations of that design, the user is expected to fundamentally rewrite Unity in order to make this kind of positioning work. However, for those of us who have no access to source code, it simply isn't possible to rewrite Unity.
    On the other hand, with engine-level support for floating-origin, one does not have to rewrite the fundamental systems Unity provides.
    But to argue your point (just a little) -- technically, you can program World of Warcraft in ASM, so it is not "technologically impossible" to do so -- but it is essentially still "technologically impossible" for the common-man. In order for the world to improve, people's idea of "impossible" really needs to change to a definition that does not involve super-powers or extreme cases of OCD and/or autism to accomplish. :/

    These feats are amazing -- but they aren't something you can expect from the average person.

    Perpetuating the myth that the "just work harder! -- you can accomplish anything!" mindset perpetuates is not helpful at all at the end of the day. Everyone is working as hard as they can -- and to tell them to "just work harder" is not very kind.


    That being said -- Thanks for your reply anyway! :)
    I do value the words of encouragement at least -- but as said above, although your intentions are good (and your heart is in the right place), it still isn't right to assume everyone isn't already working as hard as they possibly can. :(
     
  7. tredpro

    tredpro

    Joined:
    Nov 18, 2013
    Posts:
    515

    you are rewriting but adding to it. dont blame unity because you refuse to learn. i have been using floating points and building huge worlds in unity since unity 2017 or even before (maybe not before. i dont remember). but the problem here isnt unity but yourself. i do notice your post is a couple years old so hopefully you have better yourself and have worked on learning more to expand your knowledge.

    if you dont want to learn in an area that your game needs then you need to hire someone for that area. that isnt a unity thing. thats game development in general and pretty much how any job works.

    again i do hope you chose to learn more and didnt choose to give up or anything because your original post does make it sound like you were new to game