Post #1 · Posted at 2014-04-19 03:59:38am 11 years ago
![]() | |
---|---|
![]() |
Member |
221 Posts | |
![]() | |
Reg. 2012-04-02 | |
![]() | |
"Ka-n-ko-re" |
The Groove Radar in Stepmania seems to give wrong values to most boss songs (most of which having the max value). For example, Valkyrie Dimension's
chart has the following Groove Radar Values in integers (I will use DDR 2013 Groove Radar values):

Stream: 145
Voltage: 143
Chaos: 154
Air: 71
Freeze: 55

While Magnetic's
has:
Stream: 121
Voltage: 114
Chaos: 113
Air: 25
Freeze: 69
It seems like Stepmania Groove Radar calculations are based off the older mixes I want to change it to its current values. Is there a way to change the values?
Beofre I forget, I am using Stepmania 5 beta 3.


Stream: 145
Voltage: 143
Chaos: 154
Air: 71
Freeze: 55

While Magnetic's

Stream: 121
Voltage: 114
Chaos: 113
Air: 25
Freeze: 69
It seems like Stepmania Groove Radar calculations are based off the older mixes I want to change it to its current values. Is there a way to change the values?
Beofre I forget, I am using Stepmania 5 beta 3.
Post #2 · Posted at 2014-04-19 04:12:19am 11 years ago
![]() | |
---|---|
![]() |
Member |
858 Posts | |
![]() | |
Reg. 2014-01-01 | |
"hi" |
I have no idea how to fix this, but the Groove Radar was bothering me, too.
I think there are completely different formulas in StepMania than the AC DDR games.
I've noticed that Freeze is especially off, for example Under the Sky's
Freeze value is 100+ in AC DDR yet StepMania thinks its ~50. I'm guessing that in StepMania, Freeze is mainly based off of the numberof Freeze Arrows in the song, rather than the total length.
Maybe there's something in the coding that can be changed? Metrics ini. or something? Not really sure if there's something in that file for Groove Radars.
I think there are completely different formulas in StepMania than the AC DDR games.
I've noticed that Freeze is especially off, for example Under the Sky's

Maybe there's something in the coding that can be changed? Metrics ini. or something? Not really sure if there's something in that file for Groove Radars.
Post #3 · Posted at 2014-04-19 04:59:47am 11 years ago
This is (probably) not the answer you're looking for, but hopefully it will help shed some light on this.
Most of SM's current/active development team is either unfamiliar with the particulars of DDR or is more interested in taking StepMania in completely new/different/unique directions. The future of SM currently looks something like this:
http://www.stepmania.com/wiki/devpages/roadmap/
"Currently" is really the keyword, however. StepMania is an open-source software project. Where it goes is largely up to the people that contribute to it. If you're interested in seeing a certain feature implemented, and know a little C++, you can play with the codebase, submit a pull request on GitHub, and directly impact the future of StepMania. Lots of people have done this already; nearly every single post beta 3 update has been submitted as a pull request!
A little bit of the existing GrooveRadar is documented here: http://kki.ajworld.net/wiki/Theme_Element_Library/GrooveRadar
The underlying source code that controls how the GrooveRadar works is here: https://github.com/stepmania/stepmania/blob/master/src/GrooveRadar.cpp
Finally, it may be worth noting that you will soon (as of beta 4) be able to create your own GrooveRadar themeside without touching the C++. (Lua is generally easier to learn than C++.) Mad Matt and Kyzentun have been working really hard at adding a new feature for beta4, ActorMultiVertex, which will allow themers to draw arbitrary polygons with Lua. I suspect this feature could effectively supplant the existing GrooveRadar with some appropriately thought out Lua.
If you think you would like to help contribute to making a new GrooveRadar, let me know. Between all of us here, we can probably figure something out.
Most of SM's current/active development team is either unfamiliar with the particulars of DDR or is more interested in taking StepMania in completely new/different/unique directions. The future of SM currently looks something like this:
http://www.stepmania.com/wiki/devpages/roadmap/
"Currently" is really the keyword, however. StepMania is an open-source software project. Where it goes is largely up to the people that contribute to it. If you're interested in seeing a certain feature implemented, and know a little C++, you can play with the codebase, submit a pull request on GitHub, and directly impact the future of StepMania. Lots of people have done this already; nearly every single post beta 3 update has been submitted as a pull request!
A little bit of the existing GrooveRadar is documented here: http://kki.ajworld.net/wiki/Theme_Element_Library/GrooveRadar
The underlying source code that controls how the GrooveRadar works is here: https://github.com/stepmania/stepmania/blob/master/src/GrooveRadar.cpp
Finally, it may be worth noting that you will soon (as of beta 4) be able to create your own GrooveRadar themeside without touching the C++. (Lua is generally easier to learn than C++.) Mad Matt and Kyzentun have been working really hard at adding a new feature for beta4, ActorMultiVertex, which will allow themers to draw arbitrary polygons with Lua. I suspect this feature could effectively supplant the existing GrooveRadar with some appropriately thought out Lua.
If you think you would like to help contribute to making a new GrooveRadar, let me know. Between all of us here, we can probably figure something out.

