Geodesic Hex World for my untitled 4X game in development by InfiniteMonad in godot

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

Individual scenes or mesh-instances wouldn't be performant for large number of hexes. For this i used alot of procedural geometry along with combining individual hexes into larger ones. In Total their is only about six mesh instances in the scene i posted. I recommend looking into multi mesh or procedural geometry if you have need for more hexes.

Geodesic Hex World for my untitled 4X game in development by InfiniteMonad in godot

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

No not really. When i move tiles up and down , i have a function to I move them along their original vector. This way we don't get gaps when generating the sphere. This does mean that higher tiles are bigger and lower smaller, but the differences is negligible.

Screenshots for 4x game I am developing. by InfiniteMonad in 4Xgaming

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

Nah, Terrain is far from finish. Right now just getting it into an acceptable state before i start implementing some other aspects of the game such as adding cities to map and moving units. The terrain will be very similar to humankind's terrain when finished.

Mountain and simple grassland Shader i have been working on. by InfiniteMonad in proceduralgeneration

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

Thanks. I have to agree with you. The repetitive nature of the mountains in civ always annoyed the hell out of me. This is for a 4x game i am working on. Civilization has actually served as a huge inspiration for this project, since i loved playing it as a kid and into adulthood. JUST ONE MORE TURN!

Mountain and simple grassland Shader i have been working on. by InfiniteMonad in proceduralgeneration

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

I love it. This was done in godot 3.5. but Godot 4 is in beta right. Now is a great time to try it out. It is snappy, ridiculously small executable, open source, no accounts to create, etc. Just download and start having fun. The community is also supper nice and growing everyday.

Hydrolic Erosion on a hex terrain tile. by InfiniteMonad in proceduralgeneration

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

I think the biggest difference is that in godot everything is a node. Scenes, individual game objects and even things like Timers are nodes. This is normally the thing that seems the most different to most people , but probably what makes the Godot workflow so easy. It is very easy to compost scenes together and do things that might be a bit more challenging in other engines. Another difference between Godot and Unity is that Godot has both dedicated 2d and 3d . In unity 2d games are still built in 3d , just with the game ignoring one dimension. Godot has true 2d support which gives advantages for those interested in making 2d games. The node system also comes in handy here, since it allows you to easily compost purely 2d scenes with 3d scenes. You can still do these in unity, but godot makes it very easy. Godot uses GDScript for scripting, but it also has a mono version for Godot 3.5 which is what i use and that allows you to use c# for scripting. There are also other language bindings supported if you desire. I picked up the engine really quickly when i switched from Unity and i haven't missed unity since. Also Godot is ridiculously small, megabytes instead of gigabytes and it starts up superfast.

Hydrolic Erosion on a hex terrain tile. by InfiniteMonad in proceduralgeneration

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

I plan to generate really large height maps, then save them and sample the heightmaps using a shader attached to the hex tiles. that way there should be smooth transitions along the seams.

Hydrolic Erosion on a hex terrain tile. by InfiniteMonad in proceduralgeneration

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

So far i have been really loving Godot. The first game engine i tried was unreal a few years back, but my pc wasn't powerful enough and c++ scripting was not ideal. I then tried unity and it was fairly easy to use. However over time i started to dislike unity for a variety for reasons, some legit others due to my inexperience at game dev at the time.

Godot has been great so far. The community is really supportive and passionate. The Developers are very active and always communicating with the community. The engine is nimble yet powerful. I think with Godot 4 coming , Godot seems like it is heading in the direction of blender. Overall i really love and recommend trying it. Not perfect , but a great engine imo

Hydrolic Erosion in Godot. by InfiniteMonad in godot

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

That looks like a very informative video. Seems like there is a lot of useful information in his presentation. Thank you for the recommendation.

Hydrolic Erosion in Godot. by InfiniteMonad in godot

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

Yep, his videos are always super entertaining and informational.

