The folder structure will be majorly rethought in Bolt 2 in order to:
- Facilitate version control by separating plugin folders from transient and generated data
- Facilitate debugging and release by distributing the plugin as C# scripts
- Prepare for an eventual migration to the Unity Package Manager
The new structure will be as follows:
- Assets/
- Ludiq/
- LICENSES.txt
- Ludiq.Icons.dll
- [Plugin]/
- Editor/
- [Plugin].Editor.asmdef
- IconMap/
- Runtime/
- [Product]/
- Ludiq.Generated/
- Ludiq.Generated.root
- Persistent/
- Variables/Resources/ (Legacy)
- ProjectSettings/
- [Plugin].ProjectSettings.asset
- Transient/
- Extracted.bin
- AotStubs.cs
- link.xml
- GraphScripts/
- SerializedPropertyProxies/
Folder Structure
Ignore File
With this structure, a .gitignore
or .collabignore
file would be as simple a these two lines:
Assets/Ludiq/
Assets/Ludiq.Generated/Transient
Distributing as source files
Distributing Bolt 2 as source files has multiple benefits:
- It allows the use of
#define
directives throughout the Bolt source, allowing us to fine tune the build for maximal compatibility and speed based on the Unity version and the target build platform
- It simplifies debugging by allowing users and developers to use the Visual Studio bridge, set breakpoints, and get line-by-line errors with relevant stack traces
- It preserves fast build times because we use Assembly Definition Files to pre-compile the Ludiq and Bolt assemblies separately from your custom scripts
It has one major drawback: components and scriptable objects created with Bolt 1 will display as missing because their source script GUID changed from a DLL to a script file. Thankfully, we already have a GUID replacement utility in place and migration will be an automated one-click process.