I managed to fix the moire by tweaking shadow settings (it was most likely self-shadowing)

I also managed to work around broken mapgen by implementing save in 3.x, and then loading the saved data. This works, which means the issue is somewhere in the mapgen itself, not in individual elements.

Next step: print all the mapgen debug stuff to a file so that I can compare what is different between 3 and 4. Re-add the AI to the loaded map (I was running into crashes, and nixing them nixed the crashes)

Around a week after I started, and the game is playable on Vulkan and behaves just like the 3.x version AFAICT - if you pick the loaded map, not the generated map:

https://github.com/Zireael07/FreeRoamRoguelikeRacerPrototype/tree/4.x

I also did some more minor improvements on a yet another separate branch as well as I've tried putting lights around the map, now that Vulkan effectively has no limit on the amount of lights, they can be used to light up the map at night-time

The single big issue to solve is to figure out what happens wrong with the mapgen...

Good news, the 4.x branch is now practically the same as the master branch was in 3.x (I managed to fix the mapgen issue, turns out the upgrade script messed up the line that was calculating relative positions)

Develop-4 branch continues to see improvements, this time around AI (I stopped them creeping around when they were supposed to stop, and made AI debugging better, I can even see the danger/interestst the context steering uses)

2 months later

I created a simple parking lot mesh in Godot and worked a bit on the AI so that the traffic can drive both to and from such a parking lot. There are also still some cases when the AI gets stuck on something but there should be less and less of those.

Bonus: I made the neon sign procedural thanks to a shader adapted from Shadertoy. The characters are fake (no longer real Japanese) but the diversity far outweighs the (linguistic) loss ;)

https://i.imgur.com/yjYQZSf.jpeg

I was also going to work on improving building generation, but every idea I get is either too time intensive for my current abilities (going through a massive rework/refactor at my day job) or reduces performance (matching up Kenney's pieces)

3 months later

Yep!!!! That's circuit (looped) races finally coming to FDB! Turns out finding loops in a graph is an already solved problem, only I had to google "cycles in graph" not "loops in graph". I tried finding all cycles in a graph only to have a brainwave today, that I don't need ALL of them just the ones through the intersection my marker happened to spawn on (current map is funny because pretty much every intersection HAS a loop through it, but I will later need some more code that checks if we happened to be a dead-end or something)

BTW that would've been much easier if we had a Graph in Godot itself, see https://github.com/godotengine/godot-proposals/issues/3848, instead of me writing clunky stuff while AStar2D/3D basically have a graph data structure already... :/

No racers/actual racing yet as the AI/race code will need some more tweaks before they're let loose 😛

Note: shaders are currently a bit broke, waiting for beta1 because I don't want to keep refixing them for every new alpha. That doesn't preclude AI/code improvements, though, see above 😉

4 days later

Finished implementing circuit races and decided it warranted a merge of develop-4 into 4.x, so any folks checking out the https://github.com/Zireael07/FreeRoamRoguelikeRacerPrototype/tree/4.x are now getting the full experience (save/load map, collidable boxes, new sign shaders, slight AI tweaks, parking lots, train crossing, and circuit races)

Of those, parking lots and new shaders require 4.x features (ribbon mesh and instance uniforms) so are unlikely to be ported back into 3.x.

Note, shaders are still currently broken and master will become 4.x capable probably when 4.x really lands, or in very late beta, so you'll need the 4.x branch for the predictable future.

a month later

Yet another update!

It took me a week, but I managed to implement elevated outer loop (think Wangan expressway in Tokyo).

There was a surprising amount of things that needed changing for this to happen: I had to implement slope for curved roads, then include negative slope too, then connect all the roads to their intersections if either the road or intersection was elevated, spotted an issue where some straight road meshes left holes (fortunately was a straightforward fix because the mapgen code is the opposite of simple), then fix physics as it turns out convex shapes don't work with curved/spiral meshes so I had to do series of box shapes, then implement stairstepping as colliders weren't perfectly lined up and the car could get stuck even before I did the box shapes trick... and on top of that I had to implement procedural POI placement because I now had to exclude all the elevated intersections (a garage or a dealer floating in the air looks just silly)

Finishing all this warranted another merge to 4.x branch, and next... likely saving/loading the game itself since the map is now interesting, events reset every day and there is stuff to do!

2 months later

Small update: my local copy now runs on Godot 4 beta 3.

I also made a couple of small improvements. Sloped curved road meshes are smoother, and so should be car movement up the slope.
Game still stutters a bit occasionally, I think this is down to doing a lot of things in physics tick (AI and movement, mostly). To combat this, I plan to move far-away AI (i.e. traffic out of player view) using tweens and to reduce the frequency of avoidance checks - but neither of those got anywhere yet.

All those will likely be committed/merged in the far future, when Godot 4 is actually a thing. (My side project, a Deus Ex like FPS, is totally waiting for Godot 4 to be able to reuse FDB's sky setup which is waay more performant than the 3.x equivalent)

3 months later

Project was updated to run on Godot 4 rc 1.

When Godot 4 is actually released, I plan to merge develop-4 with master.

Downloaded. Tried to run it:

I have tons of uncommitted/unpushed changes still lying around. The project is nowhere ready to be played by others. That'll likely come after Godot 4 stable.

EDIT: But I did push the API changes to 4.x branch, that should hopefully get rid of the errors you saw.

    Zireael But I did push the API changes to 4.x branch, that should hopefully get rid of the errors you saw.

    Yep, that bug has been fixed.

    I will wait until this interesting project is ready. 🙂

    23 days later

    Godot 4.0 has landed this week. I committed a fix to get the project to run on the stable version.
    Next week, merging branches and any remaining fixes (e.g. the .import files)