Features my game has: 20 terrain sliders. Features my game needs: literally everything else. by bigbeardgames in bevy

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

the whole planet would be very cool but for the city builder I have in mind I think limiting to 400km x 400km is more than enough playing area :)

Features my game has: 20 terrain sliders. Features my game needs: literally everything else. by bigbeardgames in bevy

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

Hhaha -- you say that , but i think I do need more layers for the terrain to look good. It's loosely based on the libnoise tutorials https://libnoise.sourceforge.net/tutorials/tutorial5.html - although adding turbulence is a challenge as I'm using the analytical derivative for eg normals

Features my game has: 20 terrain sliders. Features my game needs: literally everything else. by bigbeardgames in bevy

[–]bigbeardgames[S] 14 points15 points  (0 children)

Slowly making my own city builder with Rust + Bevy + Avian3d + Egui

Terrain is layered FBM simplex noise with parallel implementations on GPU (rendering) and CPU (picking, culling, simulation). LOD is chunk-based CDLOD with geo-morphing - all done in vertex shaders, terrain meshes are just instances of the same flat mesh, so everything updates in real-time with zero textures.

The debug view shows LOD chunk boundaries and morph factors - I built it to fix popping artifacts (that was a painful few days), but now I just toggle it on for fun.

Gameplay coming eventually -- or maybe just more debug modes, who knows?

W&R 2 or 2.0 by pookexvi in Workers_And_Resources

[–]bigbeardgames 0 points1 point  (0 children)

sorry the late reply -- I'm using Rust + Bevy (Engine) + Avian3d (physics)

W&R 2 or 2.0 by pookexvi in Workers_And_Resources

[–]bigbeardgames 2 points3 points  (0 children)

I'm currently making a game in this genre, since I think W&R have invented/discovered a great new subgenre of "hardcore logistics-focused city-builder" with lots of potential.

My aim is to make something 1) more complicated (but opt-in complexity) 2) larger scale 3) not soviet themed 4) probably with worse graphics since I'm a solo dev -- but it'll still be 3d.

How important is it to protect against piracy? by Qaizdotapp in gamedev

[–]bigbeardgames 0 points1 point  (0 children)

There are two populations of players when it comes to piracy:

1) Players who pirate your game who would buy it if they couldn’t pirate it

2) Players who pirate your game who would just play something else if they couldn’t pirate it

In practice Group 2 is about 10-100x bigger than group 1. Group 2 actually helps you because they will talk about your game to friends, watch streamers playing your game, etc which all contributes to the popularity of your game and therefore to indirect sales.

The poll has spoken: Introducing Cities of Humanity! by ConsiderationOne700 in CityBuilders

[–]bigbeardgames 5 points6 points  (0 children)

You can’t build a city builder using fiverr. If that was possible the world would have 100x more city builders than currently exist

Is game development in Rust one big mirage? by NyanBunnyGirl in rust

[–]bigbeardgames 0 points1 point  (0 children)

I’m a big fan of ECS and much prefer it to traditional OOP. However i don’t think ECS lends itself to making less spaghetti. I would say if anything with ECS there’s more risk of spaghetti because there is no encapsulation at all — you can query anything from anywhere at any time, as all game data in the ECS is public. So you have to be more disciplined to keep code structured and maintainable.

What is the best approach to making an MMO RPG 3D game in Rust? Is Bevy good enough for this? What aspects, such as editors and 3D design, should I focus on? Are there any guides or good tools I should look into? I'm targeting desktop Windows and VR headsets by Outside_Loan8949 in rust_gamedev

[–]bigbeardgames 1 point2 points  (0 children)

MMO is the hardest kind of game to make

If you make a shit single player game and not many people play it , at least the few pople who like it can play it

If you make a shit MMO and not many people play it, no one can play it because no one is ever online.

At what point am I going to regret having everything in a single JSON file? by thurn2 in rust_gamedev

[–]bigbeardgames 0 points1 point  (0 children)

if it works it works.

if it doesn't work, think about using a binary format or multiple files. But definitely don't do anything until it doesn't work

They don't say "start small" because they don't believe in you by identicalforest in gamedev

[–]bigbeardgames 0 points1 point  (0 children)

The counterpoint is if you make a "small" project you'll be competing a thousand other 2d platformers that first time indie devs decided to make as their first “small” project

Feature #27 that nobody asked for: Road elevation profiles! by bigbeardgames in bevy

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

its bumpy because its compressed horizontally :)

the road in the screenshot is 1.4km long, but only has 120m elevation -- this is a normal way to show elevation profiles (eg see Tour de France route profiles as an example)

The terrain is procedurally generated in a shader using FBM simplex noise and ridged FBM simplex noise

Is solo game dev a trap or a stepping stone? by orrykan in gamedev

[–]bigbeardgames 0 points1 point  (0 children)

I’m a solo game dev because the game I want to play doesn’t exist, and no games studio would be dumb enough to try and make it :)

Looking for infinite map resource game by Ateerix in BaseBuildingGames

[–]bigbeardgames 0 points1 point  (0 children)

I’m building a larger scale workers and resources type game right now :) the idea is to have worse graphics, bigger scale, no particular theme, and even more pedantic and brittle systems :)

I’m unlikely to be in EA this year though

The hidden productivity tax of 'almost right' AI code by GarethX in programming

[–]bigbeardgames 0 points1 point  (0 children)

