Skip to content
this-is-bennyk edited this page Jun 3, 2022 · 9 revisions

Here's a list of all custom-made tools in the Benjine to assist in porting FNF-style assets to the Benjine.
Note: there are more tools than what's listed here, but they are either incomplete or one-off deals like generating the font sheets. Therefore, I'm not documenting them.

Graphics

XML To SpriteFrames

XML_To_SpriteFrames.tscn assists in converting an Adobe Animate-generated animation file to Godot's SpriteFrames resource for AnimatedSprites.
Input parameters for the following variables, run the scene with F6, then reload the project (for some reason, this is required. Idk why yet).

  • Load Path: Path to the image and XML. Input the entire resource path EXCEPT for the extension. Assumes that the XML and image have the same name and that the image ends in .png.
    Ex. res://packages/fnf/characters/daddy_dearest/DADDY_DEAREST
  • XML Path: If the XML is in a different place for some reason, you can use this variable to specify that. Input the entire resource path EXCEPT for the extension.
  • Save Path: Path to the output SpriteFrames. Input a new resource path EXCEPT for the extension.
    Ex. res://packages/fnf/characters/daddy_dearest/Daddy_Dearest
  • Optimize: Deprecated, and will be removed. Please leave it on. Why would you not want to optimize the file?

XML To Textures

XML_To_Textures.tscn assists in converting an Adobe Animate-generated animation file to individual texture files.
Input parameters for the following variables, and run the scene with F6.

  • Load Path: Path to the image and XML. Input the entire resource path EXCEPT for the extension. Assumes that the XML and image have the same name and that the image ends in .png.
    Ex. res://packages/fnf/characters/daddy_dearest/DADDY_DEAREST
  • Save Path: Start of the path for all output files. Input a new resource path, where the name after the last "/" is what all textures will be prefixed with.
    Ex. res://packages/fnf/characters/daddy_dearest/Daddy_Dearest
    Result ex. res://packages/fnf/characters/daddy_dearest/Daddy_Dearest_idle0000.res
  • Optimize: Removes duplicate files if true. Deprecated, and will be removed. Please leave it on. Why would you want two of the same image?

SpritePacker to SpriteFrames

SpritePacker_To_SpriteFrames.tscn assists in converting an SpritePacker animation file (a la Week 6) to Godot's SpriteFrames resource for AnimatedSprites.
Input parameters for the following variables, run the scene with F6, then reload the project (for some reason, this is required. Idk why yet).

  • Load Path: Path to the image and TXT. Input the entire resource path EXCEPT for the extension. Assumes that the TXT and image have the same name and that the image ends in .png.
    Ex. res://packages/fnf/characters/spirit/spirit
  • Packer Path: If the TXT is in a different place for some reason, you can use this variable to specify that. Input the entire resource path EXCEPT for the extension.
  • Save Path: Path to the output SpriteFrames. Input a new resource path EXCEPT for the extension.
    Ex. res://packages/fnf/characters/spirit/Spirit
  • Optimize: Deprecated, and will be removed. Please leave it on. Why would you not want to optimize the file?

Charting

Chart Parser

ChartParser.tscn assists in converting JSON charts to Benjine's SongChart resource.
Input parameters for the following variables, and run the scene with F6.

File Naming Properties

  • JSON Name: The name of the JSON(s) to convert. Your song MUST be in res://packages/(your mod name)/songs/(the JSON name).
  • Mod Name: The name of the folder your mod resides in, i.e. the (your mod name) of res://packages/(your mod name).
  • Inst Name and Ext: Name and extension of the instrumental file. MUST be in res://packages/(your mod name)/songs/(the JSON name).
    Ex. Inst.ogg
  • Vocals Name and Ext: Name and extension of the vocals file. MUST be in res://packages/(your mod name)/songs/(the JSON name).
    Ex. Voices.ogg
  • Result Suffixes: What each filename should end with depending on the difficulty. MUST match the number of difficulties.
    Ex. ["_easy", "_normal", "_hard"]

Chart Properties

  • Chart Type: Which engine the chart came from. Important for parsing information specific to certain engines. Has the following options (which may have sub-options):
    • SNIFF: The default chart generation style. Used by the original FNF for the Week 7 update.
    • FNFVR: Similar to SNIFF, but with some manual adjustments. Deprecated.
    • Kade V6+: A chart generated by a version of Kade Engine from version 6 or later.
      • Will automatically detect and generate BPM changes from the additional data.
    • Psych: A chart generated by Psych Engine.
      • Separate GF Lanes: If enabled, will parse any note with a "GF Sing" event into a new set of lanes called "opponent2."
  • Difficulties: A list of difficulty indices. It is [0, 1, 2] (easy, normal, hard) by default. To parse specific difficulties, reduce this to a one-element array and specify the difficulty number.
  • FNF Chart Naming: If enabled, checks for JSON files named in the FNF style.
    This only works for easy, normal, and hard difficulties. If your mod has additional difficulties, this must be turned off. In this case, you must name your JSONs as follows:
    difficulty0.json
    difficulty1.json
    difficulty2.json
    ...
    difficultyN.json
    Where the larger the number, the greater the difficulty. MUST match the difficulties in the difficulty indices list.
  • Number of Lanes: The number of lanes per step zone.

Mod Packaging

PCK Packer

PCK_Packer.tscn packages mods to be released or playtested.
See here on how to do that.