This is the help page for Sunniesnow. Here you can find information about the settings and how to use them.
level-file
."online"
, "upload"
.This setting is used to provide the level file. A level file contains the music, the chart, and optionally the background. There are two ways of providing the level file, online and upload.
level-file-online
You can fill in the identifier of an online level here to get access to the level. If you want to play an online chart that is not from Sunniesnow’s server, you should enter the full URL to the .ssc file here.
After you finish filling in this field,
hit Enter or click the Load button to load the level file.
Then, the available options of music-select
,
chart-select
, and background-from-level
will be refreshed.
This setting is only useful when level-file
is set to "online"
.
level-file-upload
.You can upload a level file from your local file system here.
The level file is automatically loaded once you upload it.
Then, the available options of music-select
,
chart-select
, and background-from-level
will be refreshed.
This setting is only useful when level-file
is set to "upload"
.
music-select
.This setting is used to select an audio file as the music file. The level file you provided should contain at least one audio file. The list of audio files will be available in the dropdown menu of this setting once the level file is loaded.
chart-select
.This setting is used to select a JSON file as the chart file. The level file you provided should contain at least one JSON file. The list of JSON files will be available in the dropdown menu of this setting once the level file is loaded.
judgement-windows
."loose"
, "medium"
, "strict"
, "rigorous"
, "custom"
.This setting is used to set the judgement time windows. There are three tiers of judgement time windows: strict, medium, and loose.
The loose tier is the same as the judgement windows of Lyrica. Data (data in “hold (end)” entries are ratio to the duration of the hold, and other data are in milliseconds (the internal values are in seconds)):
early bad | early good | early perfect | late perfect | late good | late bad | |
---|---|---|---|---|---|---|
tap | -400 | -300 | -110 | +150 | +300 | +400 |
drag | -400 | -300 | -110 | +150 | +300 | +400 |
flick | -400 | -400 | -300 | +150 | +300 | +400 |
hold (start) | -400 | -400 | -400 | +400 | +400 | +400 |
hold (end) | -∞ | 0.4 | 0.7 |
Data for the medium tier:
early bad | early good | early perfect | late perfect | late good | late bad | |
---|---|---|---|---|---|---|
tap | -240 | -160 | -80 | +80 | +160 | +240 |
drag | -240 | -240 | -110 | +150 | +240 | +240 |
flick | -240 | -180 | -110 | +110 | +180 | +240 |
hold (start) | -240 | -240 | -110 | +110 | +240 | +240 |
hold (end) | -∞ | 0.7 | 0.7 |
Data for the strict tier:
early bad | early good | early perfect | late perfect | late good | late bad | |
---|---|---|---|---|---|---|
tap | -150 | -100 | -50 | +50 | +100 | +150 |
drag | -150 | -150 | -100 | +100 | +150 | +150 |
flick | -150 | -100 | -50 | +50 | +100 | +150 |
hold (start) | -150 | -100 | -50 | +50 | +100 | +150 |
hold (end) | -∞ | 0.8 | 0.8 |
Data for the rigorous tier:
early bad | early good | early perfect | late perfect | late good | late bad | |
---|---|---|---|---|---|---|
tap | -100 | -60 | -30 | +30 | +60 | +100 |
drag | -120 | -120 | -80 | +80 | +120 | +120 |
flick | -100 | -60 | -30 | +30 | +60 | +100 |
hold (start) | -100 | -60 | -30 | +30 | +60 | +100 |
hold (end) | -∞ | 0.8 | 0.8 |
The interval for drag notes are different when lyrica-5
is true
:
the perfect interval is the same as the bad interval.
When this setting is "custom"
, the following settings will be available to enter,
and they will be used to determine the judgement time windows:
judgement-windows-custom-tap-early-bad
,judgement-windows-custom-tap-early-good
,judgement-windows-custom-tap-early-perfect
,judgement-windows-custom-tap-late-perfect
,judgement-windows-custom-tap-late-good
,judgement-windows-custom-tap-late-bad
,judgement-windows-custom-drag-early-bad
,judgement-windows-custom-drag-early-good
,judgement-windows-custom-drag-early-perfect
,judgement-windows-custom-drag-late-perfect
,judgement-windows-custom-drag-late-good
,judgement-windows-custom-drag-late-bad
,judgement-windows-custom-flick-early-bad
,judgement-windows-custom-flick-early-good
,judgement-windows-custom-flick-early-perfect
,judgement-windows-custom-flick-late-perfect
,judgement-windows-custom-flick-late-good
,judgement-windows-custom-flick-late-bad
,judgement-windows-custom-hold-early-bad
,judgement-windows-custom-hold-early-good
,judgement-windows-custom-hold-early-perfect
,judgement-windows-custom-hold-late-perfect
,judgement-windows-custom-hold-late-good
,judgement-windows-custom-hold-late-bad
,judgement-windows-custom-hold-end-early-good
, andjudgement-windows-custom-hold-end-early-perfect
.All the values are in seconds although they are entered in milliseconds,
so you need to enter milliseconds in judgement settings UI,
but you need to enter seconds when using URL parameters
because the internal values are in seconds.
When using custom windows, the windows for drag notes are not affected by lyrica-5
.
The early bad judgement for hold end is always negative infinity.
note-hit-size
.This setting is used to set the hit size of the notes.
The hit region of a note is the same for all types of notes:
a square concentric with the note.
This setting is used to specify the ratio of the side length of the square
to the radius of the note (when the value of note-size
is one).
This setting does not affect the visual size of notes, which is set by note-size
.
offset
.This setting specifies the judgement offset in milliseconds (the internal value is in seconds). The larger the offset, the later the time at which the player are supposed to hit the notes. This setting is intended to fix the latency in the video.
This does not affect the audio-video sync.
To fix the audio-video sync, use delay
.
lyrica-5
.true
, false
.There was a major update in Lyrica 5.0.0 that changed the mechanics of the game. This setting is used to set whether the mechanics of the game should mock that of Lyrica 5.0.0.
When this setting is set to true
, the following mechanics are changed:
no-early-drag
.true
, false
.This setting is used to set whether drag notes can be hit early.
When this setting is set to false
,
whenever you hit the screen, drag notes within a certain range (space and time)
will be hit and judged
if there are no other types of notes with higher priority.
Setting this setting to true
disables this mechanics
(and reduces difficulty).
locking-hold
.true
, false
.When this setting is set to true
,
moving a touch point away from a hold note is regarded as releasing it
(increasing difficulty).
min-flick-distance
.After a touch point hit a flick note,
the touch point must move by a certain distance
before the end of the bad judgement window
(see judgement-windows
);
otherwise, the flick note will be judged as a miss.
This distance is defined as the value of this setting times the radius of the note
(when the value of note-size
is one).
When the touch point moves by more than this distance
while being in the angle range specified by flick-angle-range
,
the flick note will be forced to release immediately.
The judgement of a released flick note is explained in flick-angle-range
.
max-flick-distance
.A flick note is forced to release when the touch point that hit it
moves by a certain distance.
This distance is defined as the value of this setting times the radius of the note
(when the value of note-size
is one).
The judgement of a released flick note is explained in flick-angle-range
.
flick-angle-range
.After a flick note is properly released, the direction of the displacement vector of the touch point that hit the flick note is compared to the direction of the flick note.
If the angle between these two directions is less than the value of this setting (in degrees), then the flick note will be judged as a perfect or good, depending on the time when it was hit. This judgement is independent of the time when it was released, and is independent of the direction of the movement of the touch point.
If the angle between these two directions is greater than the value of this setting (in degrees), then the flick note will be judged as a bad.
speed
.This setting is used to set how fast the shrinking circles of the notes shrink. In other words, it is used to set how advanced the notes appear in time. This setting is equivalent to what is known as the scroll speed in most rhythm games.
The time for which the shrinking circle of a note is visible is one second divided by the speed value set here (plus a small constant defined by the skin).
Here is a comparison table between speed values here and speed values in Lyrica:
Lyrica | Sunniesnow |
---|---|
1 | 1.05 |
2 | 1.33 |
3 | 1.67 |
4 | 2.22 |
5 | 3.00 |
When the speed is set to zero, the shrinking circles do not appear at all.
When scroll
is true
, this setting is the time
(in seconds) for the note to travel the distance specified by
scroll-distance
(which is the height of the canvas set by
height
multiplied by the value of
scroll-distance
).
note-size
.This setting is used to set the visual size of the notes.
This setting does not affect the hit size of the notes, which is set by note-hit-size
.
background
."none"
, "online"
, "from-level"
, "upload"
.This setting is used to set the background image of the game.
When the value is "none"
, the background is a purely white image.
background-online
.You can fill in the identifier of an online background to use it here. If you want to use a background from outside the server of Sunniesnow, you may also specify the URL of the image you want to use here.
This setting is only useful when background
is set to "online"
.
background-from-level
.You can select a background image from the level file you provided here.
The level file you provided may or may not contain background images.
If it does, the list of background images will be available in the dropdown menu of this setting once the level file is loaded,
and background
will be automatically set to "from-level"
.
This setting is only useful when background
is set to "from-level"
.
background-upload
.You can upload a image file here as the background.
This setting is only useful when background
is set to "upload"
.
background-blur
.The background image is blurred by Gaussian blur. This setting is used to set the radius of the blur. The larger this value, the more blurred the background image.
These settings are only useful when renderer
is set to "webgl"
.
background-brightness
.This setting is used to set the brightness of the background image. Zero brightness is pure black, and one brightness is the original image.
fx
."default"
, "online"
, "upload"
.This setting is used for you to provide a Sunniesnow plugin file to add special effects to the notes when they are hit. They are called FX in Lyrica, so we call it FX here, too.
fx-online
.You can fill in the identifier of an online FX to use it here. If you want to use a FX from outside the server of Sunniesnow, you may also specify the URL of the plugin file you want to use here.
This setting is only useful when fx
is set to "online"
.
fx-upload
.You can upload a plugin file here as the FX.
This setting is only useful when fx
is set to "upload"
.
skin
."default"
, "online"
, "upload"
.This setting is used for you to provide a Sunniesnow plugin file to change the style of the notes and other UI elements.
skin-online
.You can fill in the identifier of an online skin to use it here. If you want to use a skin from outside the server of Sunniesnow, you may also specify the URL of the plugin file you want to use here.
This setting is only useful when skin
is set to "online"
.
skin-upload
.You can upload a plugin file here as the skin.
This setting is only useful when skin
is set to "upload"
.
The following settings are used to set contents of the head-up displays (HUD) of the game. This is just a very rough control of the HUD, and you may want to use a skin if you want to customize more. Also, it is possible that the skin you use does not respect these settings.
Each of these settings can take one of the following values, and will not be stated again to avoid repetition:
"none"
: The content is an empty string."title"
: The content is the title of the level (as specified in the chart file)."difficulty-name"
: The content is the name of the difficulty (as specified in the chart file)."difficulty"
: The content is the difficulty (as specified in the chart file)."difficulty-and-name"
: The content is the difficulty name and the difficulty connected by a space."combo"
: The content is the current combo."score"
: The content is the current score."accuracy"
: The content is the current accuracy.hud-top-center
.hud-top-left
.hud-top-right
.Simultaneity hints are lines connecting notes that are supposed to be hit at the same time. Note that the recoloring of simultaneous tap notes is not controlled by these settings because it is a skin feature.
double-line-tap
.true
, false
.Enable simultaneity hints for tap notes.
double-line-hold
.true
, false
.Enable simultaneity hints for hold notes.
double-line-drag
.true
, false
.Enable simultaneity hints for drag notes.
double-line-flick
.true
, false
.Enable simultaneity hints for flick notes.
hide-fx-in-front
.true
, false
.This setting is used to hide the FX in front of notes.
When it is true
, the FX in front of notes will not be displayed.
For the default skin, this has no effect.
hide-fx-perfect
.true
, false
.This setting is used to hide the FX of perfect judgement.
When it is true
, the FX of perfect judgement will not be displayed.
hide-fx-hold-start
.true
, false
.This setting is used to hide the FX of the start of hold notes.
When it is true
, the FX of the start of hold notes will not be displayed.
always-update-fx
.true
, false
.This setting is used to set whether the FX should be updated even when the game is paused.
If it does not update, the FX will stop animating and be stuck at the current frame.
When it is true
, the FX will always be updated even
whether the game is playing or pausing.
When it is false
, the FX will not be updated when the game is paused
and only be updated when the game is playing.
scroll-judgement-line
.This setting is used to set the position of the judgement line in the scroll mode.
This setting is useless if scroll
is false
.
The position of the judgement line is at the top of the canvas
if this setting equals 0
, and at the bottom of the canvas
if this setting equals 1
.
scroll-distance
.This setting is used to set the distance between the judgement line and the notes in the scroll mode.
This setting is useless if scroll
is false
.
The distance is this setting multiplied by the height of the canvas
(the value of height
).
hide-tip-points
.true
, false
.This setting is used to hide the tip points.
When it is true
, the tip points will not be displayed.
hide-notes
.true
, false
.This setting is used to hide the notes.
When it is true
, the notes and the simultaneity hints will not be displayed.
hide-circles
.true
, false
.This setting is used to hide the circles.
When it is true
, the circles will not be displayed.
hide-bg-notes
.true
, false
.This setting is used to hide the background notes.
When it is true
, the background notes will not be displayed.
hide-fx
.true
, false
.This setting is used to hide the FX.
When it is true
, the FX will not be displayed.
hide-bg-pattern
.true
, false
.This setting is used to hide the background pattern.
When it is true
, the background pattern will not be displayed.
touch-effects
.true
, false
.This setting is used to enable or disable the touch effects.
reverse-note-order
.true
, false
.This setting is used to reverse the display order of notes.
When it is true
, later notes will be displayed below earlier notes.
circle-moves-with-note
.true
, false
.This setting is used to set whether the circles should move with the notes.
Currently, this only affects scroll mode (when scroll
is true
).
When it is true
, the circles will move with the notes.
When it is false
, the circles will not move with the notes.
se
."default"
, "online"
, "upload"
.This setting is used for you to provide a Sunniesnow plugin file to add sound effects to the notes when they are hit. They are called SE in Lyrica, so we call it SE here, too.
se-online
.You can fill in the identifier of an online SE to use it here. If you want to use a SE from outside the server of Sunniesnow, you may also specify the URL of the plugin file you want to use here.
This setting is only useful when se
is set to "online"
.
se-upload
.You can upload a plugin file here as the SE.
This setting is only useful when se
is set to "upload"
.
volume-se
.This setting is used to set the volume of the SE. A volume being one means the original volume.
volume-music
.This setting is used to set the volume of the music. A volume being one means the original volume.
se-with-music
.true
, false
.This setting is used to set whether the SE should be played with the music.
When it is true
, the SE will (almost perfectly) sync with the music
and will be affected by the delay
setting.
When it is false
, the SE will be played immediately when the note is hit,
and will not be affected by the delay
setting.
delay
.This setting specifies the desired audio delay for the music in milliseconds (the internal value is in seconds). The larger the delay, the later the music will be played. This setting is used to adjust video-audio sync.
It does not affect judgements, however.
To adjust judgements, you may want to use the offset
setting.
latency-hint
."balanced"
, "interactive"
, "playback"
, "value"
.The type of playback as a balance between audio output latency and power consumption. See here for the meaning of each options.
latency-hint-value
.This is only useful when latency-hint
is set to "value"
.
Vibration is a haptic feedback of note hits.
vibration-with-music
.true
, false
.This setting is used to set whether the vibration is played with the music or played following the player input.
This setting is similar to se-with-music
.
When it is true
, the vibration is played with the music
regardless of the player input.
When it is false
, the vibration is played following the player input.
vibration-delay
.This setting is used to set the delay of the vibration.
The larger the delay, the later the vibration will be played.
This setting is only useful when vibration-with-music
is true
.
Although the number input on the webpage is in milliseconds,
the internal value of this setting is in seconds.
tap-vibration-time
.This setting is used to set the duration of the vibration of hitting a tap note. A value of zero is equivalent to disabling the vibration for tap notes. Different from other time-related settings, the internal value of this setting is in milliseconds, while other time-related settings are in seconds.
drag-vibration-time
.This setting is used to set the duration of the vibration of hitting a drag note. A value of zero is equivalent to disabling the vibration for drag notes. Different from other time-related settings, the internal value of this setting is in milliseconds, while other time-related settings are in seconds.
flick-vibration-time
.This setting is used to set the duration of the vibration of hitting a flick note. A value of zero is equivalent to disabling the vibration for flick notes. Different from other time-related settings, the internal value of this setting is in milliseconds, while other time-related settings are in seconds.
hold-vibration-time
.This setting is used to set the duration of the vibration of hitting a hold note. A value of zero is equivalent to disabling the vibration for hold notes. Different from other time-related settings, the internal value of this setting is in milliseconds, while other time-related settings are in seconds.
hold-vibration-period
.The duration of a period of the continuing vibration of holding a hold note.
While holding a hold note, one vibration occurs every period.
This setting is unrelated to hold-vibration-time
.
Different from other time-related settings, the internal value of this setting is in milliseconds,
while other time-related settings are in seconds.
hold-vibration-duty-cycle
.The duty cycle of the vibration of holding a hold note.
The duty cycle is the ratio of the duration of the vibration to the period,
so the duration of each vibration during holding a hold note
is the value of hold-vibration-period
times the duty cycle.
This setting is unrelated to hold-vibration-time
.
scroll
.true
, false
.This setting is used to enable or disable the scroll mode. In the scroll mode, the notes moves, and the player needs to hit them when they reach the judgement line.
When it is true
, the scroll mode is enabled.
When it is false
, the scroll mode is disabled.
autoplay
.true
, false
.This setting is used to set whether the game should be played automatically.
When it is true
, the game will be played automatically.
All notes are hit perfectly and automatically.
Whether the UI reflects whether the game is autoplaying is dependent on the skin.
progress-adjustable
.true
, false
.This setting is used to set whether the progress of the game should be adjustable when autoplaying.
It is only useful when autoplay
is true
.
When it is true
, you can adjust the progress of the game when autoplaying.
When it is false
, the progress of the game will not be adjustable when autoplaying.
To adjust the progress, drag the progress bar at the bottom of the canvas. Use ArrowLeft and ArrowRight to adjust the progress by seconds. Use , and . to adjust the progress by seconds. Use [ and ] to forward or rewind the progress continuously.
chart-offset
.This setting is used to set the offset of the chart in milliseconds (the internal value is in seconds). The time of all events will be shifted by this value. The larger the number is, the later the events will be played.
This setting is used to adjust the chart when the chart is not well-timed.
This setting is special in that it is not saved together with other settings. It is only saved for online level files, and every time you load an online level file, the value of this setting will be reset to the value saved for it.
game-speed
.This setting is used to set the speed (i.e. playback rate) of the music. The larger the speed, the faster the music will be played. A speed of one means the original speed.
Do not confuse this with the speed
setting,
which controls the scroll speed.
The following settings are used to apply mirroring to the whole chart. To apply mirroring, the whole chart is flipped (either horizontally or vertically or both). This includes the position of the notes, the direction of flicks and tip points, and the appearance of background patterns (including big texts).
horizontal-flip
.true
, false
.This setting is used to set whether the notes should be flipped horizontally.
vertical-flip
.true
, false
.This setting is used to set whether the notes should be flipped vertically.
The following settings specifies a range of the chart to play. The range is specified by the start and end position of the range (not in seconds or milliseconds), where a position of 0 means the start of the music audio file, and a position of 1 means the end of the music audio file. The positions may be negative or greater than 1, this is useful when you want to play a part of the chart which are not within the range of the music.
The actual events in the chart that are included are those that satisfy both of the following rules:
start
minus resume-preparation-time
.end
.start
.end
.resume-preparation-time
.This setting is used to set the preparation time before resuming the game in seconds. When you pause the game and then resume it, the music does not start at the exact position where you paused it, but starts a little bit earlier defined by this setting.
This setting also affects which events defined in the chart will actually appear in gameplay. See start and end for more details.
beginning-preparation-time
.This setting is used to set the preparation time before starting the game
in seconds.
When you start playing a chart,
the actual position where the music starts is a little bit earlier
(by this setting)
than the (start) time of the first event that appears in gameplay
or the start position defined by start
(whichever is earlier).
pause-double-time
.This setting is used to set the time window in which
you should tap the pause button twice during a level to pause the game.
If the value is set to 0
, the game will be paused immediately when you tap the pause button once.
The game always pauses immediately when you tap the pause button once when the level has finished (when the game is in the results scene) regardless of the value of this setting.
notes-priority-over-pause
.true
, false
.This setting is used to set whether the notes should have priority over the pause button.
If a touch can potentially either a note or the pause button,
then it will hit the note if this setting is true
,
otherwise it will hit the pause button.
pause-fullscreen
.true
, false
.This setting is used to set whether the game should be paused when toggling fullscreen.
When it is true
, the game will be paused when you toggle fullscreen.
When it is false
, the game will not be paused when you toggle fullscreen.
pause-blur
.true
, false
.This setting is used to set whether the game should be paused when the window loses focus.
On desktop, it means switching browser tab, minimizing the window, etc.
On mobile, it means switching to another app, locking the screen, etc.
When it is true
, the game will be paused when it loses focus.
When it is false
, the game will not be paused when it loses focus.
hide-pause-ui
.true
, false
.This setting is used to set whether the pause UI should be hidden by default.
When it is true
, the pause UI will be hidden by default.
When it is false
, the pause UI will be shown by default.
To toggle the visibility of the pause UI,
set second-pause
to toggle-ui
and hit the pause button when the game is paused.
pause-finish
.true
, false
.This setting is used to set whether the game should be paused when the level is about to finish
(when every note has a judgement).
When it is true
, the game will be paused when the level is about to finish.
When you resume here, the game will then actually finish.
When it is false
, the level will directly finish when it is about to finish.
second-pause
.disabled
, resume
, toggle-ui
.This setting is used to set the function of the pause button when the game is already paused.
When it is disabled
,
the pause button does nothing when the game is already paused.
When it is resume
,
the game will resume when the pause button is hit when the game is already paused.
When it is toggle-ui
,
the pause button will toggle the visibility of the pause UI (the three big buttons)
when the game is already paused.
This setting does not affect the function of the pause button
when the level is finished.
Although Lyrica is a mobile rhythm game, Sunniesnow is playable with keyboard and mouse, too.
Keyboard keys and mouse buttons are effectively the same thing during the gameplay (reminding you of osu!), but their settings are seperated in different settings entries.
Keys, mouse buttons use the position of the mouse cursor, and touches use the position of each touch correspondingly. However, you may optionally toggle on a special kind of judgement called the whole-screen judgement. With whole-screen judgement, hitting anywhere on the screen has the same effect, and flicks may be hit just as taps. Whole-screen judgement only affects the gameplay, and it does not affect how you can hit the UI buttons (pause button etc.).
enable-keyboard
.true
, false
.This setting is used to set whether the keyboard should be enabled at all.
If it is false
, the keyboard inputs will be ignored,
in all scenes including the main gameplay scene, the pause menu, and the results scene.
keyboard-whole-screen
.true
, false
.This setting is used to set whether the keyboard keys should have whole-screen judgement.
This setting is only useful when enable-keyboard
is true
.
exclude-keys
.This setting is used to set which keyboard keys should be excluded. This applies to all scenes including the main gameplay scene, the pause menu, and the results scene.
The full list of keys can be found
here
(use the key values without quotes), with an exception:
the Spacebar key is represented by "Spacebar"
instead of " "
.
This setting is only useful when enable-keyboard
is true
.
pause-keys
.This setting is used to set which keyboard keys may be used to pause the music
even if the mouse cursor is not pointing at the pause button
or keyboard-pause
is false
.
This applies to all scenes including the main gameplay scene, the pause menu, and the results scene.
The full list of keys can be found
here
(use the key values without quotes), with an exception:
the Spacebar key is represented by "Spacebar"
instead of " "
.
This setting is only useful when enable-keyboard
is true
.
keyboard-pause
.true
, false
.If this setting is true
,
you can hit the pause button in-game just like
how you would hit a note without whole-screen judgement
using the keyboard keys.
In other words, you can hit the pause button by moving the mouse cursor to it
and pressing any keyboard keys that are not excluded by exclude-keys
.
If it is false
, the only way to hit the pause button by keyboard is by pressing any key
listed in pause-keys
.
This setting only affects the main gameplay scene, and it does not affect other scenes such as the pause menu and the results scene.
This setting is only useful when enable-keyboard
is true
.
enable-mouse
.true
, false
.This setting is used to set whether the mouse buttons should be enabled at all.
If it is false
, the mouse button inputs will be ignored,
in all scenes including the main gameplay scene, the pause menu, and the results scene.
mouse-whole-screen
.true
, false
.This setting is used to set whether the mouse buttons should have whole-screen judgement.
This setting is only useful when enable-mouse
is true
.
exclude-buttons
.This setting is used to set which mouse buttons should be excluded. This applies to all scenes including the main gameplay scene, the pause menu, and the results scene.
The full list of mouse buttons can be found here. Because the list is short, here is the full list:
0
: Main button pressed, usually the left button or the un-initialized state.1
: Auxiliary button pressed, usually the wheel button or the middle button (if present).2
: Secondary button pressed, usually the right button.3
: Fourth button, typically the Browser Back button.4
: Fifth button, typically the Browser Forward button.pause-buttons
.This setting is used to set which mouse buttons may be used to pause the music
even if the mouse cursor is not pointing at the pause button
or mouse-pause
is false
.
This applies to all scenes including the main gameplay scene, the pause menu, and the results scene.
The full list of mouse buttons can be found
here
or in the explanation of exclude-buttons
.
This setting is only useful when enable-mouse
is true
.
mouse-pause
.true
, false
.If this setting is true
,
you can hit the pause button in-game just like
how you would hit a note without whole-screen judgement
using the mouse buttons.
In other words, you can hit the pause button by moving the mouse cursor to it
and pressing any mouse buttons that are not excluded by exclude-buttons
.
If it is false
, the only way to hit the pause button by mouse is by pressing any mouse button
listed in pause-buttons
.
This setting only affects the main gameplay scene, and it does not affect other scenes such as the pause menu and the results scene.
This setting is only useful when enable-mouse
is true
.
enable-touchscreen
.true
, false
.This setting is used to set whether the touchscreen should be enabled at all.
If it is false
, the touchscreen inputs will be ignored,
in all scenes including the main gameplay scene, the pause menu, and the results scene.
touchscreen-whole-screen
.true
, false
.This setting is used to set whether the touchscreen should have whole-screen judgement.
This setting is only useful when enable-touchscreen
is true
.
touch-pause
.true
, false
.If this setting is true
,
you can hit the pause button in-game just like
how you would hit a note without whole-screen judgement
using the touchscreen.
This setting only affects the main gameplay scene, and it does not affect other scenes such as the pause menu and the results scene.
This setting is only useful when enable-touchscreen
is true
.
nickname
.This setting is used to set the nickname of the player. The nickname will be displayed in the results scene.
avatar
.none
, online
, upload
, gravatar
.This setting is used to set the avatar of the player. The avatar will be displayed in the results scene.
avatar-online
.You can fill in the identifier of an online avatar to use it here. If you want to use an avatar from outside the server of Sunniesnow, you may also specify the URL of the image you want to use here.
This setting is only useful when avatar
is set to online
.
avatar-upload
.You can upload an image here as the avatar.
This setting is only useful when avatar
is set to upload
.
avatar-gravatar
.You can fill in the email address of your Gravatar account to use its avatar here.
sscharter
.true
, false
.This setting is used to set whether the sscharter integration should be enabled.
When it is true
, the sscharter integration will be enabled.
When it is false
, the sscharter integration will be disabled.
When sscharter integration is enabled,
the game will try to connect to the sscharter server
if the currently loaded level is served by sscharter
without the --production
flag.
sscharter-live-restart
.true
, false
.This setting is used to set whether the game should restart when the level file is updated by sscharter.
When it is true
, the game will restart when the level is updated by sscharter.
When it is false
, the game will not restart when the level is updated by sscharter.
This setting is only useful when sscharter
is true
.
The default values of the following settings are dependent on your device. Actually, the screen resolution of your screen. Sometimes you may find that the default values are too large for the game to run smoothly (this is due to the poor graphical performance of the browser, especially on mobile devices), so you may want to set them to smaller values to have better experience.
width
.This setting is used to set the width of the game canvas.
height
.This setting is used to set the height of the game canvas.
popup
.true
, false
.This setting is used to set whether the game should be shown in a popup window.
When it is true
, the game will be shown in a popup window,
and the game canvas of the current webpage will be hidden.
When it is false
, the game will be shown in the current webpage.
fullscreen-on-start
.true
, false
.If it is true
, the game will try to go to fullscreen mode when it starts.
You can still toggle fullscreen by other means after the game has started.
There is a button in the pause menu and a button in the results scene
to let you toggle fullscreen.
float-as-fullscreen
.true
, false
.There are two ways of handling fullscreen in the browser:
one is to use the native Fullscreen API
(when this setting is false
),
and the other is to make the position of the canvas fixed and make it cover the whole screen
(when this setting is true
).
When using the Fullscreen API, it may fail due to permission checks by the browser.
For example, in Chrome, you will have to interact with the webpage before anything in the webpage can go fullscreen.
This will make things inconvenient when using instant-start
.
Some browser environments also lack the proper support of the Fullscreen API.
When using the Fullscreen API, you can exit fullscreen mode when you hit Escape or F11 on most browsers.
avoid-downloading-fonts
.true
, false
.If it is true
, the game will not download any fonts.
This is useful when your network is slow
because downloading fonts may take a long time.
These settings are used to set the condition for the context menu (right-click menu) of the game canvas to be enabled. When the context menu is enabled, you can right-click the game canvas to show the context menu.
context-menu-play
.true
, false
.This setting is used to set whether the context menu should be enabled when playing.
When it is true
, the context menu will be enabled when playing.
When it is false
, the context menu will be disabled when playing.
context-menu-pause
.true
, false
.This setting is used to set whether the context menu should be enabled when pausing or finished.
When it is true
, the context menu will be enabled when pausing or finished.
When it is false
, the context menu will be disabled when pausing or finished.
context-menu-no-modifier
.true
, false
.This setting is used to set whether the context menu should be disabled
when holding Control
(Command on macOS) or Alt.
When it is true
, the context menu will be disabled in this case.
When it is false
, the context menu will not be disabled in this case.
This setting has higher priority than context-menu-play
and context-menu-pause
.
plugin
."online"
and "upload"
.Each plugin has its own settings. Each element in the array represents the settings for one plugin.
The possible values of plugin-online
and plugin-upload
are also arrays,
and the elements of the three arrays correspond to each other.
You can click the Add button to add a plugin, and click the Delete button to remove a plugin.
plugin-online
.plugin
,You may set the identifier of an online plugin to use it. If you want to use a plugin that is not in the Sunniesnow server, you may specify the URL of the plugin file.
This setting is only useful when the corresponding plugin
item is "online"
.
plugin-upload
.You may upload a plugin file to use it.
This setting is only useful when the corresponding plugin
item is "upload"
.
renderer
."canvas"
, "webgl"
.When the setting is "canvas"
,
Sunniesnow uses the canvas API to draw everything.
When the setting is "webgl"
,
Sunniesnow uses the WebGL API
to draw everything.
The technical differences between the two renderers:
The actual differences that you may experience during the game:
background-blur
is only available when WebGL is used;
with the default skin, the trails of tip points
and the colorful rank frame of the all-perfect rank
are only visible when WebGL is used.There are some graphical settings
that are only useful when renderer
is set to "webgl"
.
antialias
.true
, false
.This setting is used to set whether antialiasing should be enabled.
When it is true
, antialiasing is enabled.
When it is false
, antialiasing is disabled.
Antialiasing is a technique to make the edges of objects look smoother. It may lead to noticeable performance loss on some devices.
power-preference
."default"
, "low-power"
, "high-performance"
.This is a hint indicating what configuration of GPU is suitable for the WebGL context.
Setting it to "high-performance"
will prioritize performance over power consumption,
and setting it to "low-power"
will prioritize power consumption over performance.
Because this is just a hint, whether it actually affects the performance or the power consumption is not certain.
debug
.true
, false
.If it is true
, the game will be in debug mode.
The game will show more information on UI in debug mode.
You can pin points on the screen or remove pinned points (replace the Control key below with the Command key on macOS):
You can also pin a new point by entering the coordinates in the text box below the game canvas.
hide-debug-except-pause
.true
, false
.This setting is only useful when debug
is true
.
If this setting is true
, the debug UI will be hidden except when the game is paused.
If it is false
, the debug UI will be shown all the time.
suppress-warnings
.true
, false
.If it is true
, the game will suppress warnings from showing on DOM.
It is useful when a chart contains many warnings, and you do not care about them.
Even when suppressed, the warnings are still showing in the console.
Refresh the webpage. Specially on Firefox, Bypass all network caches.
Set the language of the webpage. It does not affect the language of the game.
The settings that you set above are automatically saved for next page load when you hit the Start button. If you want to delete the saved settings, you can click the Delete button here. If you reload the page immediately after deleting the saved settings, the settings will be reset to the default values.
You can export the saved settings to a JSON file here.
You can import saved settings from a JSON file here.
The chart offsets that you set above by filling in chart-offset
are automatically saved for every every online level file
that you have played.
They are saved when you hit the Start button.
They are restored when you load the same online level file again.
If you want to delete the saved chart offsets,
you can click the Delete button here.
You can export the saved chart offsets to a JSON file here.
You can import saved chart offsets from a JSON file here. They are merged with the existing saved chart offsets.
You can play the Offset Wizard by hitting this button. The chart of the Offset Wizard is guaranteed to be well-timed, so you can use it to set the offsets. For detailed instructions, see how to set offsets.
How this is different from just setting
level-file-online
to "offset-wizard"
and starting the game is that
this button will automatically set autoplay
to false
,
volume-se
to 0
,
and chart-offset
to 0
.
These three settings, if different from the saved settings, will not be saved
so that you can immediately play other levels without changing them back.
Service worker is used to make the game playable even offline. This is done by caching everything that needs downloading.
As defined here, there are three kinds of caches:
However, sometimes you may want to update the local files while you are prevented from doing that because of the cache hits. That is when you need to delete some of the caches.
Notice: The caches are immediately deleted without confirmation when you hit the Delete buttons, and this cannot be undone.
After you delete the caches of online resources, the game will try to retrieve the online resources from the server (or from whatever URLs you entered) again. For example, if a level file that you play online is outdated, you may want to delete the caches of online resources to make the game retrieve the level file again.
After you delete the caches of site resources, the game will try to retrieve the site resources from the server again. You need to do this if the game itself is updated, and you want to play the new version of the game.
After you delete the caches of external resources, the game will try to retrieve the external resources from the server again.
Clear the logs.
Generates a cover image for the level file.
This can only be used after the game has started.
The resolution of the generated image is the same as the dimension set in
width
and height
.
The fields for x and y coordinates and the width are all optional. When specified, they will be used to determine which part of the background image is used as the theme image of the cover. The x and y coordinates are the center of the theme image (the origin is the top-left corner of the background image). When omitted, the theme image will be the largest square in the center of the background image.
This button is used to start the game.
If you hit this button when the game is already started, the game will be restarted (i.e. stopped and then started).
This button is used to stop the game. After the game is stopped, it does not update its graphics anymore. Memory is released, so you cannot resume the game after you stop it.
If you want to start the game again, you can hit Start button again.
This button is used to pause the game.
This is not affected by pause-double-time
or second-pause
.
This button is used to resume the game after it is paused.
This button is used to retry the game after it is finished.
This button is used to toggle fullscreen mode.
This button is used to toggle the visibility of the pause UI (the three big buttons) when the game is paused.
There are three different offsets that you can set in Sunniesnow:
offset
, delay
, and chart-offset
.
Each of them mitigates a different synchronization problem.
Here is a comparison in what they actually shift
and what problems they can mitigate:
Setting | What it shifts | What it mitigates |
---|---|---|
offset |
Judgement time windows | Display lag and input lag |
delay |
Music | Audio output lag |
chart-offset |
Events in the chart | Charter mis-timed the chart |
Normally, if the same person plays on the browser on the same device,
the offset
setting and delay
setting should be the same for all charts.
On the other hand, the chart-offset
should be different for different charts,
but it should be the same for all players, browsers, and devices.
For this reason, offset
and delay
are saved together with other settings,
but chart-offset
is saved separately per each online level file.
In the following subsections, we will discuss how these three offsets affect different aspects of the game.
Theoretically, you should try to let the three things synchronous:
the display of a note, the music, and
the input of the player (or the judgement time).
(Because human brain also has different lags for vision, hearing, and touch,
so the standards of synchronism is dependent on individuals.)
There is no easy way to measure the display lag, the input lag,
and the audio output lag at the same time.
Fortunately, by the same reason, we just need to offset two things
(namely the music and the judgement windows),
i.e., setting offset
and delay
, to make the three things synchronous.
Setting the offsets rely on a well-timed chart.
You can utilize the
Offset Wizard,
whose chart is guaranteed to be well-timed.
Before you start, you should set autoplay
to false
and set volume-se
to 0
(to avoid the SEs from affecting your timing).
The full process of setting the offsets consists of two steps.
The first is to set offset
, and the second is to set delay
:
volume-music
to 0
.
Then, play the Offset Wizard.
In the results scene, tap the screen in the center to see judgement details.
You should see the mean value () and the standard deviation ().
You should try to let to be lower than 30 milliseconds
(it is OK if you cannot, but try to make it as low as possible).
Then, add the value of to the offset
setting.
You can repeat this step until your is very close to zero
(lower than 5 milliseconds at best).
After this step, the display and the judgement time should be synchronous enough.volume-music
back to a non-zero value so that you can clearly hear it.
Then, play the Offset Wizard.
Try to let to be lower than 20 milliseconds
(it is OK if you cannot, but try to make it as low as possible).
Then, subtract the value of from the delay
setting.
You can repeat this step until your is very close to zero
(lower than 5 milliseconds at best).
After this step, the music and the judgement time should be synchronous enough.After these two steps, you should have your offset
and delay
settings well-set.
Normally you do not need to adjust often
because they should be the same for all charts.
After you have set offset
and delay
,
you should play well-timed charts without any synchronism problems.
However, if you find that the chart is not well-timed,
you need to adjust the chart-offset
setting.
You can just add the value of one of your plays of the chart
to the chart-offset
setting
(before that, make sure that game-speed
is 1
).
start
and end
treat different offsetsThe start
and end
settings are used to set the range of the chart to play.
Whether an event in the chart is included in the gameplay is determined
by whether its time is within a specified range of music.
Therefore, the inclusion of events will possibly change
if you change chart-offset
because events may be shifted out of or into the range.
However, offset
and delay
do not affect the inclusion of events.
When we talk about SEs being affected, it means whether the time at which an SE is played relative to the music is affected.
When se-with-music
is true
, Sunniesnow tries to play the SEs
at the exact same time of the music as the events in the chart specify.
Therefore, the SEs will be affected by chart-offset
while offset
and delay
do not affect the SEs.
When se-with-music
is false
, Sunniesnow plays the SEs immediately
when the judgement is made.
When autoplay
is false, SE are played immediately after the player hits the note,
which depends on the player, so we cannot talk about how they are affected by offsets.
When autoplay
is true, the judgement of a note is made at the frame when the judgement should have been made,
so the SEs will then be affected by offset
.
Because the judgement time windows are different relative to the music
when the music is delayed,
so the time at which SEs play relative to the music will also change in this case,
so delay
also affects SEs.
game-speed
treats different offsetsThe game-speed
setting is used to set the speed of the music.
The actual shifted amount by chart-offset
is affected by game-speed
,
but offset
and delay
are not affected.
You can use URL search parameters to specify settings. This will override the saved settings from previous sessions.
The parameter names are the same as the setting ids listed above.
The parameter values are whatever values you want.
String values are the
URL-encoded
values of the corresponding setting values (without quotes).
Numeric values are just the decimal representations of the corresponding setting values.
Boolean values are true
and false
.
For example, if you want to specify the judgement windows to be the strict judgement windows in the URL, the scroll speed to be 2.5, and to play SE with music, append the following search string to the URL of Sunniesnow:
?judgement-windows=strict&speed=2.5&se-with-music=true
For exclude-buttons
etc., the values are space-separated lists.
In a URL encoded string, spaces are replaced with plus signs (+
),
so the space-separated lists are then represented as +
-separated lists.
For example, if you want to exclude the left, middle, and right buttons of the mouse, you may append the following search string to the URL of Sunniesnow:
?exclude-buttons=0+1+2
To specify an array in the URL, specify a parameter multiple times.
For example, plugin=online&plugin=upload
makes plugin
to have value
["online", "upload"]
.
Then, you may use this to specify the online plugins to use.
For example, if you want to use the plugin sample-plugin
and the plugin empty
,
you may append the following search string to the URL of Sunniesnow:
?plugin=online&plugin-online=sample-plugin&plugin=online&plugin-online=empty
Besides the settings, there are some other URL search parameters.
Some of them do not require any values to be specified.
For example, to use instant-start
, you may append the following search string to the URL of Sunniesnow:
?instant-start
and that is all.
instant-start
This parameter does not need any value.
When there is instant-start
present in the URL parameters,
the game will start immediately after the page is loaded.
Note that if fullscreen
is true
,
it is probable that the game cannot enter fullscreen mode normally
due to the permission checks by the browser.