Skip to content

iMrShadow/TelltaleToolKit

Repository files navigation

Nuget License

TelltaleToolKit

TelltaleToolKit is a .NET library created to allow modding games which run on the Telltale Tool game engine.

Table of contents:

Introduction

Telltale Tool is a proprietary game engine, originally created by Telltale Games. The engine was never publicly released which made official modding from very limited to impossible. This library aims to help modders with developing modding tools, plugins and converters, scripting, and more.

Features

  • Extract and create archive files (.ttarch and .ttarch2).
  • Open, edit, and save assets (textures, meshes, sounds, and more).
  • Create environments for working with assets of a specific Telltale game with resource contexts.
  • Modular and flexible registration system (types, metaclasses, serializers, per-game configs).
  • Create and manage simple hash databases.
  • Cross-platform: Windows, Linux, Mac (requires .NET 8.0 or later, or .NET Standard 2.1).
  • For more details, check the documentation folder.

Installation

You can install TelltaleToolKit via NuGet Package Manager:

Install-Package TelltaleToolKit

Or add it to your .csproj file:

<PackageReference Include="TelltaleToolKit" Version="0.2.1" />

The Nuget package ships a default database, but if you want the latest one - you can download it from this link.

Usage

using TelltaleToolKit;
using TelltaleToolKit.T3Types.Textures;
using TelltaleToolKit.T3Types.Textures.T3Types;

// 1. Initialize the library.
Toolkit.Initialize();

// 2. Create a workspace for the target game.
Workspace workspace = Toolkit.Instance.CreateWorkspace(
    "The Walking Dead Workspace",
    gameProfile: "The Walking Dead: Definitive Series");

// 3. Mount the game data.
workspace.LoadArchive("WDC_pc_WalkingDead404_txmesh.ttarch2", contextName: "WalkingDead404 Textures");

// 4. Load an asset.
T3Texture? texture = workspace.LoadAsset<T3Texture>("obj_backpackClementine400.d3dtx");

if (texture != null)
{
    // 5. Modify it.
    texture.Name = "obj_backpackClementine400_modified";
    texture.SurfaceFormat = T3SurfaceFormat.ARGB8;
    texture.Width = 1024;
    texture.Height = 1024;

    // 6. Export it back to disk.
    workspace.ExportAsset(texture, "obj_backpackClementine400_modified.d3dtx");
}

API Documentation

The API is currently unstable and may change. For now, refer to the source code, inline XML docs.

Supported Games

See the data folder for more information regarding supported games.

License

This project is licensed under the MIT License. See the LICENSE file for more information.

Credits

Thanks to Gamma_02 for contributing a lot to this project such as adding resdesc parser and many improvements to the API. The Lua decompiler is based on their UnLuaCSharp library.

Thanks to Knollad Knolladious for adding D3DMesh serialization support.

Thanks to Plague for providing version databases for "Borderlands" (2021, PC and Nintendo Switch).

Thanks to Pumba for providing version databases for "The Wolf Among Us".

Thanks to Lucas Saragosa for his outstanding work on TelltaleToolLib, Telltale Inspector and Telltale Editor, which made me understand Telltale's meta system.

Thanks to Luigi Auriemma for their ttarchext, which laid much of the groundwork for .ttarch and .ttarch2 extraction.

Thanks to Pavel Sudakov and Heitor Spectre for their TTG Tools, which provided additional references for .ttarch and .ttarch2 extraction.

Thanks to Bennyboy for their work on Telltale Music Extractor, which contained some additional blowfish keys for demo games.

Thanks to Azil Zogby for his work on TelltaleHydra and TelltaleDevTool.

Thanks to all contributors which worked on the popular C# game engine Stride. The serialization system is inspired from there.

Thanks to David Matos for introducing me to the Telltale Modding Community.

About

A .NET library for modding games running on the Telltale Tool engine, providing an API to read and write assets and archives.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages