Releases: Grimrukh/soulstruct
Soulstruct Project Editor 1.4.0
Long-overdue executable update containing almost a year's worth of tweaks, internal overhauls, and minor fixes.
This executable was compiled from the dataclasses
branch, and should also be significantly faster with expanded use of dataclasses for basic structs. There'll be another speed bump in the near future with Python 3.11. I'm also working on and off on basic Elden Ring support.
As always, you may need to export game files from a previous version and re-import them into this version, as the project files (.ssp) may not be compatible -- after a year of various changes, that's likely!
Soulstruct Project Editor 1.3.2
1.3.2:
- Fixed name of 'MapCollision' event instructions when decompiling EMEVD to EVS. (If you were affected by this bug, you simply need to rename all 'EnableCollision' and 'DisableCollision' instructions in EVS to 'EnableMapCollision' and 'DisableMapCollision'.)
Soulstruct Project Editor 1.3.1
1.3.1:
Fixed the encoding used by JSON files for Params/Lighting/Text in project. (Params and Lighting use UTF-8; text enforces ASCII, as many unusual/unsupported characters appear in some of the vanilla text categories).
Soulstruct Project Editor 1.3.0
NOTE: This release had a bug with how it handles Japanese characters in text JSON files. Use 1.3.1.
1.3.0:
-
Maps, Params, Lighting, and Text can now all be stored in the project as JSON files (rather than the binary
.ssp
files). This makes version control much easier and gives you other options for editing these files via text editors and/or scripting. Openproject_config.json
and set"PreferJSON": true
to use this option. -
Params, Lighting, and Text entries right-click duplication now duplicates to the next available ID, not just the next ID, so the immediate next ID does NOT have to be available.
As with all major version updates (1.2 -> 1.3), you may need to export your game files from an older Soulstruct version and re-import them into this version.
Soulstruct Project Editor 1.2.4
1.2.4
Fixed bug breaking some param/lighting tables in PTDE (Weapons, Weapon Upgrades, Goods, Tone Map, Tone Correction).
1.2.3:
Various experimental/new features added to support Nightfall development.
For MSB fields that reference other MSB entry names, you can now set them to an empty string to revert to None
(no entry). Stable footing flag of collisions can now be properly set to -1 as well.
Soulstruct Project Editor 1.2.2
Soulstruct now has a PreferJSON
option in the config file that will save and load all map data (MSBs) as JSON files in a folder called 'maps', rather than a single pickled 'maps.ssp' file. This means that (a) map data will be less prone to breaking with large Soulstruct internal updates, and (b) version control for your project map data is much nicer.
Open project_config.json
and set PreferJSON = true
to use.
JSON support for all other project data types still to come.
Soulstruct Project Editor 1.2.1
Supports new EVS features:
HeldCondition(x)
as a shortcut forCondition(x, hold=True)
CoordEntityType
is auto-detected from event arguments annotated as Object, Character, or Region (so you don't need to passanchor_type
ordestination_type
to instructions that use that event argument as an anchor/destination).
Soulstruct Project Editor 1.2.0
New "compiled" Soulstruct GUI release. I'll try to avoid deleting the previous releases (1.1.1 at the moment) in case there are issues.
Note that, as always, Windows may complain about a potential Trojan attack from Soulstruct. This is probably because of the code used to hook into Dark Souls Remastered while it is running (an entirely optional feature). There's no danger lurking within!
The main new GUI feature is real-time DrawParam updates for DSR. While hooked, from the Lighting tab, you can inject the current DrawParam table directly to the game and see changes instantaneously, without needing to reload. This ONLY works if the number of rows in that table is the same as the table initially loaded by the game. (Remember that you can just save & quit to view DrawParam changes normally; you don't need to fully exit the game, like for GameParam.)
All other updates since 1.1.1 have been minor tweaks/fixes or API-only additions (which continue extensively to support Nightfall, but are usually outside the scope of the GUI).
Soulstruct Project Editor 1.1.1
Major internal overhaul from previous versions. Supports Dark Souls 1 PTDE, Dark Souls Remastered, and Bloodborne. (Bloodborne internal names and organization are far from perfect.)
Edit the soulstruct_config.json
file that appears next to the executable to set your default game installation paths and more. Look at the soulstruct.log
file that appears next to the executable if anything goes wrong and let me know.
Version 1.1.0 added custom script support. You can run Python scripts contained in a scripts
folder in your project from the Scripts
menu at the top of the window. (You can change the script directory in the JSON settings.) You will also see an "Open Console" option in the Scripts
menu, but this does not yet function with the compiled executable version of Soulstruct!
Project files are not backwards compatible with older versions, but you can easily port your old project into this one by exporting game files from the old version (with File > Export to... > Export Everything
) and importing those game files into this newer version (with File > Import from... > Import Everything
). You can then copy any EVS event scripts and ESP talk scripts to your new project directly to preserve any high-level logic or ID naming you have, but a few instruction/argument names may need correcting to the newest version's set.
Updates:
- 1.1.1: Fixed data import bug.
- 1.1.0: Fixed a compiler bug that prevented Bloodborne projects from being created/opened. Added custom script support.
- 1.0.1: Fixed an export bug for certain data types.
Soulstruct DS1 Project Editor
Alpha build of Soulstruct Project Editor for Windows (x64).
Launching this is the equivalent of running python -m soulstruct
with the Python package; it's just a bundled Python distribution. You can avoid the small startup lag of the package expanding itself (and gain access to more flexible Soulstruct usage) by installing the Python package.
A file called config.py
will appear next to the executable if it doesn't already exist. It contains default paths for Soulstruct; you can set DEFAULT_PROJECT_PATH
to avoid having to navigate to your project directory each time you run the program. (You can also do this from the program's File menu.)
If you get an unexpected error, check the file soulstruct.log
that will appear next to the executable and report the full traceback to me here or on Discord (or just upload the full log).
NOTE: In these early days of Soulstruct, I may occasionally make changes to the internal structure of project files (the .d1s
files that store your modded game data). This is necessary as we learn more about what certain unknown variables do. When such a change happens, you may need to export the changed file type (e.g. Maps) from the old version of Soulstruct (to binary game files), then import those binary game files into the new version. You can use the "Export to..." and "Import from..." options in the "File" menu to do this with arbitrary directories rather than exporting to the actual game directory. (If you don't care about that data type, you can also just delete the old .d1s
file and Soulstruct will prompt you to import it fresh from the game.)
As of version 0.5.4, Soulstruct will try to guess when such an internal change is the cause of an error (which will usually occur when you try to export an old project in a new version of Soulstruct). I'll try to combine these changes together as much as possible, and flag releases below where you may need to do this export/import trick.
Older versions can be found at Nexus Mods.
Version history:
0.10.3:
- Config export fixed (e.g. from File menu).
- Dead Knockback reference removed from Character params.
- Map Connection lighting fields link to the connected map.
0.10.2:
- Errors are logged properly.
- Some map field name changes.
0.10.1:
- DSR hook draw parent access fixed (for both release and debug.dll).
0.10.0:
- DSR runtime hook is much faster and can be used to set the draw parent for objects/characters.
- Improved cross-param reference search.
- Future updates will now be much less likely to require an export/re-import.
- Various bug fixes.
0.9.0:
- Many internal updates. Projects from older versions will need to be exported + re-imported.
- Various GUI bugs have been fixed.
- Data fields are much better documented, with more docstrings, types, and suggested values.
- You can add new entries to empty Map categories.
0.8.0:
- Many internal updates. Projects from older versions will need to be exported + re-imported.
- Bugs fixed with AI script handling (exporting now possible).
- More Map fields supported.
- Param reference finder now checks both item lots and shops for item IDs.
0.7.1:
- Made memory hook more reliable.
- Better errors when cross-map references are missing.
- Refactored some map rotation/translation methods.
0.7.0:
- Added tools for editing all item text at once (right-click param entry) and replacing default Japanese item param entry names with English text.
- Fixed a couple of param field type bugs (no re-import needed) and added some docs.
- Popout box can edit entry ID and text simultaneously.
0.6.4:
- Fixed bug with switching maps with a talk script selected.
- Fixed bug that was corrupting area banners in collisions on map import. (You'll need to re-import vanilla maps to fix this, unfortunately. Message me if you have any large changes you want to keep and I'll help you out.)
0.6.3:
- Fixed 'talk' subfolder names (now map IDs, not map names), which was causing issues when adding new talks.
0.6.2:
- Fixed incorrect types for "[X] Defence Addition" fields in Special Effects params (no Params re-import needed).
0.6.1:
- Fixed bug where player Y and player Z were swapped in game hook.
- Relative project paths now resolve next to the executable (versus CWD for normal Python).
0.6.0:
- params.d1s format changed. You will need to export Params data from older versions and re-import here.
- Added Growth Curves parameter table (internal name 'CalcCorrectGraph'), which determines soul costs for levelling, Estus counts, levelling bonuses, and a few other things.
- Added runtime hooks for copying player position/rotation into Maps data entries.
- Added game backup/restore options to Tools menu for easy vanilla restore.
- Easy to add new models to Maps (right click 'Model' field in character/object entry to choose from list).
- Refined Home key in text editors and added comment/uncomment hotkey (Ctrl + /)
- Fixed AI compile bugs.
- Fixed false 'unsaved changes' warning in Events tab.
0.5.4:
- Soulstruct will warn you if you need to export with an older version.
- Clicking away from editing fields now confirms changes, not cancels. (Press Escape to cancel an edit.)
- Input/links for map fields that reference multiple other map entries (e.g. Patrol Regions) fixed.
0.5.3:
- maps.d1s format changed. You will need to export Maps data from older versions and re-import here.
- Disabled AI export until I can debug some problems with it.
- Removed print statement left in map export.
- Fixed BND-from-unpacked bugs for BND3.
0.5.2:
- Fixed bugs with some maps not loading.
- Descriptions now loaded when importing entity ID modules.
0.5.1:
- GUI warns you if save directory can't be found, rather than crashing.
0.5.0:
- Categories remember your position.
- Right-click param entries to find other param references to that entry.
- Default param values are faded out (might fade a few non-default ones).
0.4.0:
- Added progress bars for lengthy import/export; added entity import option.
- Heavy internal constant refactoring.
- Better verbose map names.
- Fixed multiple ESD, Param, and Text export bugs.
0.3.0:
- Added Talk ESD script editing.
- Fixed PTDE_PATH/DSR_PATH swap bug, some AI compile bugs, and other QoL tweaks.
0.2.1:
- Fixed typo that was preventing event scripts from loading and another that limited entities list length.
0.2.0:
- Added global save/export buttons with keyboard shortcuts.
- Better fonts.
- Much better logging.
- Project window title.
- Enter/escape buttons enabled for appropriate dialogs.
- Added BND unpack/repack tools.
0.1.2:
- Fixed AI tab-switching.
- Allowed lone minus sign in numeric fields.
0.1.1:
- Fixed AI decompile/compile bug.
- Fixed EMEVD import file types.
0.1.0:
- Initial release.