Help for Balancing, Procedural Generation and Gore

Godot Version

4.2

Question

Hello friends, I recently finished my first game made with Godot and published it. This project took me about 2-3 months and taught me a lot about game development. I can now see the shortcomings of my game more clearly from the feedback it received. I would be very grateful if our experienced friends could help me.

  1. Game Balance: My game was a clicker idle game. Therefore, planning the player’s progress is of great importance. Since this was my first project, I didn’t think much about this aspect, but now I see that it may be the most important aspect of the game. My questions about this are as follows: Is it possible to express progressions with mathematical formulas to provide the player with the optimum experience? For example, those who use RPG Maker know that when adjusting the required XP to level up, the game engine automatically creates a visual level curve based on the value of XP in the game engine. This calculation is quite helpful. What programs can be used to create a similar curve? Which area of mathematics should one work on to calculate level advancement, upgrade costs, and express them infinitely? Can Excel be used for these tasks? If so, do you have any recommended tutorial sources?

2) Prodecural Generation: I believe that interactivity and the sense of exploration are quite important in games, but as an indie developer trying to do everything alone, time and money are limited for producing assets. Therefore, I see procedural generation as the best alternative to this. How can a simple procedural generation be done in Godot?

3) Gore System: My next game’ll be a top-down action game, and I want to add a gore system where blood spawns where enemies are shot. If it won’t be too complicated for me, I also want to add the generation of gibs and meat where enemies are hit. What are the most suitable nodes for achieving this effect? Additionally, which methods and functions can be utilized to create a simple gore system?

Your questions are a little broad, thus tough to answer.

1: Godot has a Curve node, but it’s more of a visual tool and probably won’t do what you expect it to do out of the box. You could set up a CSV file listing your XP thresholds using Excel and have the game parse it, but that (obviously) wouldn’t allow for infinite level ups. As you already seem to have realized, the easiest way to achieve that is defining a function that calculates the level up points from a formula, e.g.:

var xp := 0
var level := 1

func gain_xp(amount: int) -> void:
    xp += amount
    var level_up_threshold := level * level
    if xp > level_up_threshold:
        level += 1

Here the threshold formula is simply the product of the current level with itself, so for level 2 you’d need 1 XP, for level 3 you’d need 4, for level 4 you’d need 9, and so on… But of course, you could make this formula as complex or simple as you want!

2: People have written entire books about procedural generation! It’s an advanced topic and I’d advise you to stay away from it for a while. Also, if your goal is to save time and money: procedural generation is probably not the right tool. Achieving good procedural generation results can be a ton of work!

3: Will your game be 2D or 3D? Either way, the most common way would probably be to just spawn a bunch of red colored particles when something gets hit. No magic to it.

1 Like

I agree with @njamster on the procedural generation, unless that is part of the gameplay of your actual game, and just things you want to use in the editor, just do things manually.

Even if you want to do procedural generation later (like another game), knowing how to do it manually is necessary to making procedural generation tools that are more pointed and optimized, and mainly only doing the things you can and want to do procedurally, as not all things really warrant that kind of toolset.

1 Like