Skip to content

Instantly share code, notes, and snippets.

@racerxdl
Created January 23, 2014 23:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save racerxdl/a57efb57bffebd63fbbd to your computer and use it in GitHub Desktop.
Save racerxdl/a57efb57bffebd63fbbd to your computer and use it in GitHub Desktop.
This is the NX2 Score stuff. These are how they are calculated in NX2 Game.
So for NX, NX2, NXA(Not Tested) the score works like that.
We have a few defined integer globals:
SCORE_PERFECT = 1000 // This is if you hit a perfect
SCORE_GREAT = 500
SCORE_GOOD = 100
SCORE_BAD = -200
SCORE_MISS = -500
SCORE_MISS_LONGNOTE = -300
SCORE_NIGHTMARE_BONUS = 500000 // If the music is double, you get this more at score.
SCORE_GRADE_S = 100000 // If you got S, this is added too.
this is usually used as a ENUM. So for getting scores, we have a little formulae:
Basicly, we use 4 things to calculate: Judgment (those PERFECT, GREAT, GOOD), Combo, Note Number, and a boolean that if is a long note body.
Ok so for calculating, if is a we use a variable integer Score.
if is a long note and the judgement is miss, we have Score = SCORE_MISS_LONGNOTE (that is -300)
else, we have the other table values.
Ok so this is not the only thing to calc.
If the judgment is less or equal that Great, we have following conditions:
if Combo >= 51 we add 1000
if NoteNum >= 4 we multiply by 2 else if NoteNum >= 3 we multiply by 1.5
This score is added to global score (aka Song Score).
If its a double side, we add SCORE_NIGHTMARE_BONUS, and if it got S, we add SCORE_GRADE_S
So its like:
if (IsLongNote && (Judgment == eMiss))
Score = SCORE_MISS_LONGNOTE;
else
Score = ScoreTable[Judgment - ePerfect];
if (Judgment <= eGreat) {
if (Combo >= 51)
Score += 1000;
if (NoteNum >= 4)
Score *= 2;
else if (NoteNum >= 3)
Score = int(Score * 1.5f);
}
return Score;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment