Dynamics Studio | Control game balance way easier

Get | Donate

Context

read through this part, it will make stuff way less confusing and teaches about balance.

Imagine your making a big game, and to maximize revenue you need to maximize retention, which can be a huge problem.

Your game can’t be too easy where the player finishes the game in minutes and doesn’t get the chance to spend Robux, nor too hard where the player notices zero progress and doesn’t even see value in putting in progress.

The perfect state of balance is pretty difficult to achieve, many people choose to solve this by writing long and confusing equations that are prone to so many issues to generate (prices, rewards, etc). Others try to write data manually which once more is usually based on your gut feeling which is time-wasting and can result in bad values.

Thats where Dynamics Studio comes in, Dynamics Studio solves all these issues by allowing you to write equations and visualize it as a graph to then be exported as a ModuleScript, so you can easily analyze the game difficulty in an easy to see graph without requiring tons of testing.

Not only does Dynamics Studio have a graph it has way more features like Adaptive mode with weights which allow you to slightly adjust the values mid-game.

Tutorial

Starting off & Graphing

Functions & Variables

  • When graphing you can use any of the base math functions like
    sqrt(x)
  • The grapher includes custom functions like:
  1. round(number, decimalpoints) - Round the number with decimalpoints
  2. clip(number, diff) - Like round but rounds number by diff
  3. or(number, val) - If number is 0 then return val (otherwise number)
  4. nor(number, val) - If number is not 0 then return val (otherwise number)
  5. tor(number, val, case) - If number is 0 then return val otherwise case
  6. truncate(number, decimalpoints) - Truncate number by decimalpoints
  7. approach(number, target, increase) - Approach number with target and increase
  • Some variables are also accessible like:
  1. x
  2. TIME (the current time)
  3. PREV (the previous y or 0)
  4. WEIGHT (the applied weight, if adaptive mode is on)

Exporting

  • To export click the export button in the plugin menu
    Screenshot 2023-12-25 at 6.29.44 PM

  • A prompt will show up, simply write the ModuleScript name and click export.
    Screenshot 2023-12-25 at 6.29.59 PM

  • Click Close and check workspace to see your ModuleScript has been generated!
    Screenshot 2023-12-25 at 6.31.16 PM

Loading

Adaptive Mode / Weights

One example usage for this is when you are making a luck system in a simulator, x is the players level, y is the luck, and the weight power is how much the boost can modify the the luck.

Using the ModuleScript

  • Create a new script and require the generated ModuleScript.
local module = --...
  • Use module.Get(x, weight)
module.Get(2) -- Returns 2, because with the equation 'y=x' 2 will be 'y' with 'x' being 2
  • You can also use weights like so
module.Get(2, .5) -- Returns 7, because the weight power is 10 and '10*.5 = 5' so 5 gets added to the result

Anyways, thanks for reading. I hope this plugin does help you. :smiley:

15 Likes

Seems interesting! Will look into it!

1 Like

It seems to be offsale.
image

Fixed!

This was most likely because plugins that cost Robux were put offsale, I made it free now.

1 Like

Not only does Dynamics Studio have a graph it has way more features like Adaptive mode with weights which allow you to slightly adjust the values mid-game.

Can you elaborate more on how you are adjusting values mid-game?

Normally the plugin outputs a module script with a function (f(x)) that is a compiled version of the mathmatical function in the plugin.

With adaptive mode the function is f(x) + aw where w/weight is a value set in the plugin and a can be called with the function depending on different realtime variables from the game.

In this example x is level, y is result, and a is the players luck modifier. w is how much power the luck modifier has on the result.

Thanks for responding so quickly. Please correct me if I’m misunderstanding. This does not update variables at real time in game automatically, right?

Yes it does not update variables in real time, it just lets you provide more values for the return amount.

It rather provides you a WEIGHT variable in the equation which you can treat as a second parameter, or you can just have it simply offset the value depending on your needs.

1 Like

Anyone wanna help me with balancing my game? I’m currently creating my first game, and I’m yet to figure out how to price upgrades ect. If anyone would like to help me out that would be great :smiley: