Following problem, the player can produce processes called “researches”, on technologies for example. The speed of each research is depending on levels such “Research Level”, “Urgency” and “Effort”. (If the player wants these researches done faster, they can choose higher values).
The problem is that, of course, multiplying this only prolongs the delay. I’m trying to gradually reduce the delay interval by levels reached. Optimally by small percentages, of the total value, not fixed numbers.
Again, the player can level up their research station maybe up to level 100 or more. I imagine that the quickest amount should be 0,1, while at lower player levels, each research interval starts from 5-10 seconds, when a low Urgency / Effort is selected.
When a player has, for example, Research Level 17, the research of course has to go 17 times faster, multiplied with the Effort and Urgency inputted in the research widget. (i set this all up already, i only need the mathematics).
Tried every float node and would appreciate some help!
If I am following… …you could do something like the delay input is “MAX_Research_Rate - Research_Rate”. This way as Research_Rate increases the delay decreases until, eventually, it is 0.
Yeah; however, your “MAX Research Rate” needs to be the largest possible number after the multiply such that you cannot get negative numbers. Not sure what the variable you want to call the output of the multiply… …say the output of the multiply before the blue box is “Fred” then “MAX Fred” would be the largest possible number that “Fred” could every be.
Where “MAX Research Rate” would be replaced with “MAX Fred”… …give my Fred naming convention…
But note that let’s say, the highest Research Station is level 100.
Then an example player with the highest research station level, choosing the highest Effort (100) and the highest Urgency (3) for a research, would be 30.000 ([researchlevel = 100] * [effort = 100] * [urgency = 3] = 100x100x3). SO i inputted the maximum number of 30.000 for now.
But, the results with this are still going into minus
At first i noticed that your calculation actually does something, but at least how i do it is probably not accurate… I would appreciate it if you could put together a few empty multiply nodes, and screenshot the nodes exactly the way you imagine it… thanks!
No, like above, the Max Research Rate value it’s 5 because it is the longest Time Delay for incrementing the progress value. Again, the speed of the research process is based on shortening the delay interval depending on the player’s levels inputted… not to create a bigger delay interval.
(Did a player not choose any urgency, having research level 1, effort 1 and Urgency 1, then the research process only increments the progress every 5 seconds, which should be the Max Research Rate (for now) .
Remember, with every level, urgency, effort etc, this Time Delay should get shorter. …
RL = “ResearchLevel” || EF = “Effort” || UR = “Urgency”
RL (23) * EF (100) * UR (1) = 23000
= something like 2,5 seconds delay (not accurate)
or
RL (80) * EF (100) * UR (3) = 24.000
= something like 2,1 seconds delay (not accurate)
etc. etc.
The higher the level, the shorter the delay But somewhat clamped between a max of 5 seconds and 0,1 seconds. For the overall skill/level of the player. For now…
okokok… …need another variable then. Say, “MaxMultiplierValue”. Set this to 30000 and replace “MaxResearchRate” with “MaxMultiplierValue” in the logic shown.
Now, you should get a large non-negative number. Now this number from 0 to 30,000 needs to get scaled to, I am guessing, a delay value in the range from 0 to MaxResearchRate.
Thus take the output of the subtraction we have been talking about and add the following math: (output = input/MaxMultiplerValue*MaxResearchRate)
The overall equation we are looking to achieve is…
(RL = “ResearchLevel” || EF = “Effort” || UR = “Urgency”) Print String is time Delay
RL (1) * EF (1) * UR (1):
RL (100) * EF (1) * UR (1):
RL (1) * EF (100) * UR (3):
RL (42) * EF (46) * UR (2):
RL (99) * EF (57) * UR (3):
RL (100) * EF (100) * UR (2):
RL (100) * EF (100) * UR (3) (highest):
RL (99) * EF (99) * UR (3):
For now i can only say thanks, because it looks actually really good at this moment…
I have to keep on testing this for a period of time and a few rounds of coffee, to see if this is safe for final use, and then come back with Solved or not!
What is funny, to me, is that I just did what you needed to do on Friday; however, for a HVAC gas heat induction inducer motor controller in that I had a input which scaled from 0 to 1000; however, I needed to generate pulses at a larger frequency (more delay; ~1.2 seconds) at 0 and at a smaller frequency (less delay;~0.012 seconds) at 1000. Varying in between. In essence, implemented the same equation as shown above.
Indeed it is very similar system, that is a good coincidence. I marked your answer as solved, for now, because it seems like it works… fine-tuning the max number is now easy, in case a Level 100 Research is not enough (and the game allows the player to level it up higher, or to 200, or indefinitely, which is where the max number will be simply incremented with each Level-up event)…
currently, when the Research Stage is e.g. (1), a process with (100 Urgency + 1 Effort ), and one with (1 Urgency + 3 Effort ) makes only a very small difference in the number and they almost go at the same speed in the visual progress bar. But i feel like this can be improvised… the Research Level multiplier definitely does its job.