Skip to content

Releases: DragShot/fnf-psych-engine-xt

Psych XTended v0.5.0

26 Sep 06:09
Compare
Choose a tag to compare

This second release focuses on including new features that make it stand apart from Psych 0.6.3:

  • Lua Scripting:
    • Added the ability of creating custom states (or replacing existing ones) by using Lua scripts. These will be read from the folder mods/your-mod/states/.
    • Added the option to submit Lua functions as an additional parameter to doTween%(), so they're called when the transition ends.
    • Added a global xt_version with the version of Psych-XT, visible to any Lua script.
    • Added Lua functions folderExists(), fileExists(), readFile() and readLines() for locating and reading mod assets.
    • Added Lua functions writeFile(), makeFolder(), removeFile() and removeFolder() for manipulating files inside the active modpack.
    • Added Lua functions getSongData() and getWeekData() for reading song and week info, useful in Story Mode and Free Play menus.
    • Added Lua functions startStoryMode() and startFreeplay() for starting regular FNF games, needed for Story Mode and Free Play menus.
    • Added Lua functions getSongScore(), getSongRating(), getWeekScore(), resetSongScore() and resetWeekScore() to retrieve/reset high scores from, useful in Story Mode and Free Play menus.
    • Added Lua functions getClientPreference(), setClientPreference(), saveClientPreferences() and loadClientPreferences() for reading, updating and saving user settings from within Lua states.
  • Internal Changes:
    • Locked dependency versions due to some bugs and compatibility issues reported in newer releases.
    • Added MusicBeatState type ScriptedState, for states like menu pages built entirely using a script.
    • Extracted some fields and methods from PlayState into MusicBeatState, in order to share them with ScriptedState.
    • Added class StateLua, representing the Lua script used in a scripted state.
    • Extracted most fields and callbacks from FunkinLua into a helper class LuaUtils, for them to be shared with StateLua.
    • Reorganized Lua callbacks in functions according to their topic.
    • Exported CustomSubstate, DebugLuaText, ModchartSprite, ModchartText and ModchartTimer as public classes, available from scripting package.
    • Added state-related resource loading functions (folder mods/<modname>/states) into Paths.
    • MusicBeatState now accepts text tags too as indication of what state to load next. This can be used in order to load scripted states in place of some of the existing ones, or to load custom states defined in the active mod.
    • Added DynamicAccesor and DynamicAccess in order to simplify access to internal objects and arrays from Lua scripts.
    • Now the states that are able to change the active mod (story mode, free play, setings, etc.) will remember the mod folder they were called from, returning control to it when the user goes back to the previous menu without doing changes through them.
    • Now modchart texts can be placed in the camera of your choice on creating, instead of being bound to camOther.

With these changes, the core concept of making custom states using Lua scripts is now functional. At the time of this update, one mod has been released that leverages the new capabilities of the modded engine: Universo Style.

Future updates will aim to reduce the limitations of these new scripted states, polish any rough edges, and add more features that may complement these tools well.

Psych XTended v0.1.0

14 Apr 18:06
Compare
Choose a tag to compare

This first release is mainly focused on porting most of the relevant features from the custom build used in Vs Selever to the current version of Psych Engine.

  • New features:
    • Added the curFolder global to Lua scripts, reliably holding the name of the data folder the chart was loaded from. This may or may not be the same as the song's name, depending on chart settings.
    • Reworked Lua's require so it supports both the usage of lib/ featured in 0.5.1-xt and executable-level access as seen in current Psych Lua.
    • Switched implementation of LuaJIT to a dedicated fork, including some fixes and improvements provided by the community:
      • "Replace the args switch by something more flexible", by @Stilic
      • "Allowance for lua function callbacks and infinite arguments", by @flashintv
      • "Lua_helper.callback_handler: return nil if the haxe function returned null", by @marius851000
      • "Slight optimizations", by @mitaka78
      • "Support for translating maps to Lua tables", by @superpowers04
  • Features ported from 0.5.1-xt:
    • Autoloadable dialogues in Story Mode
    • Custom sounds for characters loaded by default in their dialogues
    • Language support for dialogue files
    • Spanish characters for the bitmap font
    • Lua Scripting extensions: readFile(), getLangCode(), require
    • Lua Scripting limitations: disabled os functions related to subprocess execution
    • List of animations per character (Character.animations)
    • Slightly increased difficulty defaults
    • Random chance alternate menu background
    • Score and combo text hidden on botplay
    • Customizable intro text (from the first enabled mod folder)
    • That one tween in the splash screen from old Kade
  • Dropped from previous version:
    • Stock "Toggle Ghost Trail" event from Vs Selever (can be safely implemented with scripts)
    • Vocal/Inst re-alignment on game start (bug doesn't seem to happen anymore)
    • Legacy text format for dialogues (from v1.0, based on Kade)

Psych Engine 0.6.3

29 Mar 20:35
Compare
Choose a tag to compare

This is a trimmed down version of Psych Engine 0.6.3 (plus updates up to March 2023), with the original weeks from Friday Night Funkin' removed from its assets. This might be useful for those looking to start a mod based on Psych Engine without all of the inherited baggage, so I'm adding a tag for it.

No new features have been introduced at this point yet.