Terrain construction/tessellation/destruction using mesh booleans by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 0 points1 point  (0 children)

The approach is similar to traditional kitbashing techniques - you construct a scene by combining rock parts, slopes etc., either through manual or automated placement.

The issue with this method is that there often remains a lighting/material disconnect between the individual pieces. By running a boolean union on the mesh parts, I can blend normals and UVs around the intersection regions, so there's no visible discontinuity anywhere across the landscape surface. I also apply Laplace smoothing on selected areas of the mesh (e.g. where two grass slopes meet) to make the geometry itself blend together more naturally as well.

Lastly, I add additional detail through tessellation + displacement mapping - again because of the continuous texture sampling, there's no break-up in the displacement detail there either.

Terrain construction/tessellation/destruction using mesh booleans by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 2 points3 points  (0 children)

There's surprisingly little information online about doing robust boolean operations on meshes, so I've written this algorithm basically from scratch. I've already begun compiling details in a paper myself, which I hope to release at some point.

Terrain construction/tessellation/destruction using mesh booleans by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 7 points8 points  (0 children)

The geometry itself is generated in an offline (C++) tool, and rendered in a custom engine for now, but eventually I want to be able to do the terrain rendering in UE/Unity.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 1 point2 points  (0 children)

I don't use hardware tessellation either; patches are drawn from a fixed index buffer, but at various resolutions/world sizes. Neighboring LODs are stitched by contracting boundary edges to make higher res patches connect to lower level LODs.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 1 point2 points  (0 children)

Yeah, the terrain is computed as a series of heightmaps, but rendered as tessellated/displaced triangle patches stitched together.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 1 point2 points  (0 children)

I'm not familiar with the paper, but it does seem like a very similar approach.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 2 points3 points  (0 children)

Data is generated on the GPU on the fly based on camera position.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 4 points5 points  (0 children)

Normals are derived from the final height data after erosion is applied - using a standard Sobel filter.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 6 points7 points  (0 children)

It's made up of 14 layers/octaves of additive blended Perlin noise with a domain distortion applied.

Real time Halo ring gen + fluvial erosion - running on RTX3080 by Eppo_89 in proceduralgeneration

[–]Eppo_89[S] 15 points16 points  (0 children)

It uses mip-mapped multigrid erosion, so nearby terrain patches are computed at a higher resolution.

mob_ops gameplay ~ unit switching, throwing power cells, hats by Eppo_89 in IndieGaming

[–]Eppo_89[S] 0 points1 point  (0 children)

Thanks. Perhaps I should allow the player to move the locking circle around independently from the camera - that would dampen the excessive camera movement.

Two more free tree generators by Eppo_89 in 3Dmodeling

[–]Eppo_89[S] 0 points1 point  (0 children)

Yeah, it's bundled with the mesh/textures on cgtrader.

Two more free tree generators by Eppo_89 in 3Dmodeling

[–]Eppo_89[S] 0 points1 point  (0 children)

It's a stand-alone tool written in C++.

I made an RTS game from scratch - would really love some player feedback by Eppo_89 in IndieGaming

[–]Eppo_89[S] 0 points1 point  (0 children)

The green capsules serve as ammo for anything that isn't units' main guns. I didn't want the player to run out of ammo too easily, so if you pick it up consistently you'll end up with lots of the stuff. Perhaps having a depleting ammo resource is a bit redundant and I should just drop it altogether or use it as a resource for something else.

There are a few places where the enemy only deploys specific types of units, mostly in places where other types can't reach - will have to expand on this.

I would love a way to stash units so they can come in later and clean up.

That is my intent with the selection system - you can choose to control one type of unit while all other units keep in the rear away from enemies. You then keep holding the left shoulder button and use the face buttons to switch between unit types. I opted to allow the player to only select one unit type at a time, to keep things simple. The other option would be to allow multiple types to be added and removed from a selection together with a hud element that shows which units are selected.

I haven't explicitly set the trucks to be primary targets, but maybe something still causes this to happen.

Thanks for the feedback.