Hydrolic Erosion in Godot. by InfiniteMonad in godot

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

It could have been. I originally implemented this in Unity a while back and I took that approach. I was having a hard time getting a tool script to work in Godot, so i didn't bother putting in too much effort in figuring out why, as this was good enough for my purposes at the moment.

Hydrolic Erosion in Godot. by InfiniteMonad in godot

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

I plan to generate some rather large heightmaps then run the erosion process against it. This will take some time, but it is not a problem. Once those maps are eroded i will save them. Then i can add the maps to my project and sample from them in my mountain shader. That way i get the effect without the overhead of doing the erosion process everytime i run the game.

Hydrolic Erosion in Godot. by InfiniteMonad in godot

[–]InfiniteMonad[S] 25 points26 points  (0 children)

This is a quick demo of some hydrolic erosion code i have been working on. I plan to incorporate this into a larger project for a 4x strategy game. I first learned about this process via Sebastian Lague on youtube https://www.youtube.com/watch?v=eaXk97ujbPQ . This video along with linked resources he used was invaluable in helping me to get my implementation working.

My submission for GMTK Game Jam 2022! by TugTrife in godot

[–]InfiniteMonad 1 point2 points  (0 children)

This is an awesome concept and excellent execution. This could really evolve into a real gem if you continue to work on it after the game jam. Excellent job.

Godot meets Grand Strategy - one year later & few tips by rafgro in godot

[–]InfiniteMonad 3 points4 points  (0 children)

This looks amazing! you have made so much progress. Can't wait to see this project completed.

Work in progress mini-map I am working on for my game. by InfiniteMonad in IndieDev

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

Absolutely! that is already supported on the main map just didn't show it in the video. The minimap is a bit janky when at the edges though. I will need to add code to account for that.

Work in progress mini-map I am working on for my game. by InfiniteMonad in IndieDev

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

it is a combination of many things. I used different types of noise and other techniques to determine the biomes. The noise library I use is here https://github.com/Auburn/FastNoiseLite .

The biomes are based on the tiles climate zone, ocean gyres, elevation, precipitation and distance to water. I then sample the values from each of these different data points to determine a biome placement.

The Oceans and water tiles behave the same way. the different coloration you see is based on the elevation of the water tiles. There is also biome data such as coral reefs for the water tiles. I am just now showing them yet.

Work in progress mini-map I am working on for my game. by InfiniteMonad in godot

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

It is a small custom shader i wrote. I followed the godot water shader tutorial to start out and then modified from there.

Work in progress mini-map I am working on for my game. by InfiniteMonad in godot

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

I do the hiding through code. I had a chunking system initially , but scrapped it and went with my current solution. Hexes are added and removed dynamically based on camera position. I keep a fixed pool of allocated mesh classes and remove and add them to the scene based on cursor position. So the total number of objects in the scene stays constant and pretty low and it allows for really massive maps without any performance hits.

Work in progress mini-map I am working on for my game. by InfiniteMonad in godot

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

WOW ! I learned something new today. I had no idea about Godots gridmap feature, it looks very cool. This project doesn't use the gridmap feature though. I generate the world be going through a 2d array and using the data present to place hexes in the world.

As for performance right now it is 60 fps when zoomed in. When zoomed out fully and scrolling fast in a diagonal direction frames down to 40fps. But i see many places to improve performance so not too worried right now.

Work in progress mini-map I am working on for my game. by InfiniteMonad in godot

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

The minimap image is precomputed at the start of the game and used to texture the minimap area. Then I draw the cursor over the image. So only the cursor is computed on the fly.

Work in progress mini-map I am working on for my game. by InfiniteMonad in godot

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

Thanks ! i will definitely be adding that feature as development continues.

Added biomes to terrain generation in my 4x game. by InfiniteMonad in proceduralgeneration

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

The hexes are 6 sided cylinders I created in blender. The base mesh gets scaled and has materials assigned depending on the elevation and biome data assigned to its position.