0.2.0 + TelltaleToolKit Database Generator
This is the 2nd release of the library. The API is currently unstable and buggy. If you run into any issues, please open an issue.
The API has been significantly changed - expect heavy breaking changes when migrating from 0.1.0.
This release features a lot of additions and improvements. The biggest changes are the Toolkit API, the new game-specific working environments with support for resource contexts, hashdatabases, archives API and more types support. The data folder is now included by default. Many thanks go to the various contributors who helped the project move further.
This release also comes with a new CLI tool - "TelltaleToolKit Database Generator" that's used for generating new files in the data folder. More information can be found below.
Changelog
TelltaleToolKit
Added
Toolkitsingleton class that acts as an entry point to the library.- Global registry for game profiles, metaclasses, and symbol resolution.
- Centralized archive loading with automatic format detection.
- Object serialization/deserialization for MetaStream files.
- Must be initialized with
Toolkit.Initialize()before use. - Logging support.
HashDatabaseclass - Thread-safe, in-memory symbol resolution database.- Stores CRC64 -> Symbol name mappings with concurrent dictionary.
- Supports batch imports from text files and directories.
- Event-driven architecture with
SymbolsCleared,SymbolAdded,SymbolRemoved. - Export functionality to tab-separated value files.
- Read-only mode support for immutable databases.
Workspaceclass - Game-specific working environment.- Created from a
GameProfileviaToolkit.CreateWorkspace(). - Manages prioritized resource contexts, similar to Telltale Tool.
- Handles file extraction with proper override order (higher priority wins).
- Provides game-specific metaclass lookup and symbol resolution.
- Default
MetaStreamconfiguration derived from the game profile. - Can create resource contexts from Lua resdesc files.
- Created from a
IFileProviderinterface - Common abstraction for file sources.- Implemented by
ArchiveProvider,FolderProvider, andLooseFileProvider. - Supports lookup by both CRC64 and filename.
- Enables composable, priority-based file systems.
- Implemented by
ResourceContextclass - Named collection of file providers with explicit priority.- Can be enabled/disabled at runtime.
- Automatically disposed when removed from workspace.
- Can contain archives, subfolders and regular files.
- Symbol resolution improvements.
- Workspace-level
LocalHashDatabasefor game-specific symbols. - Automatic fallback: global DB -> workspace DB -> mounted file names.
- Batch resolution with
ResolveSymbols().
- Workspace-level
- Various new T3Types for compatibility with MTRE, MSV5 and MSV6 games.
- Support for
resdesc(#1). - Support for container streams (#18).
- Experimental support creating archives. (#18)
- Experimental
PropertySetserializer. - Helper methods for
T3TextureandPropertySet. - Serializers for
D3DMeshrelated classes. - Some animation/skeleton related types in the type registry.
- New contributors in README.md.
Changed
GameDescriptorrenamed toGameProfileto better reflect its purpose.GameContextrenamed toWorkspacefor clarity.- Some class members now have default values.
- Renamed
TelltaleFileEntrytoResourceEntryto match Telltale's naming. - Renamed, reorganized and refactored various classes in
TelltaleArchives. (#18) - Refactored
Symbol. (#14) - NuGet related metadata in
TelltaleToolKit.csproj. - Package the data folder as
ttk-data.
Removed
TTKContextsingleton class. It has been replaced byToolkit.TTKstatic class. Functions are replaced by the ones inToolkit.- Default static class member in
MetaStreamConfiguration.
Fixed
- Due to the heavy refactoring, most old bugs do not apply to this version.
- Various bugs regarding loading and saving have been fixed.
TelltaleToolKit Database Generator
This is a CLI tool that scans through each ttarch/ttarch2 file in a game's directory, and generates JSON files in the "data/game_profiles" and "data/versiondb" folders.
Those JSON files are used by TelltaleToolKit to add individual support for other games.
You can submit the new files either here, or open a pull request in the repo.
Example usage in Windows Powershell:
./TTKDatabaseGenerator.exe --slug the-walking-dead-season-2-2013 --game-path "path\to\The Walking Dead Season Two" --key Twds2
When ran (like the example), the following files are generated:
- "data/game_profiles/the-walking-dead-season-2-2013.json" - general data configuration like metastream, ttarch or lua versions used in the game.
- "data/versiondb/the-walking-dead-season-2-2013-NEW.vdb.json" - a mapping between types and their CRC32s.
- "data/versiondb/the-walking-dead-season-2-2013-UNSUPPORTED.vdb.json" - class descriptions that need to be added and implemented in "global.vdb.json"
- "data/versiondb/the-walking-dead-season-2-2013-UNSUPPORTED-TYPES.csv" - unregistered types represented by a CRC64 with their corresponding CRC32
"data/versiondb/the-walking-dead-season-2-2013-NEW.vdb.json" has to become "data/versiondb/the-walking-dead-season-2-2013vdb.json" to be usable by the library.
The format for slug names is: [slug-title]-[year]-[month?]-[platform?]-[demo?]. Slug-title and year are mandatory, the rest are applied when deemed necessary.
For help, use ./TTKDatabaseGenerator.exe -?