soulstruct
Python tools for inspecting and modding FromSoftware games.
YouTube channel with some tutorials: https://youtube.com/grimrukh
Like my stuff? Consider supporting me on Patreon <3 https://patreon.com/Grimrukh
Game abbreviations used below and in package:
- DS1PTDE: Dark Souls: Prepare to Die Edition
- DS1R: Dark Souls Remastered
- DS2: Dark Souls II (either version)
- BB: Bloodborne
- DS3: Dark Souls III
- SEK: Sekiro: Shadows Die Twice
- ER: Elden Ring
Related libraries:
- soulstruct-havok: Havok classes and tools for Soulstruct, supporting map collision, character collision, animation, ragdolls, and more.
- soulstruct-vanilla: Vanilla event scripts (
.evs.py) and other vanilla dumps from Soulstruct. - soulstruct-gui: Graphical interface for Soulstruct-based modding projects, including tabs for Maps, Events, Params, Lighting, Text, AI, and Talk scripts (plus some Runtime utilities for supported games).
- Firelink: My FromSoftware modding framework written in C++, which is MUCH faster than Soulstruct for core classes such as FLVERs and Binders. Also includes memory-hooking implementations for supported games and an Elden Ring MSB class (Python is generally too slow for these).
Features
-
Unified graphical application for modifying maps, events, parameters, text, AI, and talk scripts in Dark Souls (both versions) and Bloodborne. Game data is imported as a project, edited in the window (or in Python if you prefer), and exported back to game-ready files whenever you want. Keep track of map entities, quickly navigate between data types, and view custom syntax highlighting for event scripts and AI scripts.
- Supported games: DS1PTDE, DS1R, BB
-
Event scripts (EMEVD) and EzState state machines (ESD) can be translated to and from valid Python-based languages with high-level programming features.
- Supported games: DS1PTDE, DS1R, DS2 (ESD only), BB, DS3
-
Map data (MSB), game parameters (GameParam), lighting parameters (DrawParam), text data (FMG) can be loaded into Python structures, edited, and repacked.
- Supported games: DS1PTDE, DS1R, BB (map, game parameters, and text only), DS3 (map and text only)
-
AI scripts in can be decompiled, edited, and recompiled.
- Supported games: DS1PTDE (no decompiling), DS1R
-
Unpack/repack BND archives and automatically manage DCX compression.
- Supported games: all
Metadata
Release files for soulstruct 2.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| soulstruct-2.5.0.tar.gz | 8.2 MB | With provenance | Details for soulstruct-2.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| soulstruct-2.5.0-py3-none-any.whl | Python 3 | none | any | Details for soulstruct-2.5.0-py3-none-any.whl |
Total release size: 16.9 MB
Release files / soulstruct-2.5.0.tar.gz
| Download URL | soulstruct-2.5.0.tar.gz |
|---|---|
| Size | 8.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85e5515ecc2890b2c22b1f5db2aa146e2a029f3cc0fc0ee11bfc8d685ed66807
|
|
BLAKE2b-256 checksum How to use checksums |
64a9a4b898b5a333e2f2d78d886543d675c52247f1aa5a054e2b8ceb4f8f5c10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / soulstruct-2.5.0-py3-none-any.whl
| Download URL | soulstruct-2.5.0-py3-none-any.whl |
|---|---|
| Size | 8.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f78e4f19114935d62f3644f664d7327be87e7b53c1c61dab050b63a46cfae992
|
|
BLAKE2b-256 checksum How to use checksums |
57321240450b344b5bbb12a1d249cc6e42395bc81e73a8d3fce7aec796d3c43b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logSecurity for soulstruct 2.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for soulstruct-2.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.