Return to “General”

Asteroid Popping Example

I was just watching recent footage from No Man's Sky on youtube and noticed they had asteroid popping, made me think about way back when, when it was an issue discussed in the dev logs and such. Well it looks like No Man's Sky didn't solve it and since the release is slated for two months from now I don't imagine they're planning on making it any prettier than it is atm.

Here's where it happens:

It's also worth mentioning that everything pops in this game, ships as well. But i guess it's all a result of their "no-loading-screen" feature.

Re: Asteroid Popping Example

The question isn't if there is popping, but how this popping actually happens. Imposters play an important role in this and the way the dev makes the transition between imposters and the actual 3D objects is as much as crucial as the looks of the imposters themselves. As narwhalz said, Josh tried to come up with a good solution for this and there are several devlogs regarding this topic.
I have been - and always shall be - your friend.

Re: Asteroid Popping Example

I thought the amazing Space Engine handled the popping problem very effectively.

When you zoom in to one star among thousands, the transition from 2D image to 3D object is seamless.

To be fair, though, in Space Engine objects are separated by enormous distances. So it's extremely rare that more than one thing needs to transition from image to object at a time. That may not be true for a game that has lots of densely packed asteroids, many of which could make that transition at nearly the same time. So the popping problem might actually be harder to solve for asteroid fields.

