{"id":13661328,"url":"https://github.com/PassivePicasso/ThunderKit","last_synced_at":"2025-04-25T02:32:23.807Z","repository":{"id":37990518,"uuid":"268167001","full_name":"PassivePicasso/ThunderKit","owner":"PassivePicasso","description":"Mod Project Development Environment for Unity and Unity Games","archived":false,"fork":false,"pushed_at":"2024-11-05T23:20:01.000Z","size":22260,"stargazers_count":141,"open_issues_count":6,"forks_count":30,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-06T00:19:06.659Z","etag":null,"topics":["modding","modding-tools","unity","unity-games","unity3d"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PassivePicasso.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["passivepicasso"]}},"created_at":"2020-05-30T22:04:16.000Z","updated_at":"2024-11-05T23:19:28.000Z","dependencies_parsed_at":"2023-02-16T10:15:37.092Z","dependency_job_id":"5b691732-0066-4795-b660-4150144ea195","html_url":"https://github.com/PassivePicasso/ThunderKit","commit_stats":null,"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PassivePicasso%2FThunderKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PassivePicasso%2FThunderKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PassivePicasso%2FThunderKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PassivePicasso%2FThunderKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PassivePicasso","download_url":"https://codeload.github.com/PassivePicasso/ThunderKit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250742015,"owners_count":21479716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["modding","modding-tools","unity","unity-games","unity3d"],"created_at":"2024-08-02T05:01:32.713Z","updated_at":"2025-04-25T02:32:23.092Z","avatar_url":"https://github.com/PassivePicasso.png","language":"C#","readme":"## _**ThunderKit Crash Course**_\n\nThunderKit supports the right for women to have bodily automony.\n\nIf you like ThunderKit consider donating through\n[GitHub Sponsors](https://github.com/sponsors/PassivePicasso)\n\nJoin the [ThunderKit Discord Server](https://discord.gg/Xzf9qFj6WA) \nto get help and interact with other ThunderKit users.\n\nWelcome and thank you for your interest in ThunderKit. ThunderKit is a Unity\nextension that provides an expansive and expandable environment for mod \ndevelopment.\n\nThunderKit can help you develop multiple mods in a single project and \nstreamline your building and testing efforts through automation. Aiming to help\nyou waste less time copying files, managing collections of mods, and acquiring\ndependencies, so that you can focus on your mods and test them under many \ndifferent configurations and combinations easily.\n\nBelow is a quick overview of how to get started using ThunderKit, showing you\nthe basic parts and pieces you will need to get together to get started making\ncool stuff!\n\nThunderKit comes with a template for a simple BepInEx setup that will help you\nget straight to modding if the game you're modding can use this it.\n\n### Initial Setup\n\nThese initial steps are the universal basic setup for any ThunderKit project.\n\n1. Install Unity\n    - The version of Unity you install should match the version of the game, \n      the game's executable has its file and product version set, you can check\n      the version of Unity the game uses there. \n    - In Windows you can check the file and product version of the executable \n      by navigating to it in Windows Explorer, right clicking on the executable\n      and selecting properties. The file and product version information is on \n      the Details tab.\n    - Download specific versions of Unity from the\n      [Unity Download Archive](https://unity3d.com/get-unity/download/archive)\n    - Unity Hub cannot install all versions of Unity directly, however it can \n      install them from links on the Unity Download Archive page.\n2.  Install [Git Client](https://git-scm.com/download/win)\n    - [UPM Git Requirements documentation](https://docs.unity3d.com/2019.4/Documentation/Manual/upm-git.html#req)\n    - After installing the Git Client, you will need to exit Unity and the \n      Unity Hub. \n    - Note that Unity Hub does not close when you close the window and needs \n      to be exited from the Windows Notification Area\n3. Create a new Unity Project with the installed version of Unity\n4. Install ThunderKit\n    There are two ways of installing thunderkit, either manually editing the projects manifest.json or by using the Unity Package Manager\n    #### Manual:\n    - Open the manifest.json file in ProjectRoot/Packages\n    - Add the following to the top of dependencies\n      `\"com.passivepicasso.thunderkit\":\"https://github.com/PassivePicasso/ThunderKit.git\",` \n    - Save and close the file\n    - Focus Unity to start the install\n        - If you encounter an error when you go back into Unity, make sure the syntax for the json is correct\n        - Examples of errors are extra or missing characters such as `,`, `{` and `}`\n    #### Unity Package Manager\n    - Add Package from Git URL by using the Unity Package Manager plus icon at the top left corner\n    - Enter a url from the following options;\n      ##### Version Specific (Recommended)\n\t    The tags on the [Releases](https://github.com/PassivePicasso/ThunderKit/releases) page can be used to install a specific release\n\t    Install a tagged release using this format `https://github.com/PassivePicasso/ThunderKit.git#Tag` \n\t    replacing `Tag` tag name for the release\n\t    - For example, if you want to install Release 5.2.3 use `https://github.com/PassivePicasso/ThunderKit.git#5.2.3`\n\t    - The tag can be found on both the release list page in the sidebar and on the specific release page\n\t      on the header of the release section\n      ##### Master Build (Unstable) \n\t  * `https://github.com/PassivePicasso/ThunderKit.git`\n\t  * Up to the moment, this can be unstable at times and isn't recommended for most users\n5. Verify that the [ThunderKit Settings](menulink://Tools/ThunderKit/Settings) \n   window opened automatically.\n    - If the ThunderKit Settings window did not open after the installation \n      completes, check the Console for errors\n\n6. Click on Browse under the ThunderKit settings to locate and select the \n   games executable\n7. Configure the import process to your liking.\n    * More information about the import options can be found on the \n      Thunderkit Documentation.\n8. Hit Import\n      * It may take some time for ThunderKit and Unity to complete \n        the configuration\n7. Open the project window from the main menu via\n   [Windows/General/Project](menulink://Windows/General/Project)\n8. Create a Manifest by right clicking in any folder under assets \n   and selecting ThunderKit/Manifest\n\n### Next Steps\n\nFrom this point forward you will need to understand some facets of mod\ndeveloping in Unity and ThunderKit, these sections will cover those aspects.\nWhat you will need to do will vary depending on your projects.\n\nIf you're using Thunderstore, check the Thunderstore community for the game \nfor a ThunderKit template.  Users of ThunderKit are encouraged to build and \nshare reusable templates that define standard Pipelines for building mods for\ngames and even specialized toolkits to allow more Unity Editor functionality\nfor modding games.\n\n### ManifestDatum Staging Paths\n\nEach ManifestDatum on a Manifest will have a StagingPaths array. This is \nwhere you will indicate to ThunderKit where to deploy your assets. Paths are\nrelative to the project's root folder unless an absolute path is manually \nspecified.  Each entry will be a destination, so if you need to output \nassemblies or AssetBundles to multiple places, you can add multiple paths. \n\n### PathReferences\n\nYou can create PathReferences by using the project window context menu \nThunderKit/PathReference menu item.\n\nUse PathReferences to identify resuable common paths. A PathReference can be\nreferenced in StagingPaths by using arrow brackets.\n\nFor example\n\n`\u003cManifestStagingRoot\u003e`\n\n\n![](https://i.imgur.com/MtmmrRL.png)\n\nThunderKit includes a number of PathReferences already.\n\n![](https://i.imgur.com/afj5qZI.png)\n\n## Scripts, Assemblies, and Assembly Definitions\nIt is recommended to manage code for mod projects inside your ThunderKit\nproject. However there are a few things you need to do in order to get your \nproject setup.\n\nIn order to deploy any code you create, you will need an AssemblyDefinition. \nTo create an AssemblyDefinition, right click a folder in your project and \nnavigate to Create/AssemblyDefinition\n\nAny scripts placed in or under a  folder containing an AssemblyDefinition \nwill be included in an assembly with the same name as the AssemblyDefinition.\n\n- For Example, in the image below SomeScript and AnotherScript will both be\n  included in a library file named NewAssembly.dll\n\n![](https://i.imgur.com/XD6Mm6X.png)\n\n### Preparing AssemblyDefinitions for Deployment\nTo include these Assemblies in your mod project, you will need to add an \nAssemblyDefinitions component to your Manifest.\n1. Create or select your Manifest and click on Add Manifest Datum.\n\n![](https://i.imgur.com/0OL996l.png)\n\n3. Double Click on AssemblyDefinitions to add it.\n4. Under the Assembly Definitions component add an element to Definitions, then\n   drag and drop the AssemblyDefinition into the open field.\n5. Finally specify the output path(s) for the assemblies under Staging Paths.\n\n### Deploying Assemblies\nTo deploy assemblies managed by a Manifest you will need a Pipeline with the \nStage Assemblies PipelineJob attached.\n1. Create a Pipeline from the project window context menu, ThunderKit/Pipeline\n2. Drag and drop your Manifest into the open Manifest field on the Pipeline.\n\n![](https://i.imgur.com/7ff9RXm.png)\n\n4. Click on Add Pipeline Job\n\n![](https://i.imgur.com/jtM0Hx2.png)\n\n5. Find and Double Click on Stage Assemblies\n\nNow the Assemblies referenced in your Manifest will be deployed by the Pipeline \nto the paths specified in the Manifest's AssemblyDefinition's Staging Paths \narray.\n\n## Preparing Assets and AssetBundles for Deployment\nTo deploy assets with your mod you may need to package them into AssetBundles.\nThunderKit provides the AssetBundleDefs ManifestDatum for Manifests and the\nStageAssetBundles PipelineJob for Pipelines.\n\n1. Find and add an AssetBundleDefs to your Manifest\n\n![](https://i.imgur.com/Bh6rE2e.png)\n\n3. Add an element to the AssetBundles array\n4. Name your AssetBundle, make sure this will be a unique name, unity can only \n   load 1 bundle with a given name at a time.\n5. Add assets to the Assets array of the bundle.\n\t* You can drag and drop assets from your Project window directly onto the\n      Asset field to add them to the array.\n\t* You also use ThunderKit UnityPackage definitions to collect assets for \n      the AssetBundle's Asset array.\n6. Finally specify the output path(s) for the AssetBundles under Staging Paths.\n\n### Deploying AssetBundles\nThe PipelineJob StageAssetBundles can be used to deploy AssetBundles defined by \nAssetBundleDefs. The StageAssetBundles PipelineJob has a Bundle Artifact Path \nfield, this defaults to `\u003cAssetBundleStaging\u003e`\n\nThis is a pre-staging are for AssetBundles to prevent unnecessarily rebuilding \nasset bundles, minimizing your build times.  This can be left on the default \nvalue.\n\nThe Simulate field will execute an analysis of the AssetBundles and report in\nthe Console what will be included in each bundle, this is a minimal solution \nand in the future a UI that reports this information will be made available.\n\n1. If you don't have a Pipeline, create a Pipeline from the project window \n   context menu, ThunderKit/Pipeline\n2. If a Manifest isn't assigned to your Pipeline, Drag and drop your Manifest\n   into the open Manifest field on the Pipeline.\n3. Find and add the StageAssetBundles PipelineJob to your Pipeline\n\n![](https://i.imgur.com/qgzr9g7.png)\n\n4. Your Pipeline will now stage AssetBundles during its next run, it will build\n   out the AssetBundles to `\u003cAssetBundleStaging\u003e` and then copy them to each \n   Staging Path specified in the AssetBundleDefs StagingPaths array.\n\n## Redistributable  Libraries\n\nIf you need to create asset libraries that other developers need to depend on,\nuse [UnityPackages](assetlink://GUID/aa12c443303b4d54e9a56ac3acc7bd25) to \nsimplify that process. UnityPackages is ThunderKit tooling for \n[Unity Manual - Asset Packages](https://docs.unity3d.com/2018.4/Documentation/Manual/AssetPackages.html)\n\n### Using UnityPackages \nUnityPackages can be used to setup asset lists that can be built out to a Unity\nAsset Package.  A Unity AssetPackage allows assets to be easily imported into\nother Unity projects.\n\nUnity AssetPackages have an issue where assets in them will not work in other \nprojects if the Source code is not included with them.  ThunderKit provides the\nability to repair the mapping on these assets to allow you to distribute them\nwith compiled assemblies instead.\n\nTo use UnityPackages to create redistributable AssetPackages follow these steps.\n1. Find and Add a UnityPackages ManifestDatum to your Manifest\n\n![](https://i.imgur.com/nKWrZKa.png)\n\n3. Create a UnityPackage using the project window context menu,\n   ThunderKit/UnityPackage\n4. Add assets to the Asset Files array by adding assets individually or by \n   dragging and dropping assets.\n    - Folders can be added to the Asset Files array, however they will only include\n      assets if the Export Package Options includes the Recurse flag\n5. Find and Add a StageUnityPackages PipelineJob to your Pipeline\n \n![](https://i.imgur.com/CC0zhc4.png)\n \n6. Finally, make sure you've assigned paths to the UnityPackages StagingPaths \n   on your Manifest\n \n","funding_links":["https://github.com/sponsors/passivepicasso","https://github.com/sponsors/PassivePicasso"],"categories":["C\\#","C#","Open Source Repositories","Unity"],"sub_categories":["Modding","Cyberpunk 2077 / REDEngine 4"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPassivePicasso%2FThunderKit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPassivePicasso%2FThunderKit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPassivePicasso%2FThunderKit/lists"}