Releases: PassivePicasso/ThunderKit
Package Management and Onboarding Update
Returning users
This is a major version update, and is significantly breaking. Back up your projects before updating.
Initial Setup
A Welcome window has been added to ThunderKit to help users set up their project.
This window can be disabled by a toggle it provides.
ThunderKit Installer - Removed
The ThunderKit installer has been removed. The installer caused many development issues and lost
work during the development of ThunderKit. While this issue may not have affected end users, the
risk associated with the cost of lost work makes this feature dangerous to continue to maintain.
Unity 2018.1-2019.2 users will need to add the Thunderkit dependency to their projects Packages/manifest.json
For Unity 2019.3+ users can add ThunderKit using the Git url and use the Install from Git option in the Unity Package Manager.
ThunderKit Settings
ThunderKit Settings now get a dedicated window from ThunderKit and can be accessed from the main menu under Tools/ThunderKit/Settings.
These settings will no longer show up in the Project Settings window.
Debugging Features
ComposableObjects now support some debugging features to provide an easy access interface to implementations of Composable Object to report errors in the UI.
ComposableElements now have 2 members, IsErrored and ErrorMessage. The ComposableObjectEditor will change the header color of ComposableElements to red if IsErrored is true, signalling where a problem may be.
Implementations of ComposableObject are responsible for setting the values in IsErrored and ErrorMessage.
For examples see Pipeline
and PathReference
If a pipeline encounters a problem it will halt its execution and highlight the step that it faulted on.
The PipelineJobs and Pipeline itself are setup to log exceptions to the Unity console like normal, with these two pieces of information you should be able to quickly identify and rectify problems.
ThunderKit Manifests do not utilize these debugging features as they are only Data Containers, however if worth while usage for debugging issues can be identified then support will be added.
Dependencies
Dependency Management in the 3.0.0 update has changed significantly. Instead of Manifests installing and managing dependencies in its entirety, Manifests will now only
be responsible for containing dependency references.
Instead a user will now install packages via the Package Manager, and then
add the Manifest from the Packages folder to the Manifest that requires the dependency
Package Manager
ThunderKit now includes a complete Package Manager, available from the main menu under Tools/ThunderKit/Packages
The ThunderKit Package Manager is how you will add and remove all mod dependencies for your project.
If a mod in your project needs to depend on a Mod, Loader, or Library, you have the ability to install these dependencies through the Package Manager.
Currently the Package Manager comes with support for Thunderstore by default, select your Thunderstore community by setting the url from the ThunderKit Settings.
You can also create a Local Thunderstore source where you can specify a folder to examine for zip files.
Zip files in Local Thunderstore Sources must conform to Thunderstore's file naming schemes in order to be resolved correctly.
This scheme is: Author-ModName-Version.zip
Documentation
Documentation is a major issue for new users and as such ThunderKit now comes with integrated documentation to help onboard new users.
The documentation available from the main menu under Tools/ThunderKit/Documentation
Documentation is a work in progress and improvements will be made as a better understanding is gained about users needs for information.
Assembly Reference stabilization
With Every update of ThunderKit it is currently recommended to back up your project to allow you the ability to recover from a failed upgrade.
When ThunderKit reaches a point of stability where I feel confident upgrades may not result in damaged projects it will be made as a special announcement.
This update fixes an issue with Assembly referencing that could cause project stability issues.
In order to make use of these fixes, the simplest solution may be to build a new project from scratch and transfer your assets.
You can alternatively use your existing project, and remove all dependencies and game assemblies that were added to the project via ThunderKit.
Once removed you can re-configure the project to pull in game libraries and other dependencies you've loaded using ThunderKit.
User Experience
This update aims to fix a number of issues in the initial release as well as establish some additional core features.
Many of these features have been released already over the past few days, this is a summary of changes.
There have been a number of issues that should improve the general user experience and increase the flexibility of how you interact with ThunderKit.
The next major focus of ThunderKit updates will be focused around generalizing the Manifest system to a more flexible way to add and manage dependencies.
New Features
- Establish base for documentation system
- Establish Package management as a core system
- Add support to drag and drop Thunderstore package zip files into ThunderstoreManifest dependencies
- Components of ComposableObjects now provide Copy, Paste, and Duplicate from their menus
- Ensure a Scripting Define is always added for packages installed by ThunderKit, Define will be the name of the package
Improvements
- Clean and organize systems for managing the loading process of ThunderKit
- Improve the design of the ThunderKit Installer package to support more versions
- Use built in Asset Package (unityPackage) options
- ComposableObject now has an array of ComposableElements instead of ScrtipableObjects
Fixes
- Sort add component options
- Fix cases where directories are not created when needed
- Fix some problems with the Thunderstore - BepInEx templates
ThunderKit - Pillars Update
Now with an Installer!
Download the unityPackage below to easily add ThunderKit to a new Unity project.
Establishes the 3 core systems of ThunderKit as Composable systems.
Manifests now can re-use many features and also be extended to include Store specific features or additional asset referencing systems as developers need.
Pipelines can now be used to configure build systems that are flexible and can respond to a game's modding requirements
PathReferences is a component based code driven system that allows the establishment of complex and simple rules for Path and file lookup and referencing
These three system work in combination to provide a highly flexible framework that should be adaptable to any games modding requirements, contributions of new Templates and Components that add support for additional stores, modding frameworks and build needs are welcome.
There are now templates instead of hard coded classes that add support for BepInEx plugin development.
Thunderstore specific code has been moved into the Integrations Namespace, along with 1 BepInEx PathComponent for the PathReference system.
Pipelines, Manifests and PathReferences are each component driven systems with a specific required component base type.
Pipelines use PipelineJobs
Manifests use ManifestDatums
PathReferences use PathComponents
You can add custom scripts for each of these component types to extend these systems to fill in missing needs you may find.
Documentation covering this new ThunderKit is under way that aims to cover these three systems and the currently implemented component types.