This is a VS 2022 project that can be used as a basis for making BepInEx 5 plugins for ATLYSS.
This template is targeted towards publishing mods with Thunderstore, and will generate a ZIP package for it upon building.
Set the following properties in Directory.Build.props:
AtlyssPath- IMPORTANT - the install path for Atlyss on your machine, used to reference the game assemblyCreateThunderstorePackage-trueto generate a Thunderstore package,falseto skip it; usually you want this set totrueThunderstorePackageName- the name of the package; used as thenamefield inmanifest.json, and is part of the generated ZIP nameThunderstoreTeamName- the team used for publishing this package; this should match the team that you normally use to upload to Thunderstore, and is part of the generated ZIP name- while not normally required, specifying this correctly allows you to install the mod locally without having to specify the author every time
ThunderstorePackageDescription- the description for the package; used as thedescriptionfield inmanifest.jsonThunderstoreWebsite- a link to a git repository, website, contact page, etc.; used as thewebsitefield inmanifest.jsonThunderstoreDependency- a dependency string for a package from Thunderstore; allThunderstoreDependencyitems are combined and used as thedependenciesfield inmanifest.jsonThunderstoreAssemblyInclude- an assembly to copy over to the generated ZIP package; by default, the generated plugin assembly is included- you should include any third-party or runtime dependencies that don't come from Thunderstore dependencies, or aren't bundled with ATLYSS itself
Also set the following properties in the .csproj for the plugin:
AssemblyName- name of the generated plugin assembly, also used as the GUID of the pluginProduct- used as the name of the pluginVersion- used as the version of the plugin and theversionfield inmanifest.json
You can distribute your mod on Thunderstore by uploading the generated ZIP package.
Before uploading, double check that the ZIP package contains the correct files (manifest.json, icon.png, README.md, CHANGELOG.md) and has only the strictly necessary assemblies in the "plugins" folder.
You can use the "Import local mod" in r2modman options to import your generated ZIP package.
This allows you to test your mod, and check that it will work properly for people who install it from Thunderstore.
- Change places that reference the "TemplateMod" name to the actual name of your mod
- Rename
TemplateMod.csprojand theTemplateModfolder to the name of your mod - Rename
TemplateMod.slnto the name of your mod, then open it with Notepad, and change theTemplateMod/TemplateMod.csprojpath from theProject()reference to the updated path for your project - Change variables in
Directory.Build.propsand the.csprojthat say "TemplateMod" to the name of your mod
- Rename
- Describe your mod in the README.md Thunderstore file, and add some form of contact info for people who want to report bugs or give suggestions
- Increment your
Versionproperty in the project every time you want to upload an update according to Semantic Versioning rules: https://semver.org/ - For the plugin GUID (
AssemblyName) and package name (ThunderstorePackageName), it's best to restrict it to the following characters: [A-Za-z0-9_]- Underscores are displayed as spaces in Thunderstore
- Do not change the
ThunderstorePackageNameafter uploading your mod; if you do, Thunderstore will see it as a new, unique mod, instead of updating your old submission - Set
ThunderstoreTeamNameas the name of the team you use to upload the mod on Thunderstore, and don't change it
Alternative templates:
Documentation:
- Thunderstore package format: https://thunderstore.io/c/atlyss/create/docs/
