Repository navigation
Releases: zerratar/openff
Release list
v0.3.6
Final Fantasy IV's battles now run by the game's own rules, checked frame by frame against the Steam release: the active time, the queue of turns, every party command, the monsters' AI and counters, the battle events, statuses, summons, bosses and the win. Its field menu is rebuilt screen by screen as Steam's, as layouts a mod can restyle; the story scenes, the message window and the opening movie are Steam's too. FF3 gets fixes from players' reports: the Yes / No hand at inns and job changes, item icons over names, and Starlit Menu's portrait.
Added
- FF4 battle: the party's commands as the game runs them (Jump, Aim, Pray, Focus, Brace, Kick, Steal, Throw, Bluff, Cry, Hide / Return, Salve, Recall, Twincast, Bardsong, Ninjutsu, Cover, Dualcast, Re-equip...), the monster AI, counters and battle events, statuses (Darkness, Toad, Pig, Mini, Reflect and the rest), summons with their cast scenes, the bosses' own actions (the Mist Dragon, the Octomammoth), openings (preemptive strike, back attack), escape, the encounter whirl, the camera's shakes and boss entrances, the win and its result pages, a lost battle; the HUD, target selector, cards and lists as Steam draws them, measured with Tools/ff4hook.
- FF4: auto battle by OpenFF's gambits - C (Steam's key) or F in a battle - and a Gambits screen in the field menu, in FF4's style, to set each member's rules.
- FF4 menu as Steam's, as a layout (Data/hud/ff4_menu.xml and its stylesheet; a mod restyles it with menus/hud/): the root with the lead's thought, Inventory (Sort, Key Items, using items - status cures now cure), Magic, Equipment (Optimize, Remove), Abilities, Status, Party (Swap Rows, Party Formation), Settings, Quicksave; the place named as Steam names it.
- FF4 Settings: Music, Sound Effects and Voices, Battle Mode (Active / Wait), Battle Speed, Subtitles, Window Design (MENU_Common's six sets of window art) and Quit, kept in %LocalAppData%\OpenFF\ff4-settings.json. New in this release and not yet checked against Steam on screen; Help has no screen yet, and Voices and Subtitles are kept but not used yet.
- FF4: Quicksave ("Quicksave game and quit?") and the title's CONTINUE resuming it; the opening movie before the title; Steam's keys (Enter confirms, Backspace cancels, Z all, C auto battle, Tab skip); story scenes skippable as on Steam.
- FF4: the field message window and the scenes' caption bar as Steam's, as layouts (ff4_field_hud); scripted walks, turns and the event camera following the cast as libff4's.
- UI: screens the client draws itself as data - LayoutScreen reads a menu of frames, stylesheets and bindings, with CSS scale, multi-line text, tiled backgrounds and opacity.
- Icons for OpenFF, Crystal and the updater.
- Tools: ff4hook (beside the Steam FF4.exe: keys, frames, draws, cameras, characters, script commands run as cheats) and ff4steam.py; FF4.exe and libff4 decompiled by Ghidra headless.
- Test drives:
inn <price>boots an FF3 inn as a keeper's script does. - Crystal: a Mods tab on the start page - a mod manager. OpenFF's mods folder: each mod on or off, updated or removed (to the Recycle Bin). Each Steam or GOG copy of FF3 and FF4: what Crystal's projects installed into it, each uninstalled with a click (the originals put back), and how many other files differ from the Steam release (another mod tool's, a damaged download), with Steam's Verify as the way back.
- Crystal: a Mods tab on the start page - a mod manager. OpenFF's mods folder: each mod on or off, updated or removed (to the Recycle Bin). Each Steam or GOG copy of FF3 and FF4: what Crystal's projects installed into it, each uninstalled with a click (the originals put back), and how many other files differ from the Steam release (another mod tool's, a damaged download), with Steam's Verify as the way back.
- Crystal: installs into a Steam or GOG game leave
crystal-installs.jsonin its folder - the project, its backups, each file written - so the Mods tab still names an install whose project was deleted, and uninstalls it while its backups are there. - Crystal: deleting a project that is installed in a Steam or GOG game offers to uninstall it first (ticked), so the game is not left with files nobody can take back.
Fixes
- FF3: the hand shows on the Yes / No of the inn and the job change with keys or a pad (only the sound and the choice had worked).
- FF3: item icons no longer cover the first letter of the item's name - the Equipment screen and the item lists in the field and in battle.
- FF3: the battle hand on a target's name stands before the name, not on its first letter; the Auto battle hint no longer draws over the battle's magic, item and song lists.
- Starlit Menu (and any layout with a portrait frame): the Equipment and Status portrait follows the hero L1 / R1 move to.
- Crystal: updating a sample with changed files from the Mods tab updates it once, after the list of its files is confirmed, and the row says so at once (the page was read again before the confirm, so the button stayed).
- Crystal: the Mods tab no longer waits on the check of the games' files - it runs in the background with its progress shown (a first check reads every file of a game).
- Crystal: uninstalling from a Steam copy whose files were verified since forgets the files that are the original again, instead of keeping them on record for good.
v0.3.5
The game's files checked against the Steam release at every start; sample mods kept up to date from OpenFF's MODS list; Crystal's new start page - install a sample mod, create a mod, open a project - with a sample browser; Rogue Mode's Party with job changes, and its black screens fixed.
Added
- Menus:
menu.markedin a layout's bindings (Menu.Markedin C#) - the frame the hand the game leaves where the cursor came from stands on (the Equipment screen's tab while a slot is picked, the slot while its list is), so a layout can hide what it covers, as withmenu.focused. - Test drives:
gil <amount>andshop <index> [table]- the party's gil, and the game's shop screen asGame.Shops.Openopens it. - Game files: at every start the game's own files are checked against the Steam release's (a list of every file OpenFF reads, its size and SHA-1, in
Data/game-files/; about a second, in the background). Files that differ - a mod installed into the game folder, the phone version's files, a damaged download - are said over the title with Steam's way to put them back, Continue anyway and Don't warn about these files again; the log names them. Settings > Check game files checks at any time. - Crystal:
crystal game-files <install> <list.json.gz>makes such a list from a clean install (--checkchecks one against it). - Rogue Mode: the camp's Party shows each hero in full - job and job level, HP, magic, stats, equipment - and, once an act's boss has given its crystal, changes their job with the game's own job change scene, the gear the new job cannot wear going to the bag.
- Battle: L and R (Q and E on the keyboard) switch a target between the enemies and the party, as the Enemy / Ally button does.
- Crystal: File ▸ Update from the sample - a project made from a sample brought up to the sample as this version has it, after a list of the files it would replace; the project's own files are kept.
- Party:
Game.Party.ChangeJobworks for heroes of FF3's own job system too, not only mastery heroes. - Mods list: a sample's mod (Showcase, Mastery, Rogue Mode...) says when the release's sample is newer, and U (Y on a pad) updates it - files of it you changed are named first and a second U replaces them; an old copy made by hand loses the files the sample no longer has. Installed samples carry a
sample.json(which sample, its version, each file's SHA-1); a mod exported from a Crystal project is yours and is never offered one. - Crystal:
crystal sample-install <sample> <mods folder>installs a sample as such a mod (the release's preinstalled Showcase is one). - Crystal: a new start page, after Unity Hub - Home asks what you want to do today (Install a sample mod, Create a mod, Open a project), Projects lists them all with a filter, and Samples browses the samples with pictures, versions, tags and filters: Install, Update and Uninstall each into OpenFF's mods folder, or Create a mod from it.
- Crystal: Create a mod - a starting point (Empty, or any sample) with the name, author, version and description; File ▸ New project is now Create a mod.
- Samples: each has
tagsin itsmod.jsonand apreview.jpgfor the browser. - Mods:
mod.json'sproject- the Crystal project a mod was exported from.
Fixes
- Equipment (FF3): on a layout that gives the slots' labels a place of their own (Starlit Menu), a label stays when its slot has an item, and the hands' count sits at the end of the item instead of over its name (which it rubbed out).
- Starlit Menu 1.1: the Equipment screen's list keeps each icon clear of the hand, and the tab or slot the hand stands on shows the hand in place of its icon.
- Shops (FF3): buying no longer crashes on the quantity screen - the Steam release's layout of it has no item icon or name, which the game's code took for granted.
- Shops (FF3): the quantity screen is laid out in its own dialog - the item's name, the count beside the arrows, the total under them - instead of over the shop's question with the dialog left empty; the sell list's icons no longer sit under the hand; the hand on Buy / Sell / Exit stands clear of the word.
- Rogue Mode: the battle's opening plays again on the way into a fight - the heroes' surprise and the flash - instead of a black screen.
- Rogue Mode: starting gear no longer hands out a bow (no arrows come with it).
- Rogue Mode: Continue Run on a run past the first act no longer leaves the screen black: the warp to its battleground waits till the menus have closed.
- Menus: the game's main menu opened from a mod's screen (
Menu.OpenMainMenu) shows every hero's face, not only those loaded as the menus opened. - Crystal: the start page drops a project as soon as it is deleted.
- Crystal: deleting a project no longer fails with the shell's path error: when the Recycle Bin will not take the folder, it is moved into Crystal's own
deletedfolder instead, and a mod folder that will not go no longer keeps the project.
v0.3.4
Rogue Mode on the title - a run of FF3's battles in three acts, with rewards, elites and bosses - and the battle hooks it is built on; the job change scene for mods' menus; a fix for the Config screen crashing on a replaced menu text.
Added
- Jobs:
Game.Party.ChangeJob(id, job, done)- from a mod's menu screen, the game's own job change scene (the hero on a stage, the crystal's light, the new job's figure at the flash), thendonewith whether the job changed. - Mastery: changing jobs from its Jobs screen plays that scene, as the game's Job menu does.
- Battles:
Game.Battle.Start(MonsterGroup, battleMap, options)- a monster party made in code;BattleOptions.LossReturnsends a wipe on the field. - Battles:
BattleMonstersReady,BattleDamage,BattleTurnStarting,BattleUnitFell,BattleRewardsandGame.Battle.Units- a monster's stats for one battle, a hit's damage, a turn, a fall (and a revive), the spoils. - Rogue Mode sample: a run of FF3's battles from the title - acts, a job budget, rewards and rerolls, passives, elites, bosses, seeds.
- Test drives:
repeat <key> <seconds> until <regex>- a key pressed every so often until a log line comes (a battle's spoils, and no press past them). - HUD:
Game.Hud.FieldButtons- the field's Menu, Map and Talk buttons taken down while a mod's screens stand in for the field.
Fixes
- Menus:
Game.Menus.Openfrom the field opens the mod's screen, not the main menu. - Menus: a mod's screen leaving for the field, or for another of the mod's screens, no longer flashes the game's plain backdrop; the screen's own background stays up through the fade.
- Config: the game's Config screen no longer crashes when the menu text (
eureka_menu.msd) lacks one of its rows' words (a replaced game file); the row is left blank and the log names it.
v0.3.3
A fix for a client whose game's menu file was damaged: its mods' menus left out, and changing jobs crashing.
Fixes
- Menus: a damaged
MenuDefine.xbnin the game's folder (a frame's count of what it holds wrong) is mended for the run instead of leaving every mod's menus out; the log says so and points at Steam's Verify integrity of game files. - Job menu: choosing a job no longer crashes on a list row with no text (the job change, and the screen's other passes over the list).
v0.3.2
Mods' menus side by side - the Starlit Menu over Mastery's screens - the pad's Start for the game again, and the samples ready to play.
Added
- Mods:
loadAfterinmod.json- mods this one goes after when they are installed, whateverloadorder.jsonsays. - Menus:
"restyles": "<mod id>"on a screen definition - another mod's screen of that id in this mod's layout and look, its entry, hero pick and code kept; passed over when that mod is not active. - Starlit Menu: Mastery's Jobs, Abilities and job confirmation in the Starlit look when Mastery is installed (
tools/mastery.py); it loads after Mastery. - Release: the sample mods with code (Fellowship, HelloMod, Mastery, Survivors) ship with their built assemblies, so a sample copied into
mods\plays without the .NET SDK.
Improvements
- Pad: holding Start opens the OpenFF menu; a tap is the game's own Start again (it skips its waits). Esc still opens it at once.
- Pad: the OpenFF menu reads the pad's own buttons (Cross confirms, Circle goes back), whatever they are bound to for the game.
Fixes
- Main menu: entries of two mods together (Mastery's Jobs and Abilities with the Gambits) are no longer lit all at once, out of order or drawn with a whole sheet of icons in a mod's main menu layout.
- Job menu: a job list whose rows have no text (a menu file rewritten by a mod or an install) no longer crashes the screen as it opens.
- Menus: a patch of a screen that is not there is passed over rather than added as a screen of its own.
v0.3.1
A fix for a client that could not find the game while Crystal could.
Fixes
- Client: finds the Steam install again after a start that did not. That start remembered the Content directory as the choice in
launch.json, and every start after it said "no game content found" without looking for the game. - Client:
--content=<dir>takes a Steam or GOG install of the game, as the message about it says; it only took the extracted Content directory before.
v0.3.0
Effects of a mod's own, made in Crystal's effect editor; spells that play them; FF3's summons
played and edited step by step, new summons of a mod's own, and glTF models as summons. What
these add is drawn by the OpenFF client: a Steam mod does not carry them.
Added
- Effects: defs/effects/.json, a mod's own effect, played by spells, cutscenes and Game.Effects.Spawn(id).
- Effects: emitter, mesh, flash, shake and sound tracks on the caster, the target, between them or the world, with paths, curves, gradients, flipbooks and recolouring.
- Spells: defs/spells/.json sets the effect a spell plays, its sound and the caster's glow.
- Summons: defs/summons/.json plays a summon's outcome by the mod's own steps, and may name it in battle.
- Summons: a new summon - a mod spell based on one of the eight - with scripts of its own.
- Summons: a summon may be a monster (SET_MOTION 1000 and on loads a monster's motions).
- Models: a model of the mod's own (defs/models with a "base"), a glTF on a game skeleton under a new name, playing its file's own clips.
- Crystal: an Effects library that plays the game's effects on a battle Stage, and imports them to the new format.
- Crystal: an effect editor - tracks, modules, curves and gradients with presets, a texture picker and a timeline, saved as you go.
- Crystal: Mod ▸ Spells, New spell… and Test in battle.
- Crystal: Summons plays FF3's eight summons as the battle does, on a timeline edited in the Inspector.
- Crystal: a summon's Look swaps its model, motions, monster and effects; a glTF of the project's can be its model.
- Crystal: New summon… and Mod ▸ Summons.
- Crystal: pickers with a preview for a summon step's effects, models, motions, monsters and spells, and New effect… from the picker.
- Crystal: a gizmo on the summon Stage for an effect's place, the summon's, a move's end and camera points.
- Crystal: a summon's preview plays its sounds; Screen effects hides its fades while placing things; Look through it frames a camera step's shot.
- Crystal: the menu editor copies and pastes a frame's look and makes a stylesheet class of it.
- Crystal: effect-cases checks Crystal's and the client's effect players against shared cases.
- Summon Magic and Emerald Fire samples.
- Client: --only-mod plays one mod alone; --summon-outcome forces a summon's outcome for a test.
- Drives: learn, job, level, heal, charges and effect steps.
Improvements
- Crystal: Run in OpenFF plays the open project's mod alone; Run with the other mods plays it among the rest.
- Crystal: the effect Stage lays out the battle - a map, the monsters, the party, the battle camera - with a Show row to switch them.
- Crystal: the effect Stage's free camera orbits, pans with the middle button and flies with the right button and WASD, as the scene view's does.
- Crystal: resting the pointer on an effect in the library plays it.
- Crystal: a step's numbers drag across their labels; the summon player's buttons are icons; the timeline scrubs by dragging.
- Crystal: a Mod badge marks the project's own things in the lists, and an OpenFF only badge the client's behaviours.
- Characters: every hero's learn list applies - a spell at level 1 is known from a new game on.
- Items: a mod's own magic item gets a copy of its base's effect record.
Fixes
- Crystal: browsing effects and many open tabs no longer run out of WebGL contexts and turn a Stage white.
- Crystal: plays the Steam release's sounds (sound/*.ogg).
- Crystal: a summon's preview plays a mod effect as it is after it is changed in the effect editor.
- Crystal: a deleted copy of a summon leaves Mod ▸ Summons; its count counts summons, not files.
- Crystal: a spell of the mod's no longer shows its record twice in the inspector.
- Crystal: the scene view pans the way the camera faces.
- Crystal: effect timelines, curves and gradients draw sharp on a scaled display; switching a module off and on keeps its settings.
- Crystal: a new project no longer takes over a leftover folder of the same name.
- Effects: a game model on a mesh track takes the track's scale in the client.
- Battle: the Magic and Item lists' lines sit on the window's rows.
- Menus: the magic school icons no longer cover the first letters of the spells' names.
v0.2.4
A sample mod that redraws the game's whole menu with no code, and what the menus needed for it.
Added
- Starlit Menu sample: the main menu, Status, Equipment, Magic, Item, Job, Config and Gambits redrawn - a layout, a stylesheet and a few pictures.
- Menus: says where the hand stands on a frame.
- Menus: the input binding root - button hints follow the keyboard, a PlayStation pad or an Xbox pad.
- Menus: the places binding root - the formation's four places in order.
- Menus: the config binding root - the game's settings and volumes.
- Menus: :checked for the choice a config row has set.
- Menus: a screen's own lettering reaches every text of it, the game's lists too.
- Menus: a bound width, height or translate sizes and moves a frame's panel (bars, sliders).
- Engine API: Stats.Attack and Stats.Defense.
- Options: --jobs=all opens every job and the menu's Job at a test start.
Improvements
- Menus: a restyled menu opens much faster: painted boxes are cached and pictures shared between screens.
- Menus: Esc goes back in the game's menus.
- Menus: a press on a frame inside a row reaches the row.
- Menus: the hero pick starts on the first place with a hero.
- Menus: a text the game greys out is :disabled for the sheets.
- Menus: the config screens' texts and art follow a layout's look.
- Menus: a patch's new frames keep their place; a replacing layout keeps its focus tags.
- Gambits: the layout can place the rule numbers, ON / OFF and the L / R hint apart.
- Updates: an update is offered at the start, before the logos, the game waiting under it.
- Updates: an offered update's notes scroll (the wheel, Page Up / Down, Q / E, L / R) instead of running into the buttons.
Fixes
- Menus: the game's faces no longer flash under a layout's portraits.
- Menus: no field models on black between two screens.
- Menus: a mod's own models are no longer drawn while the game hides the field.
- Menus: a menu with many painted boxes no longer runs out of texture slots.
v0.2.3
The game now updates itself: install this version by hand once, and later releases are offered on the title and put in place for you.
Added
- Updates: the game checks GitHub for a newer release at startup and offers it on the title, with its notes.
- Updates: Update now downloads it with a progress bar, checks it against its checksum, installs it and restarts the game.
- Updates: Later, Skip this version, and Updates (Ask / Automatic / Off) and Check for updates in Settings.
- Updates: the mods folder, logs, saves and settings are kept; a failed update puts every file back.
v0.2.2
Pixel Remaster style boosters in the Esc menu, and a new look for the Esc menu and the mod list.
Added
- Quality of life: a new Esc menu page with speed x1-x4, random encounters on/off, battle EXP and job EXP multipliers (x0-x4), save anywhere and no job change adjustment.
- Quality of life: F8 cycles the speed and F11 toggles random encounters while playing; both can be bound to pad buttons.
- Quality of life: a small indicator in the corner shows which options are on.
Improvements
- Esc menu: a new look - gold framed panel, icons, steppers and switches.
- Mod list: the same new look, with checkboxes and move buttons.
- Menus: button hints show keyboard keys (Enter, Esc) when no controller is connected.