Skip to content

Commit

Permalink
Rewrite note style documentation.
Browse files Browse the repository at this point in the history
  • Loading branch information
EliteMasterEric committed Sep 14, 2024
1 parent 30e6854 commit bae59d8
Show file tree
Hide file tree
Showing 7 changed files with 122 additions and 82 deletions.
2 changes: 1 addition & 1 deletion src/08-custom-notestyles/08-00-custom-notestyles.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

This chapter will walk you through the process of creating a functioning, fully compatible Friday Night Funkin' mod, using the game's official systems for loading custom content and scripts. Once your mod is complete, you will be able to place it in the `mods` folder in your game install and use its content in-game without overriding the base game content and still maintain compatibility with other mods.

This chapter goes over adding new note styles to the game, and using them in a level.
This chapter goes over adding new Note Styles to the game, and using them in a song.
128 changes: 119 additions & 9 deletions src/08-custom-notestyles/08-01-creating-a-notestyle.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,22 @@

## Note Style Assets

In order to create your own note style, you will need up to 4 assets:
- `notes`: The general notes that are displayed in the chart, as well as in-game the player needs to hit.
- `noteStrumline`: The notes on the strumline, along with their corresponding animations, such as it being `static`, the strumline note being `pressed`, `confirming` the note hit.
- `noteSplashes`: The special effect when the player gets `Sick!` rating.
- Currently is buggy, since it doesn't use the asset you provided.
- `holdCover`: The special effect when the player is holding a note.
- Currently is buggy, since it doesn't use the asset you provided.
In order to create your own note style, you will need assets for a variety of elements:

- `note`: The general notes for the song. These display in the chart editor as well as in-game as the notes the player must hit.
- `holdNote`: The sprites for the hold notes which require the key to be held rather than pressed.
- `noteStrumline`: The notes on the strumline, which react when the player presses the keys, and provide visual feedback for when notes need to be hit.
- `noteSplash`: The special effect when the player gets `Sick!` rating.
- `holdNoteCover`: The special effect when the player is holding a hold note.
- `countdown`: The assets (both the sprites and audio) for the countdown that happens before the song starts.
- `judgementShit`: The assets for judgements, which display how well you hit a note.
- `comboNumber0`: The assets for the combo counter, which displays when you hit a certain number of notes in a row.

These assets should be placed in your mod folder, ideally somewhere organized. They don't have to be in any specific location, just one that you can directly reference from your note style's JSON data file.

## Note Style Fallback

Note styles use a recursive fallback system; essentially, you can specify just one or several assets for a note style. If a fallback note style is specified, the parent will be queried for any assets that aren't included. If the parent doesn't have an asset, ITS parent will be referenced, and so on. This allows you to easily make note styles which perform only slight variations on the style they are based on.

## Note Style Data

Expand All @@ -18,7 +27,7 @@ Below is the "funkin" (aka the default) note style json file `assets/data/notest

```json
{
"version": "1.0.0",
"version": "1.1.0",
"name": "Funkin'",
"author": "PhantomArcade",
"fallback": null,
Expand Down Expand Up @@ -71,16 +80,117 @@ Below is the "funkin" (aka the default) note style json file `assets/data/notest
"data": {
"enabled": true
}
},
"countdownThree": {
"data": {
"audioPath": "shared:gameplay/countdown/funkin/introTHREE"
},
"assetPath": null
},
"countdownTwo": {
"data": {
"audioPath": "shared:gameplay/countdown/funkin/introTWO"
},
"assetPath": "shared:ui/countdown/funkin/ready",
"scale": 1.0,
"isPixel": false
},
"countdownOne": {
"data": {
"audioPath": "shared:gameplay/countdown/funkin/introONE"
},
"assetPath": "shared:ui/countdown/funkin/set",
"scale": 1.0,
"isPixel": false
},
"countdownGo": {
"data": {
"audioPath": "shared:gameplay/countdown/funkin/introGO"
},
"assetPath": "shared:ui/countdown/funkin/go",
"scale": 1.0,
"isPixel": false
},
"judgementSick": {
"assetPath": "default:ui/popup/funkin/sick",
"scale": 0.65,
"isPixel": false
},
"judgementGood": {
"assetPath": "default:ui/popup/funkin/good",
"scale": 0.65,
"isPixel": false
},
"judgementBad": {
"assetPath": "default:ui/popup/funkin/bad",
"scale": 0.65,
"isPixel": false
},
"judgementShit": {
"assetPath": "default:ui/popup/funkin/shit",
"scale": 0.65,
"isPixel": false
},
"comboNumber0": {
"assetPath": "default:ui/popup/funkin/num0",
"isPixel": false,
"scale": 0.45
},
"comboNumber1": {
"assetPath": "default:ui/popup/funkin/num1",
"isPixel": false,
"scale": 0.45
},
"comboNumber2": {
"assetPath": "default:ui/popup/funkin/num2",
"isPixel": false,
"scale": 0.45
},
"comboNumber3": {
"assetPath": "default:ui/popup/funkin/num3",
"isPixel": false,
"scale": 0.45
},
"comboNumber4": {
"assetPath": "default:ui/popup/funkin/num4",
"isPixel": false,
"scale": 0.45
},
"comboNumber5": {
"assetPath": "default:ui/popup/funkin/num5",
"isPixel": false,
"scale": 0.45
},
"comboNumber6": {
"assetPath": "default:ui/popup/funkin/num6",
"isPixel": false,
"scale": 0.45
},
"comboNumber7": {
"assetPath": "default:ui/popup/funkin/num7",
"isPixel": false,
"scale": 0.45
},
"comboNumber8": {
"assetPath": "default:ui/popup/funkin/num8",
"isPixel": false,
"scale": 0.45
},
"comboNumber9": {
"assetPath": "default:ui/popup/funkin/num9",
"isPixel": false,
"scale": 0.45
}
}
}

```

There is quite a lot to unravel, let's break it all down.
- `version`: The version number for the Note Style data file format. Leave this at `1.0.0`.
- `name`: The readable name for the note style, used in places like the Chart Editor.
- `author`: The author of the note style, aka the artist who created the assets.
- `fallback`: The note style to use as a fallback/parent, providing a default option when the note style you are using is not available. Optional, defaults to `null`.
- `fallback`: The note style ID to use as a fallback note style. Any assets not included for this note style will use the parent's asset instead. `"funkin"` is the recommended default in order to use the default base game assets for anything that is not specified.
- `assets`: A list of asset data for each of the assets for the note style.
- See [list of assets](#note-style-assets) that you can provide the data for.

Expand Down
4 changes: 2 additions & 2 deletions src/08-custom-notestyles/08-02-using-a-notestyle-in-a-song.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

There are currently two ways to use your note style in a song once it's implemented.

1. *[FIXED IN 0.5.0]* Create a new chart. Open the Chart Editor, start a chart, and then select the `Notestyle` box from the `Metadata` toolbox before charting.
1. Create a new chart. Open the Chart Editor, start a chart, and then select the `Notestyle` box from the `Metadata` toolbox before charting.
2. Edit an existing chart in your mod. Open the `metadata.json` file of the song you want to modify and check in `playData` for the `noteStyle` key.

Once the chart which references your note style is in your mod folder, simply start the game with your mod installed.
Once the chart which references your note style is in your mod folder, simply start the game with your mod installed.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

0 comments on commit bae59d8

Please sign in to comment.