Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411489 Posts in 69371 Topics- by 58428 Members - Latest Member: shelton786

April 24, 2024, 03:32:15 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsZSPACE - First person galactic exploration and interior decorating
Pages: 1 ... 5 6 [7] 8 9 ... 12
Print
Author Topic: ZSPACE - First person galactic exploration and interior decorating  (Read 27860 times)
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #120 on: April 29, 2019, 05:07:20 PM »

Okay, I know I said I was going to write about the terrain scatters, but I am going to wait on that until I actually get them talking to the terrain. And I need to do some important optimizations to the terrain soon, so I probably should wait until those are done before I get ahead of myself talking about what a great success the terrain scatters are.

So instead, I've finally gotten around to re-implementing the replicator. To start off, I changed its location - I wasn't happy with the big cabinet things, and removed them. There's now several more square meters of space to play with! The new replicator position is simply inset into the rear wall:



Which I like much better.

The meat of the replicator work though was actually loading props for it to spawn. I decided to really sit down and work out a system for loading props rather than putting it off til later. Unity's AssetBundle system was what I ended up using, even if it didn't work at all like I was expecting. But I did get it working (it remains to be seen if I'm managing loaded assets correctly...), and now it can load any number of arbitrary props for spawning. Soon will be the interface and animations, but spawning things with the debug menu works great.

I don't really have any prop models handy. So... as a proof of concept for loading mod packages, I present to you a once-in-a-lifetime crossover event with a very wholesome game





Also pictured: the Important Brick test prop.

Next time I'll take pictures that aren't gas giants and moons I swear
Logged

Schrompf
Level 9
****

C++ professional, game dev sparetime


View Profile WWW
« Reply #121 on: April 29, 2019, 10:43:35 PM »

The sight is beautiful
Logged

Snake World, multiplayer worm eats stuff and grows DevLog
szczm_
Guest
« Reply #122 on: April 30, 2019, 09:28:13 AM »

WOBBLEDOGS!

And yeah, your game too. Cool.

By the way, I love your project and all, but (when) are you planning to update your spaceship model? Because this screenshot:



Your planets look good.
Logged
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #123 on: April 30, 2019, 09:45:04 AM »

Quote
(when) are you planning to update your spaceship model?

I am not 100% sure on the interior and window layout - after I'm settled on that then I will make a higher detail version (inside and outside). Relatively soon I think I will thin the frames a bit and/or darken them
« Last Edit: April 30, 2019, 10:06:14 AM by NovaSilisko » Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #124 on: May 03, 2019, 09:34:14 PM »

Been doing the replicator effects. Have a top secret video, exclusive to tigsource and whoever else I link it to



« Last Edit: May 03, 2019, 09:52:04 PM by NovaSilisko » Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #125 on: May 05, 2019, 12:27:31 AM »

Meanwhile, I've been thinking of other ways to customize the interior beyond just placing props in it. Two main things come to mind.

Firstly, the ability for the player to set the color and texture of the interior (call it smart nano-paneling, or something), independent for walls, ceiling, and floor. This would happen via a customization interface, probably near one of the doors.

Secondly, and perhaps more interestingly, I think I want to replace the two yellow cross pillars with a pair of retractable walls. Or possibly several segments. Then the player can even customize the layout of the interior, if they would rather break it up into two or three rooms, or include some partial dividers, and so on.

Partly this is motivated by the fact I am rapidly eating up all the wall space the player would otherwise have available, and dangit I want to have picture frames the player can put on the wall, which is difficult when all the vertical surfaces available are covered with doors or windows. So being able to bring in some new wall area at will would be fun. The only really difficult thing is making sure it plays okay with the interior lighting, as well as doing some collision checks to make sure neither the player nor any props are liable to get smooshed by the wall as it extends.

A more annoying question is where to put the walls when they're not deployed. They'll probably have to telescope from some direction or another to be able to concievably fit in the space available in the ship interior. I suppose they could be materialized using the replicator tech, but ehhhh... that just doesn't feel right.
Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #126 on: May 07, 2019, 12:35:41 PM »

So, I've been up to a few things in a few areas.

First of all: oceans!







Mercifully, they turned out easier to get working than expected. There's no physics involved yet, though, nor is the nearby visual anywhere close to done. Eventually I'd like to get to the point of a tessellated surface with 3D waves and all that...

I thought about a variety of different ways to actually render the ocean mesh, but at least for now I've gone with a large pre-subdivided disk mesh that follows the player around.



I thought the performance impact of reshaping the mesh over and over would be prohibitive, but it turned out to not be too bad. And you don't even need to reshape the mesh very often anyway. For mostly-spherical objects, you never need to, and for more oblate objects, reshaping the disk only every several dozen kilometers is plenty. Otherwise, you can just keep relocating the same mesh with no real noticeable change.



I also fixed something that's been bothering me for a long time. It's... complicated to explain, but before, the texture coordinates of the terrain were unreliable and every time the local origin was adjusted (which needs to happen to keep objects within 32-bit limits, such is the price to pay when dealing with large scales), the textures would visibly jump in position. But now I changed how the origin gets updated; rather than arbitrary increments when the player moves, it's based on a grid. And every time the origin updates, it moves by a reliable regular increment, which means I can set the texture mapping to match that same increment, which makes the textures properly line up without any modification to the actual generator.

That probably made no sense.

But the important part is that that was the only thing in the way of me adding larger-scale texture detail to the terrain, and now it's fixed.

So, here is the terrain before the updated texturing:



And after:



It's a subtle difference, but it's definitely an improvement. I'm going to add large scale normal maps as well to help increase the apparent detail of the terrain.



Finally, I've been doing a number of quality-of-life improvements to the game. Small things, but they help the feel greatly. There are still a number I want to do soon, but I've just finished two today. Firstly, the game now fades to black briefly when going between navigation/cockpit/interior, which feels so much nicer than a sharp snap.

Secondly, and more directly useful, I finally brought back the relative velocity marker in the navigation screen, which shows you the next 60 seconds of your trajectory after exiting hyperspace. Relative velocity is a very real concern when navigating; you retain the velocity you had when you started your hyperjump after you arrive, and need to use your engines to cancel it out. This marker helps a lot by both letting you know where a safe place to exit is, as well as allowing you to target your outbound trajectory so that it puts you into a planet's atmosphere for free braking.



Perhaps later I'll make it so you can customize the length of time it predicts ahead, although too much time would start to get quite inaccurate due to gravitation and such. I don't really want to get into making a trajectory predictor based on planetary gravity, because I'd have to basically clone the whole solar system and run the copy forward, for very little real benefit. It's just meant to be a basic assist feature, rather than a highly accurate trajectory predictor.

Next up, I'm finally going to get started on the autopilot functions. The most important is the velocity matching function, which automates the process of cancelling relative velocity as mentioned earlier, so you can head into the back and replicate a sandwich or something while waiting for it to finish.

Others include a "maintain orbit" function that will adjust your trajectory to a circular orbit at your current altitude. If left in this mode, it will also periodically re-adjust the orbit if it drifts too much. Another is the auto-land function, which is self-explanatory. And lastly the hover autopilot, which is more of a flight assist feature than a full autopilot, changing your controls so the ship controls more like a helicopter, with the landing thrusters auto-throttled to cancel out vertical velocity when near to the terrain.
Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #127 on: May 10, 2019, 09:44:39 PM »

Still going at making things look and feel nicer. Last night and today I went through and redid the shaders for the navigation screen, tidied them up, and made a few changes to the look. There are now unique icons for different bodies - simple dots for planets, suns for stars, and question marks for unexplored bodies of unknown type.




And the day before that (or maybe it was the day before?) I did something that I've been meaning to for a long time - seam prevention. At the borders between different terrain LODs, the resolutions obviously don't match up, which can lead to gaps. But now chunks generate a border mesh using a geometry shader:



Which does a good job of hiding any gaps. There's still some annoying traits to it, though... while there was basically no performance impact adding this to the normal shader, adding it to the shadow caster pass drops my framerate by 20-30. I had hoped I wouldn't need it there, but if there is a shadowed area visible through the trim mesh (for instance, shadows on the water mesh under the terrain), that shadow shows up right through and... well, it undoes the work I did to hide the seams, pretty much.

I feel at some point I may have to completely jettison Unity's built in shadowing in favor or something more suited to handling the extreme distances I need... I don't look forward to that.

Speaking of things I'm not looking forward to, I also finally added proper fog for atmospheres near ground level. I'm still very unhappy with the atmosphere visuals, though, both above and below. None of it is using actual atmospheric scattering, and while I'm not sure I want to go all the way with that, I do know I need to move to some sort of volumetric solution or it's never going to look how I want.



To say nothing of the water shader barely even existing... still so many things to do.
Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #128 on: May 10, 2019, 10:08:33 PM »

Although I have long felt dissatisfied with the visuals of the game as it stands, it's taken me this long to start developing a real idea for what I want it to look like. I have always been fond of the clean, slightly stylized (and rather idealistic) painted and airbrushed style of a large quantity of space art from the 50s to the 80s. The Colliers "Man will conquer space soon" article is a particularly famous example using this style. Sharp lighting, clean textures, with a subdued color gamut that, while having respectable variety, doesn't enter into the realm of garishness. I think I've mentioned it before, but the aesthetic of original series Star Trek is another inspiration, with similar traits (not much surprise there considering it comes from the same era and subject)



Partly this is motivated by the desire to give the game a unique look, but also because I believe pursuing photorealism too much is a fool's errand, especially for a single-person project like this. The closer you try to approach a real look the more obvious any deficits get sort of an artistic uncanny valley, and of course the more difficult actually achieving it gets. This also falls under one of my personal design maxims - "Consistency is more important than fidelity".

Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #129 on: May 16, 2019, 06:19:26 PM »

Kinda skipped a few days, but I started poking at interior stuff again. Just doing some basic layouts of interior walls. Still not sure how to pack them in there and deploy them in a way that makes sense, but one step at a time...



I think I'm set on the idea of letting the player choose what walls they want and where, just so the interior space can be configured to taste. The basic principle is simple enough - use a monitor and select which areas you want to have walls or doorways. Something like this:



Actually, maybe a list that lets you select from a bunch of different types of wall segment would be good. Solid walls, small doorways, large doorways, arches, etc...

Some annoying details nag at me though - such as lighting, for instance. I'd like to have each wall segment have its own baked lighting, but then it needs to somehow be separate from the lighting of the interior and not leave shadows behind when it's disabled... so I guess the only thing I can do there is bake some shading into the texture of it, rather than leave it to the built in lightmapper.





I dunno what it is, but it feels so nice having this extra coziness. The moodier lighting of smaller rooms when the ship is in shade is cool too, although probably won't be very conductive to arranging things...
« Last Edit: May 16, 2019, 06:35:28 PM by NovaSilisko » Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #130 on: May 25, 2019, 04:34:31 PM »

Grumble.

Been sidetracked by other things going on, but also have been stuck with the interior walls. The lighting just will not cooperate - been looking all through Unity's docs on how to improve dynamic lighting across objects, different light probe methods, proxy volumes, etc, but no luck. The previous images, I neglected to mention, were done with baked lighting. So... this is what it looks like right now, with dynamic:



It's just... off. And it's been slowly driving me nuts.

So instead I've been doing extremely boring things, preparing data structures for saved games, which has literally nothing visible to show so... yeah, that's it for now I guess.
Logged

fluffrabbit
Guest
« Reply #131 on: May 25, 2019, 05:08:53 PM »

Raytraced lighting is always going to look better. I can't speak for Unity specifically, but it looks like you could use some ambient occlusion. Baked AO with lightmap UVs would probably be best, either precalculated when the walls are rearranged or as part of the wall models. As a last resort, there is also screen space ambient occlusion.

Also maybe bump up the specularity or lower the roughness of your floors.
Logged
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #132 on: May 25, 2019, 06:28:44 PM »

I'm actually already running SSAO - unity's built in implementation is surprisingly nice. But yeah, some baked lighting in the textures themselves is probably going to be necessary. FULL baked lighting won't really work too well though, considering the sun angle is obviously arbitrary being that you're in a spaceship. It'd just have to be the interior lights, but I guess that's not too big of a deal.

That's where the proxy volumes were supposed to come in - I forgot to link it in the last post - https://docs.unity3d.com/Manual/class-LightProbeProxyVolume.html

It's supposed to map a bunch of points across a volume to let a mesh interact more fluidly with the baked GI



But no matter what I do it doesn't seem to really do anything different. I'm sure it's possible, I just have to keep going with trial and error until I find the right combination of object setup and lightmapping settings to do what I want, I guess.


Logged

fluffrabbit
Guest
« Reply #133 on: May 25, 2019, 07:06:00 PM »

That explains a lot. A proxy volume is a whole bunch of light probes. Your typical PBR pipeline will have physically-based diffuse and specular light, and no doubt the image-based light blends well with the punctual lights like the star. However, shadow buffers are still a rough approximation which light probes don't affect AFAIK. This shortcoming is often hidden by PBR textures that include an ambient occlusion map (just a multiplicative factor like a lightmap for the small cracks). SSAO is itself a rough approximation, though I don't know how well Unity's compares against Blender 2.8 realtime AO, which AFAIK is not screen space.
Logged
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #134 on: May 25, 2019, 07:24:06 PM »

Oh yeah, I'm also not using the included PBR shaders but my own custom (non-PBR) ones, so hell, maybe I left out some important thing in the shader that would make it work better  Facepalm

Though it still acts pretty much the same way with those shaders, so hmmmph.
« Last Edit: May 25, 2019, 07:34:15 PM by NovaSilisko » Logged

fluffrabbit
Guest
« Reply #135 on: May 25, 2019, 07:36:49 PM »

Oh yeah, I'm also not using the included PBR shaders but my own custom (non-PBR) ones, so hell, maybe I left out some important thing in the shader that would make it work better  Facepalm
Don't do that. PBR is good. I'm using a custom pipeline as well (C++/SDL/OpenGL but same diff) and I am closely adhering to PBR best practices. I'm not sure how much of Unity's graphics features would plug into your pipeline, but it's better to stay close to that standard PBR model.

Also here is a GTAO effect. I don't know exactly how things work in Unity but it should be an improvement if the lack of a license in the repo doesn't bother you.

Also maybe increase the metallicity of the floors to make things blend more seamlessly via reflections, assuming whichever pipeline you're using uses cubemaps and/or screen space reflections.
Logged
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #136 on: May 25, 2019, 07:55:58 PM »

I have to be honest, when it comes to the broader-scale render pipeline stuff (especially in a modern workflow, which I'm still trying to learn), I have no idea what the hell I'm doing. I can do individual shaders just fine, but I have yet to really pry into Unity's new scriptable pipelines and have been sticking with the default one so far.

Part of my reluctance to go all-in with PBR, HDR, and other newfangled-10-years-ago features has been ongoing indecision on the final look of the game, although as mentioned a few posts back, I am increasingly gravitating (ha) toward a specific sort of clean stylization... and with that in mind, I don't know what direction I want to take the general structure of my shaders. I don't even know how well PBR shaders play with that sort of look. I mean, I've used PBR stuff before, but have never really gotten very adventurous with it.

As for reflections/cubemaps... that's kind of tough. See, everything's all rendered on different layers and occupies different coordinate spaces. In the interior, in the interests of not having to deal with a nightmare scenario of a collection of physics objects moving at thousands of meters per second, it's always the same orientation - Y-up (RIP z-up, but I have to abide by what unity wants), no matter what orientation the "real" ship is in. It all matches up to the player with a few different cameras that are transformed appropriately.

So... if I want to have some sort of reflection map that shows both interior and exterior to get nice PBR lighting and everything, I need to somehow layer it as well as transform it so that it's properly aligned to match the interior space. I don't know how, or if, I can do that.

I'm already losing track, my brain is frying. This game is going to kill me, I swear.
Logged

fluffrabbit
Guest
« Reply #137 on: May 25, 2019, 08:34:00 PM »

In a nutshell, PBR is just principled rendering where material properties are decided per texture pixel. To avoid the gritty "realistic" CoD look, just use flat colors for most PBR properties, either a number or a texture that is just a single solid color. The standard properties are albedo (AKA base color), metallic (AKA metallicity), and roughness (the inverse of which is sometimes called smoothness). All the other textures, including normal maps and ambient occlusion maps are just effects to "enhance" the grit of the scene should you choose to use them. I recommend reading the PBR section of learnopengl.com for a good primer on the theory.

I'm with you on HDR. Having the exposure pulsate to match the brightness of the scene is reminiscent of a cheap camcorder, which is not what I would want. However, sunlight is many times as bright as any other part of the scene, so light probes internally use high dynamic range to represent that. Low dynamic range is values 0.0 to 1.0 and high dynamic range is values 0.0 to infinity. The sun is often 10.0 or so, meaning 10 times as bright as the screen. If sunlight were clamped at 1.0 it would be obscured by objects' textures.

Quote
As for reflections/cubemaps... that's kind of tough. See, everything's all rendered on different layers and occupies different coordinate spaces. In the interior, in the interests of not having to deal with a nightmare scenario of a collection of physics objects moving at thousands of meters per second, it's always the same orientation - Y-up (RIP z-up, but I have to abide by what unity wants), no matter what orientation the "real" ship is in. It all matches up to the player with a few different cameras that are transformed appropriately.

Different layers is a great way of doing it. Baked light probes don't capture the outside. Perhaps more importantly, as your ship moves through space you get not only different angles of space but also different positions, so the apparent magnitude of a planet can be twice as big a moment later than it was before, thus you might want realtime soft reflections of some kind (see below).

Quote
So... if I want to have some sort of reflection map that shows both interior and exterior to get nice PBR lighting and everything, I need to somehow layer it as well as transform it so that it's properly aligned to match the interior space. I don't know how, or if, I can do that.

Screen space reflections (not physically accurate but pretty). That's the easy way, and it combines exterior and interior visuals.

If you are using a skybox or HDRI for the starry sky, you can use that for reflections on the outside of your ship when in deep space, which gives you specular irradiance (physically accurate). Realtime environment mapping (the engine generates a cubemap each frame looking at 6 different angles) can show planet reflections against your ship (not physically accurate unless you turn on realtime specular irradiance rather than baked, which is slow).

I have a hunch that Unity's built-in PBR pipeline does 99% of what you need.
Logged
nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #138 on: May 25, 2019, 09:26:12 PM »

I think I need to reboot my brain a few times before I can fully get into this, but I did remember that the simpler shader interface it offers also has easy access to PBR functions, so I think that's the direction I need to go. I can have the finer control of the visual that I am looking for while still getting modern PBR benefits.
Logged

nova++
Level 4
****


Real life space alien (not fake)


View Profile
« Reply #139 on: May 30, 2019, 09:51:32 AM »

Bleh. I've had to pump the brakes a bit on this - who knew making an entire galaxy could be tiring  Facepalm

Rendering stuff like I've been talking about is definitely not my forte. Still feels weird and arcane and it wracks my brain thinking about it too much.
Logged

Pages: 1 ... 5 6 [7] 8 9 ... 12
Print
Jump to:  

Theme orange-lt created by panic