All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- The Freeplay DJ will now change if your character is associated with a Playable Character (and has valid Freeplay DJ data).
- You can disable this in the Options Menu.
- This also changes the backing text to what you set in the Playable Character data.
- Added 2 new Script Events that fire when you enter/exit the Character Menu SubState.
- Complete UI makeover and refactor:
- Characters are now shown next to eachother in a scrollable layout
- Character descriptions are now shown with a typewriter effect.
- In addition, the description text is resized dynamically to fit the text box.
- Text might be a bit unreadable the longer it is, so be careful!
- In addition, the description text is resized dynamically to fit the text box.
- You can now use the scroll wheel to navigate.
- The menu now uses your controls as configured in the Options Menu.
- The icon grid now scrolls digonally, the scroll speed is relative to the current song's BPM.
- The speed is capped at 300 BPM. I don't want to give you motion sickness.
- There is now a visual indicator for character variations, the menu will tell you how many variations are available if any exist.
- Press the DEBUG MENU key (look in Options -> Controls to see what it's mapped to) to see the variation and associated songs.
- Your characters might be positioned weird, please update your character positions in the JSON data.
- The menu might take a while to load when it's opened for the first time, especially if "Preload Sprites" is disabled!!
- Completely reworked the save data system. Internally, everything is now one object instead of multiple.
- Your save data will be migrated!
- Reworked the structure for suffixes in the JSON data.
- This is a breaking change for characters which use suffixes!
- Please see the documentation for the new structure.
- Added several new values in the JSON data:
speaker
: An alias for the GF character type.voiceID
: A custom ID that can be used in place of the character ID when using Vocal Replacement.introSwapFrame
: The frame where the turntable stops moving and the character appears in the Freeplay DJ's intro animation.- This is used when swapping out DJs, the default value is 3.
- You can now skip the unlock animation by holding shift before the animation is played.
- If "Random" is selected, the BPM is now obtained from the song metadata instead of using a hardcoded value.
- Reworked how the Result Screen animations/music are swapped out.
- This should have no effect on the functionality itself, it's simply a code refactor.
- The icon in Freeplay has been remade, it now shows the health icon of your currently selected Playable Character.
- Fixed Pico's results animations not playing if Pico (Playable) was used on Week 2 Erect.
- Fixed a bug where the Character Menu SubState can be re-opened if it was already open.
- All the Boyfriend / Pico variants have been moved to a separate mod.
- Removed the
size
andoffsets
properties from the JSON description data as the description text is now dynamically resized.
- Fixed an issue where Character Data wasn't parsed properly if the Character ID is different from the JSON filename.
- Fixed a "Null Object Reference' error when selecting "DEFAULT".
- v0.5.3 support
- You can now assign multiple character types to your character as an Array
- Characters are now sorted in Alphabetical order
- Small optimizations
- The characters now bop to the BPM of the currently selected song in Freeplay.
- A brand new unlock system. You can assign an unlock condition for your character.
- Please see the documentation on how to do this.
- In addition: Pico (Playable), Pico (Christmas), Daddy Dearest and all the Boyfriend variants are now locked, requiring you to complete their specified requirements to unlock them.
- You'll probably be seeing the unlock animation a LOT if you already completed them. This is only done once!
- The window title will now change if you're in the Character Menu.
- Added better visual feedback for selecting a character.
- New option which allows you to change the SFX used in the menu. Currently, you can only switch between
Funkin' Main Menu
andFunkin' Character Select
- Refactored a lot of the code for readability and efficiency.
- In turn, Funker Selector now requires FNF v0.5.2 and above due to breaking changes.
- Better version checking, now using a proper version rule instead of an array of unsupported versions.
- Pico (Playable) will now change to Pico (Dark) if Spookeez Erect or South Erect is selected.
- JSON character data is now cached. If you are making a JSON character and don't see the changes immediately. Press F5 to hot-reload.
- The JSON character name and the target character ID can now be different.
- Removed backwards compatability with the legacy save system from v1.1 and under.
- Removed legacy character support, please use the JSON system from now on.
- Fixed an issue where the Hotkey menu couldn't be closed with ESCAPE.
- Fixed an issue where JSON characters were re-cached everytime the game was hot-reloaded with F5.
- Cleaned up a lot of the code for
charHandler
and added comments.
- Funker Selector will no longer work on v0.5.0
- This is due to functions in the code that do not work on v0.5.0.
- Please use v0.5.1 instead.
- This is due to functions in the code that do not work on v0.5.0.
- v0.5.0 support.
- You can now have multiple song IDs for Character Variations as an Array.
- You can now specify a song's variation ID. So you can have character variations for specific song variations.
- Funker Selector should now work in unison with base game's character select!
- Example: Selecting Pico (Playable) will now play his respective animations in the Results Screen!
- Added Pico (Christmas)
- Rewritten all the code for Character replacement, the code should look a lot cleaner now.
- Reformatted all of the code for better readability.
- Optimized certain parts of CharacterMenu.
- You can now set character variations for specific songs within the Funker Selector JSON. See the documentation for more information.
- Added some more error messages for better error handling.
- Changed an error message or two for better clarity.
- Fixed an issue where character IDs with different capitalization than the target character ID were incorrectly recognized as valid, causing the character to not work as intended.
- Changed the class names for the Module and Substate to avoid confusion.
- Fixed a bug where the vocals would reset to default if the player died or restarted the song.
- Fixed a bug where the Pause Menu and Game Over suffixes would be overridden if Pico or Boyfriend (Pixel) were shown in the Character Menu.
- Added a small hotkey menu in the Character Menu, accessible by pressing D.
- J will now jump to the currently selected character.
- Optimized a few spots in the
charSelect
module andCharacterMenu
substate. - Refactored vocal replacement.
PlayState.instance.voices
is now replaced properly instead of the hacky way of settingPlayState.instance.currentChart.characters.player
and basically running with it. - Use a more memory-efficient method for "Preload Sprites".
- Fixed "Preload Sprites" doing the opposite of what it was supposed to do.
- In addition, disabling the option will now remove the sprites from memory.
- Fixed a random Null Object Reference from occuring when "Default" was selected.
- A new JSON System for adding Funker Selector characters! Loaded from
data/funkerSelector/
in the mod folder.- This should allow for more flexibility when adding characters.
- For documentation on this, please see
docs/Funker Selector JSON Character Format.md
.
- You can now change the Opponent and Girlfriend by pressing either Q or E! This will change the current page.
- Added a count to the UI which shows the current character, and the total amount of characters for the current page.
- Gave the entire UI a fresh coat of paint. If the current character is a JSON Character, they will have their sprites displayed, along with a neat little description about them!
- The UI now uses PhantomMuff by Cracsthor! Allows for text resizing, making the UI less cluttered in general.
- With this UI overhaul comes some new options related to it:
- Simplify UI: Simplifies the UI if it's too much.
- Preload Sprites: Wether to preload the character sprites or not.
- Changed the way saving works. It now uses
Save.instance.modOptions
instead of accessingFlxSave
directly.- Your currently selected character will transfer over.
- Some minor optimizations here and there, mainly for the Character Selection screen.
- With the introduction of the new JSON System,
charSelectList.txt
is now deprecated! This method of loading characters will still be supported for the time being, but I recommend moving your characters to JSON if possible.
- Fixed vocal replacement for Default variation songs.
- "Default" ID now uses the Face icon.
- Added the Boyfriend variants and Pico to the default character list.
- Pretty much everything.