Post #4 · Posted at 2014-04-19 05:14:22am 11 years ago
![]() | |
---|---|
![]() |
Member |
696 Posts | |
![]() | |
Reg. 2012-12-01 | |
I have been wanting to know if this is possible too (if the GR calculations for SM can be can exactly like the official DDR 2013 calculations).
Post #5 · Posted at 2014-04-19 05:19:04am 11 years ago
![]() | |
---|---|
![]() |
Member |
332 Posts | |
Not Set | |
Reg. 2012-04-30 | |
Quote: HealingDMax300
I have been wanting to know if this is possible too.
Quote: Mad Matt
If you want to modify the code then Stepmania can do anything that any other piece of software can do.
Can you provide details on how you want the GrooveRadar to behave in your theme? The more details, the better; numbers and algebraic representations are better yet.
Post #6 · Posted at 2014-04-19 06:38:55am 11 years ago
![]() | |
---|---|
![]() |
Member |
858 Posts | |
![]() | |
Reg. 2014-01-01 | |
"hi" |
I have some formulas, hopefully they can be implemented since some of the variables include "number of beats (4th beats) in song", "song length (in seconds)" , "number of notes", "number of jumps", "total length of Freeze Arrows" (this one can get a little confusing.).
Here's a few links that help explain the formulas and the calculations involved:
Stream: http://dancedancerevolutionddr.wikia.com/wiki/Stream_%28Groove_Radar%29#How_to_Calculate_Stream
Voltage: http://dancedancerevolutionddr.wikia.com/wiki/Voltage_%28Groove_Radar%29#How_to_Calculate_Voltage
Air: http://dancedancerevolutionddr.wikia.com/wiki/Air_%28Groove_Radar%29#How_to_Calculate_Air
Freeze: http://dancedancerevolutionddr.wikia.com/wiki/Freeze_%28Groove_Radar%29#How_to_Calculate_Freeze
Chaos: http://dancedancerevolutionddr.wikia.com/wiki/Chaos_%28Groove_Radar%29#How_to_Calculate_Chaos
I even created a whole spreadsheet dedicated to calculating these Groove Radar Values for the different games. waterdraik 346 helped a lot with this.
https://docs.google.com/spreadsheet/ccc?key=0AjQ9M9k92kJCdHU4SVkxTzJoMElRQzA4VW81c0tKMmc&usp=drive_web
I really hope this helps!
Here's a few links that help explain the formulas and the calculations involved:
Stream: http://dancedancerevolutionddr.wikia.com/wiki/Stream_%28Groove_Radar%29#How_to_Calculate_Stream
Voltage: http://dancedancerevolutionddr.wikia.com/wiki/Voltage_%28Groove_Radar%29#How_to_Calculate_Voltage
Air: http://dancedancerevolutionddr.wikia.com/wiki/Air_%28Groove_Radar%29#How_to_Calculate_Air
Freeze: http://dancedancerevolutionddr.wikia.com/wiki/Freeze_%28Groove_Radar%29#How_to_Calculate_Freeze
Chaos: http://dancedancerevolutionddr.wikia.com/wiki/Chaos_%28Groove_Radar%29#How_to_Calculate_Chaos
I even created a whole spreadsheet dedicated to calculating these Groove Radar Values for the different games. waterdraik 346 helped a lot with this.
https://docs.google.com/spreadsheet/ccc?key=0AjQ9M9k92kJCdHU4SVkxTzJoMElRQzA4VW81c0tKMmc&usp=drive_web
I really hope this helps!
Post #7 · Posted at 2014-04-19 08:39:04am 11 years ago
![]() | |
---|---|
![]() |
Member |
221 Posts | |
![]() | |
Reg. 2012-04-02 | |
![]() | |
"Ka-n-ko-re" |
Hmm . . Are you saying that I could create my own Groove Radar code the way I wanted the GR polygon to behave like in DDR 2013? I really like the code that was given in C++ but I am not so sure how to implement this for the entire game (and in other themes since most themes have the well-known Groove Radar polygon while others have bars to measure the chart's stats. ). Plus, the GrooveRadar section in the metrics.ini seems to be confusing to understand, which is why it's harder to change the code without understanding the logic of the game's GR.
Post #8 · Posted at 2014-04-20 04:31:36am 11 years ago
![]() | |
---|---|
![]() |
Member |
332 Posts | |
Not Set | |
Reg. 2012-04-30 | |
Here's something to get this conversation started: http://codepad.org/jWSvJO8P
If you really want to make this happen, there's a lot of work to go, yet.
If you really want to make this happen, there's a lot of work to go, yet.
Post #9 · Posted at 2014-04-20 02:00:32pm 11 years ago
![]() | |
---|---|
![]() |
Member |
858 Posts | |
![]() | |
Reg. 2014-01-01 | |
"hi" |
That seems pretty accurate, for what we have there.
Chaos, by far is going to be the most time consuming or the most challenging to figure out how to put into a formula.
It can get really annoying to calculate manually.
You have to calculate the intervals (in beats) between all non-4th notes and the notes before each of them, and then multiply each interval by a certain number , depending on what kind of note it is (8th, 16th, 12th, etc), and then finally add all the values together.
Also, is there a way to create a different scale on the Groove Radar, like how DDR has it from 1-200 with the values between 0 and 100 have a different formula than the values from 100 - 200?
For example, Stream's equation for certain values below a certain number is
=IF(G2>300,(G2-139)*100/161,G2/3)
where G2 is the Number of notes per minute.
If G2 is greater than or equal to 300, use the first equation: (G2-139)*100/161
If G2 is less than 300, use the second equation: G2/3
So as a result, the scale differs on the higher end of the Radar and the lower end.
If this doesn't make sense, I can explain it more.
Chaos, by far is going to be the most time consuming or the most challenging to figure out how to put into a formula.
It can get really annoying to calculate manually.
You have to calculate the intervals (in beats) between all non-4th notes and the notes before each of them, and then multiply each interval by a certain number , depending on what kind of note it is (8th, 16th, 12th, etc), and then finally add all the values together.
Also, is there a way to create a different scale on the Groove Radar, like how DDR has it from 1-200 with the values between 0 and 100 have a different formula than the values from 100 - 200?
For example, Stream's equation for certain values below a certain number is
=IF(G2>300,(G2-139)*100/161,G2/3)
where G2 is the Number of notes per minute.
If G2 is greater than or equal to 300, use the first equation: (G2-139)*100/161
If G2 is less than 300, use the second equation: G2/3
So as a result, the scale differs on the higher end of the Radar and the lower end.
If this doesn't make sense, I can explain it more.
Post #10 · Posted at 2014-04-20 10:17:31pm 11 years ago
![]() | |
---|---|
![]() |
Member |
332 Posts | |
Not Set | |
Reg. 2012-04-30 | |
Quote: mf32892
For example, Stream's equation for certain values below a certain number is
=IF(G2>300,(G2-139)*100/161,G2/3)
where G2 is the Number of notes per minute.
If G2 is greater than or equal to 300, use the first equation: (G2-139)*100/161
If G2 is less than 300, use the second equation: G2/3
=IF(G2>300,(G2-139)*100/161,G2/3)
where G2 is the Number of notes per minute.
If G2 is greater than or equal to 300, use the first equation: (G2-139)*100/161
If G2 is less than 300, use the second equation: G2/3
Calculating notes per minute and adjusting the equation would be easy, currently. Using the script I provided above, you could do
Quote
local notesPerMinute = 60 * (counts.TapsAndHolds / duration)
if notesPerMinute >= 300 then
stream = ((notesPerMinute -139) * 100)/161;
elseif notesPerMinute < 300 then
stream = notesPerMinute/3;
end
if notesPerMinute >= 300 then
stream = ((notesPerMinute -139) * 100)/161;
elseif notesPerMinute < 300 then
stream = notesPerMinute/3;
end
The bigger issue is going to be parsing the note data from the .ssc files, which will be necessary to calculate things like Total Freeze Length, Maximum Note Density, and pretty much every internal aspect of Chaos. Since StepMania's current backend doesn't have C++ code to do such parsing, I see two routes:
1. Do parsing on the fly with Lua. I suspect it will be slow and cause lag.
2. Enhance the existing API by writing new C++ to do the work for you, and then call those new methods from Lua.
Either way, it's going to be very challenging conceptually, it's going to require a fairly solid knowledge of the language(s) at hand, and it's going to require some working knowledge of the existing codebase. I am definitely not up to the task (I barely know C++ and perfectly emulating DDR just doesn't interest me that much.).
Hopefully this helps shed some light on it.
Post #11 · Posted at 2014-04-20 11:46:53pm 11 years ago
![]() | |
---|---|
![]() |
Member |
3,209 Posts | |
![]() | |
Reg. 2008-02-20 | |
"I'm honestly pissed off." |
Quote: dbk2
1. Do parsing on the fly with Lua. I suspect it will be slow and cause lag.
Please don't write Lua that loads a .sm or .ssc file through the RageFile functions and parses it into a useful note data structure. It makes me cry. It's really not something any themer should have to do, and it's not worth the effort just to get your groove radar to look exactly like Konami's.Any C++ code that is submitted with the sole intention of emulating Konami's idiosyncratic groove radar calculations is likely to be rejected on the basis that that kind of calculation belongs in the theme.
There is currently no Lua API for examining the note data. Keep discussing how to analyze a chart though, because the page that was linked to is rather hard to interpret. The discussion might be useful if the Lua API ever supports examining the note data.
In conclusion, it's not practical to change the way groove radar is calculated right now, but that may change in the future.
Side note:
Perfectly emulating DDR doesn't interest me either. Chart analysis in general does.
Post #12 · Posted at 2014-04-20 11:53:16pm 11 years ago
![]() | |
---|---|
![]() |
Member |
65 Posts | |
![]() | |
Reg. 2011-10-26 | |
Quote: Kyzentun
Quote: dbk2
1. Do parsing on the fly with Lua. I suspect it will be slow and cause lag.
Please don't write Lua that loads a .sm or .ssc file through the RageFile functions and parses it into a useful note data structure. It makes me cry. It's really not something any themer should have to do.