FNF Modcharting Tools
Just a thing I made to make modcharting easier, should be easy to add to most engines. Still very WIP and not everything is supported yet!
Features
Modifier system for easing in and out effects
Custom Sustain Renderer (using FlxStrip for stretchy sustains)
Multiple playfields that can have their own positions and modifiers
Custom Modifier Support via Hscript
Support for multiple engines
- Base Game (not tested)
- Psych Engine (working 0.6.3, includes lua functions)
- Leather Engine (working 0.4.2)
- Kade Engine (not tested)
- Yoshi Engine (not tested)
- Forever Engine Legacy (not tested)
- FPS Plus (not tested)
Credits
- Original FNF Team - they made the game
- NotITG - Inspiration (made me love modcharts lol)
- OpenITG - Math used for some modifiers
Installation
You need the most recent version of HaxeFlixel for it to work. (5.2.1 as of writing)
With Source:
- Install the haxelib by typing
haxelib git fnf-modcharting-tools https://github.com/TheZoroForce240/FNF-Modcharting-Tools
in the console - Now you only need to make a few small additions to get everything working,
- In MusicBeatState.hx:
class MusicBeatState extends modcharting.ModchartMusicBeatState
{
- In PlayState.hx:
import modcharting.ModchartFuncs;
import modcharting.NoteMovement;
import modcharting.PlayfieldRenderer;
override public function create()
{
//Add this before camfollow stuff and after strumLineNotes and notes have been made
playfieldRenderer = new PlayfieldRenderer(strumLineNotes, notes, this);
playfieldRenderer.cameras = [camHUD];
add(playfieldRenderer);
add(grpNoteSplashes); /*place splashes in front (add this if the engine has splashes).
If you have added this: remove(or something) the add(grpNoteSplashes); which is by default below the add(strumLineNotes);*/
// (at the bottom of create())
ModchartFuncs.loadLuaFunctions(); //add this if you want lua functions in scripts
//being used in psych engine as an example
callOnLuas('onCreatePost', []);
super.create();
public function startCountdown():Void
{
generateStaticArrows(0);
generateStaticArrows(1);
//add after generating strums
NoteMovement.getDefaultStrumPos(this);
- In Note.hx:
class Note extends FlxSprite
{
//add these 2 variables for the renderer
public var mesh:modcharting.SustainStrip = null;
public var z:Float = 0;
- In Project.xml:
<!--Set this to the engine you're using!-->
<define name="PSYCH" />
<haxelib name="fnf-modcharting-tools" />
You need to define which engine you're using to fix compiling issues, or it would default to base game settings (downscroll won't work etc). Available ones: PSYCH, KADE, LEATHER, FOREVER_LEGACY, YOSHI, FPSPLUS
- Now if your game compiles successfully then you should be all good to go.