Skip to content

Conversation

@maplesyruppppppp
Copy link
Contributor

makes the input system actually feel good to play with now. the rewrite includes:

  • better hit windows
  • sustain notes can no longer be hit before the main note
  • dropped inputs occurrence are more unlikely now
  • better note priority? its at least a bit better now im not really sure
  • easier moddable rating system

example of modding the ratings through hscript:

function postCreate()
{
	// you can add ratings with no limitations!
	ratingManager.addRating(
	{
		name: "killer",
		window: 16.4,
		accuracy: 1.0,
		score: 500,
		splash: true
	});

	// `addRating` also has the ability to override pre-existing ratings
	ratingManager.addRating(
	{
		name: "sick",
		window: 37.8,
		accuracy: 1.0,
		score: 350,
		splash: true
	});

	// you may also remove pre-existing ratings if you wish to do so
	ratingManager.removeRating('shit');
}

the rewrite was inspired by this branch in the dev repo, it was just modified to have easier modding support and be more finalized in general

@maplesyruppppppp
Copy link
Contributor Author

i was informed that we need backwards compatibility which is something i forgot to do, so i will do that tomorrow! (it's 11pm for me)

@Raltyro
Copy link
Contributor

Raltyro commented Nov 5, 2025

ppeakk...

Copy link

@asmadeuxs asmadeuxs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sustain notes can no longer be hit before the main note

this is a great change but I have a slight suggestion

add a drop timer (just a float value that goes from 1 to 0) so released holds can still be re-grabbed if you're fast enough

i.e:

// on note hit
note.tripTimer = 1.0;

// on hold input check
// checking if the hold is big enough for this to happen will prevent a lot of accidental valid hits
// note.tail is just a hypothetical variable here, but think of it as just an integer that increases by 1 every time a hold piece is created, and decreases by 1 every time its destroyed
if (note.tripTimer > 0 && note.tail > 3)
{
  note.tripTimer -= 0.05 / note.sustainLength;
  // visual indicator (because its nice to have)
  note.alpha = -= 0.5 * elapsed; // pseudo math, probably replace this?
  if (note.tripTimer <= 0.0)
    note.canBeHit = false; // or something to just generally invalidate the note from being hit
}

overall, good pr!

@asmadeuxs
Copy link

these things are all optional, hence why I didn't really start a review, it's just a "it'd be nice to have" situation

@maplesyruppppppp
Copy link
Contributor Author

sustain notes can no longer be hit before the main note

this is a great change but I have a slight suggestion

add a drop timer (just a float value that goes from 1 to 0) so released holds can still be re-grabbed if you're fast enough

i.e:

// on note hit

note.tripTimer = 1.0;



// on hold input check

// checking if the hold is big enough for this to happen will prevent a lot of accidental valid hits

// note.tail is just a hypothetical variable here, but think of it as just an integer that increases by 1 every time a hold piece is created, and decreases by 1 every time its destroyed

if (note.tripTimer > 0 && note.tail > 3)

{

  note.tripTimer -= 0.05 / note.sustainLength;

  // visual indicator (because its nice to have)

  note.alpha = -= 0.5 * elapsed; // pseudo math, probably replace this?

  if (note.tripTimer <= 0.0)

    note.canBeHit = false; // or something to just generally invalidate the note from being hit

}

overall, good pr!

I'll keep this in mind, thanks!

@theoo-h
Copy link
Contributor

theoo-h commented Nov 7, 2025

does this take the closest note to the mid-range? or the first one to hit the rante

@maplesyruppppppp
Copy link
Contributor Author

does this take the closest note to the mid-range? or the first one to hit the rante

sorry for the late response i never noticed until now 😭, but it picks up closest to the mid-range

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants