Godot 4 extension for importing League of Legends file formats using league-toolkit.
ltk-godot is a GDExtension written in Rust that brings League of Legends asset importing capabilities to Godot 4. It leverages the powerful league-toolkit library to parse and load various LoL file formats.
- WAD Archives - Container format for League of Legends assets
- Meshes - 3D model formats (SKN, SCB, SCO)
- Textures - Texture formats (DDS, TEX)
- Animations - Animation data (ANM)
- Metadata - Game metadata (BIN)
- Rust 1.70 or later
- Cargo
- Godot 4.1 or later (for testing)
# Clone the repository
git clone https://github.com/LeagueToolkit/ltk-godot.git
cd ltk-godot
# Build the extension (debug)
cargo build
# Build the extension (release)
cargo build --releaseThe compiled library will be placed in target/debug/ or target/release/ depending on your build configuration.
The extension includes EditorImportPlugins that automatically import League of Legends assets:
- Copy the entire
ltk-godotdirectory into your Godot project - The
ltk_godot.gdextensionfile tells Godot where to find the native library - Enable the "LeagueToolkit Importer" plugin in
Project > Project Settings > Plugins - Drag and drop
.skn,.scb,.sco, or.texfiles into your project - Godot will automatically import them as native Godot resources
See EDITOR_PLUGIN_USAGE.md for detailed documentation.
You can also use the loader classes directly in GDScript:
# Example: Loading a WAD archive
var wad_loader = WadLoader.new()
wad_loader.load("res://path/to/archive.wad")
var entry_count = wad_loader.get_entry_count()
print("WAD contains ", entry_count, " entries")
# Example: Using imported mesh (with EditorImportPlugin)
var mesh_instance = MeshInstance3D.new()
mesh_instance.mesh = load("res://path/to/model.skn")
add_child(mesh_instance)This project uses:
- godot-rust (gdext) - Rust bindings for Godot 4
- league-toolkit - Rust library for League of Legends file formats
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0) - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit issues or pull requests.