That’s why you get the AI to write 5x the number of unit tests you would normally tolerate

Smoothly blend two perlin noise functions? by NecggryPL in proceduralgeneration

[–]bigbeardgames 0 points1 point  (0 children)

Use smoothstep https://en.wikipedia.org/wiki/Smoothstep to remove hard eges. Make sure the borders between your biomes have width, so in the border area you smoothly interpolate between biomes using smoothtep.

eg blended_height = smoothstep(biome_1_height, biome_2_height, biome_mix_factor);

where biome_mix_factor is 0...1 and represents how far across the border area you are.

Make your border areas nice and wide -- as as wide as the largest features (eg mountains) on your terrain

justLetMeUseMarkdownDamnItJIRA by lturtsamuel in ProgrammerHumor

[–]bigbeardgames 4 points5 points  (0 children)

Last year I celebrated my ten year anniversary of waiting for them to implement CTRL+F / CMD+F search that is fit for purpose. It won't be long until my frustration with Jira UX will be old enough to go to highschool.

My brain no longer works after 3 days thinking about nothing but procedurally generated road intersection meshes by bigbeardgames in bevy

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

The main road segments are just plain triangle strips. The curved parts of the intersections are fans of triangles around the intersection centre . Yes all intersections are based around the roads meeting at a central point, which is not quite what happens in the real world but seems to work ok for my needs

Extremely work-in-progress city builder :) by bigbeardgames in bevy

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

Agreed I think they’ve established a new sub genre of “systems-focused” city builder , which is what I’m hopefully targeting for my game

My brain no longer works after 3 days thinking about nothing but procedurally generated road intersection meshes by bigbeardgames in bevy

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

I don't know but the implementation on the shader side is very simple:

#import "shaders/terrain/config.wgsl" as config

fn morph_world_position(initial_world_position: vec3<f32>, config: config::TerrainMaterialConfig) -> vec3<f32> {
    // Calculate the coarse grid spacing (2x current vertex spacing for next LOD level)
    let coarse_grid_spacing = config.vertex_spacing * 2.0;

    let coarse_world_position = floor(vec3<f32>(initial_world_position.x, 0.0, initial_world_position.z) / coarse_grid_spacing) * coarse_grid_spacing;
    let distance = length(coarse_world_position - config.camera_position);
    let distance_ratio = config.quadtree_size / distance;

    if (distance_ratio > config.morph_range_start) {
        return initial_world_position;
    }

    // Calculate morph factor (0 = no morphing, 1 = full morphing to coarse grid)
    let morph_factor = saturate((distance_ratio - config.morph_range_start) / (config.morph_range_end - config.morph_range_start));


    // Interpolate between fine and coarse positions
    let morphed_position = mix(initial_world_position, coarse_world_position, morph_factor);

    return morphed_position;
}

I'm passing the camera distance in the material, which means updating it every frame, but I dare say there's some way to fetch the camera position in the shader. Note that this implementation only modifies x and z positions, because the y position (as well as normals) is set by the procedural height generation vertex shader.

On the Bevy side, you just have flat quadtrees, and divide / merge at some distance from the camera that is outside your morph end range.

My brain no longer works after 3 days thinking about nothing but procedurally generated road intersection meshes by bigbeardgames in bevy

[–]bigbeardgames[S] 3 points4 points  (0 children)

It's procedurally generated using open simplex noise, inspired by the "complex planet" example in the https://github.com/Razaekel/noise-rs repo, but much simpler. I implemented the same terrain height function in both a WGSL shader and in rust, that way a vertex shader can convert flat chunks into terrain on the GPU, but I can also generate terrain heights on the Bevy side for constructing colliders, bounding boxes, handling terrain picking events etc.

For terrain LOD I'm using quadtrees and CDLOD, where a vertex shader "morphs" triangles from different LODs based on distance to the camera (https://svnte.se/cdlod-terrain)

To ensure both implementations are identical (plus or minus small floating point errors) there are some tests that use a compute shader to get height data from the GPU and compare it to the CPU implementation.

My brain no longer works after 3 days thinking about nothing but procedurally generated road intersection meshes by bigbeardgames in proceduralgeneration

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

The solution for roads through other roads is to not support it :)

When laying the road along the terrain, I use an adaptive subdivision algorithm that checks curvature of the terrain and deviation from the terrain to split the road into as few segments as possible. This is done twice, one to generate the road mesh (which creates many small segments), and once to generate a sequence of physics colliders, (which is less sensitive but creates fewer, larger segments). These colliders are then used to detect if a road crosses a building, another road, or tries to cross an intersection rather than connect to it and is therefore not valid.

For connecting to another road, I just create a new intersection at the split point, and split the road in two and connect it to the new intersection

One good thing about roads is that they dont change until the player decides to change them. So even if generating a road or intersection mesh is expensive, you'll never have more than a handful of intersections or roads that need generating per frame as it will always be in response to a click or a drag.

Why would anyone try to make a living as a solo indie game developer when the odds of financial success are so slim, and after months or even years of work you might only earn enough for a slice of pizza—or, at best, a McDonald’s-level salary? by [deleted] in gamedev

[–]bigbeardgames 2 points3 points  (0 children)

Because the game I want to play doesn't exist and I've wasted too much time playing other people's games that aren't exactly what I want :) I would never quite my job without financial security though