(Although now I'm curious to see how Space Engine handles planetary rings....)

Re: Asteroid Popping Example

As Lum said, Asteroid popping has a lot to do with how the game handles visual distractions e.g imposters. If you ever noticed Freelancer whenever you'd enter an asteroid field or a junk field there was a subtle though very noticable 'entry' into the field where there was a pure imposter overlay but as you entered that faded away to the real objects, there was in some cases even a noticable shade difference between the imposters and real objects, but once that transition occured you didn't actually notice it happening IN the field because of the object content.

So the trick is to visually distract the player so that as they're approaching the field it appears to exist as a low LOD mesh of objects, but objects that don't really exist (imposters) but with a more clean transition as you enter or fly through the field. The key I think to this would be about having the imposters which are not models or entities in and of themselves exist at a rough nearby location to the ACTUAL entities that exist. While it would be computationally more expensive (Rendering based on location) the visual effect will be much more subtle and much more sane and nicer to look at.

So the 'popping' shouldn't ever exist because there should always be some low LOD nearby mesh graphic (not entity) to fool you the player into knowing that there is an object there that hasn't loaded yet but will do so. The key is in the transition. It can look really good or really bad. Freelancers looked pretty bad, BUT unless you were going out of your way to notice it it wasn't really that big of an issue.

It depends I suppose on what kind of resources are being played with and how it is being done. NMS potentially has a lot more to render and has to play a lot more with computational side of things due to the planet rendering and personally the videos I've seen thus far their scaling is still way off. I'm not sure if it was intentional or what (e.g a custom build so that they could show more).

Re: Asteroid Popping Example

Murray said a couple of times that NMS's scaling was meant to be completely unrealistic for the sake of gameplay. I believe they use only "playing speed" (for in-planet and in-system traveling) and "traveling speed" (to jump to another systems), as opposed to, say, ED, where we have 3 types of speed ("playing speed", "in system speed" and "traveling speed"). So the time from ground to orbit is short and traveling between planets, stations and moons in the same systems are also short. That way, systems are designed to be "a little overpopulated" with objects in a relatively small pocket of space. In the last gameplay video we could see asteroids materializing as soon as they entered a determined distance from the player. Big objects appear sooner (or are already there no matter what)(planets, moons, stations, big ships or big asteroids) and small objects appear later (small asteroids, small ships, etc.). The popping of small objects was not instanteously, but was there and very noticeable.

Personally I don't mind how this happens. I can understand the difficulty of designing a perfect system while creating everything "on the fly". As soon the late appearence of objects don't interfere with gameplay, it's good for me.
I have been - and always shall be - your friend.

Re: Asteroid Popping Example

Yikes, that's a pretty extreme example ._. It wouldn't look nearly as bad if they were actually in an asteroid field...but it looks like random asteroids are popping up out of nowhere like space dust pops up in LT. You can get away with asteroids popping up when there are a bunch of asteroids around (e.g., what LT does, where the larger an asteroid is, the further out you can see it, so that you always have a sense of being in an asteroid field, which makes small-asteroid-popping less of an issue).

TGS pretty much said it perfectly, and it's what I've tried and am still trying to do with LT's LOD system. For every 'feature,' whether it be an asteroid field in space or a chunk of planet terrain, you want a coarse approximation that can fade well into true objects when we get closer.

LT's solution is, at the moment, having size-based distance culling (so you see big stuff from further away, no popping of massive ships), distance-based imposter-swapping (visible but far objects can be swapped out with a 6-triangle textured imposter), and, finally, adaptive mesh LOD (objects that are close enough to not be imposters will still use a hierarchy of coarser-and-coarser meshes the further away they are; I optimized this math very carefully to minimize the visibility of those LOD switches).

Perhaps the biggest remaining 'problem but not really game-breaking problem' (meaning I'd ship LT without solving it further if I'm unable to), is imposters for zones. As TGS said, Freelancer did a really nice job of distracting the player because zones had a simple but effective imposter (which replaces the need to draw *anything* in the entire zone!). I'd like something more sophisticated for LT, particularly because the nature of the objects in the field, the field density, shape of the field, etc. can all be arbitrary, so I'd need an algorithm capable of building the kind of imposters that Freelancer had (preferably higher-quality). My work in this area has thus far been fruitless...but there's always hope :ghost:

PS ~ The rest of the video was really inspiring..can't wait to play this game!
“Whether you think you can, or you think you can't--you're right.” ~ Henry Ford

Re: Asteroid Popping Example

I might be naive in this, but wouldn't it make sense, at least for things like asteroids to create the imposters first and then generate the models where the imposters are? Or perhaps have multiple passes for imposters, maybe first it's just a simple dot that a single pixel that grows until a 2d image pops up, which grows until a simple poly, and only later does it become a mesh. I would think that the main relevant information are the location distributions of the points and the final intended size, which grows or shrinks in relation to distance.
Image The traditional view of robotics, the metal servant who doesn't ask questions, is merely nostalgia for slavery.
User: JoshParnell is accountable for this user's actions.

Re: Asteroid Popping Example

from what i remember from the devlogs its already kinda how you described.

except that it runs kinda the other way around.

asteroids are generated, "photographed" into a couple of sprites for the imposter and then only the sprites get displayed in the asteroids position.
and replaced once the player comes close enough to see a difference between a sprite and a low-poly version of the roid itself.

But yeah, some few-pixel imposters would be an interesting idea to explore

Re: Asteroid Popping Example

Perhaps while it's the few pixel sprites, that's when it generates the photo sprite.

Also a thought for zone imposters, I would think that some of the work Josh did on translucency with ice would be useful. If you can show light scattering and reflecting through an asteroid, why not a zone? :geek:
Image The traditional view of robotics, the metal servant who doesn't ask questions, is merely nostalgia for slavery.
User: JoshParnell is accountable for this user's actions.

Re: Asteroid Popping Example

Josh said:
visible but far objects can be swapped out with a 6-triangle textured imposter
That particular piece of Josh's great comment got me specially curious. I mean, why 6-triangles? Would that be an adaptation using only the 3 visible quads of Risser's box-impostors devised in this paper: ... apping.pdf ?

As for the difficulties with impostors for zones, in the future whe you Josh feels time is write to get back to such details, I would love to read more on why that has not been working (i.e. why rendering importors billboards or impostor boxes for volumetric zones was fruitless).

Online Now

Users browsing this forum: No registered users and 1 guest