Mod Developer Guide

### Decompiling and Running

Dome Keeper is developed in an offshoot of Godot 3.5.1, GodotSteam, which supports the Steam API. If you use regular Godot 3.5.1, the engine will lack the neccessary tools for interfacing with Steam.

Decompile the game from your install location using GDRETools by selecting *RE Tools* > *Recover Project.* After decompilation, launch GodotSteam 3.5.1 and import the decompiled game to start developing a mod.

You are allowed to use the decompiled project for developing your mods, but only if you follow these rules:

* ❌**Do not** distribute Dome Keeper in binary or in decompiled form - this includes the pck! If you want to keep your workspace under version control, then either use a **private repository**, or add ***only*** your modded files to the repository.
* ❌**Do not** distribute versions of Dome Keeper built for other platforms (homebrew, mobile, etc.)
* ❌**Do not** implement malware in your mods.

At a future date, the modding branch on Steam will also include additional developer tools. (stay tuned!)

## Best Practices

### Code / Naming conventions

Dome Keeper's source code differes from the GDScript Style Guide in a few key aspects:

* use `camelCase` (lower-case beginning) instead of `snake_case` for non-virtual functions (`unlockGadget` instead of `unlock_gadget)`
* some signals use `camelCase`, some use `snake_case`. Choose your style on related precedent for your use case, or use snake\_case if you're unsure

For everything else, use the GDScript Style Guide.

Moreover, when creating upgrades, follow these naming conventions:

* upgrades always start with a string of the item they belong to
	+ e.g. all orchard upgrades start with "orchard" ("orcharddrill1", "orchardduration2", etc.)
* use incremented numbers for mechanically identical / very similar, but numerically different, upgrades
* use new words for mechanically different upgrades
* avoid using names of other upgrades
	+ with community-created content, duplicates are unavoidable but try not using overly generic item / upgrade names and definitely don't use the names of upgrades that already exist

The very earliest upgrades do not follow this convention due to being legacy code from the original Ludum Dare 48 (such as drill1, should be keeper1drill1). Those should be the only exceptions to these rules.

## Community and Feedback

You can find the modding community originating on the official Bippinbits Discord server. If you need help, want to brainstorm ideas, or just see what others are doing, that can be a good place to work with your peers.

Alternatively, Steam forums maybe?

## Legal / EULA

**⚠️With uploading mods, you accept *this mod-specific end-user liscence agreement (EULA). Make sure to read it carefully before publishing mods.*⚠️**

**Dome Keeper UGC/Mod policy**

Last update: June 2023

**Intro**

Everyone at Bippinbits appreciates all the support shown by Dome Keeper players and are honored that players want to create mods based on Dome Keeper (the “Game”). While we love to see the incredible things that you create, the team spends a lot of time, effort, and resources creating the universe and intellectual property of Dome Keeper and we need to protect and indemnify us against any issues originating from mods we have no control on. So, we have created this policy to explain what you can and can’t do with your mod so that you can drill deeper into the Dome Keeper world confidently.

Please read this Policy carefully before creating any mod:

**General Rules**

* **License:**
* If and as long as you comply with this policy, Bippinbits grants you a personal, limited, non-transferable, revocable, and non-exclusive license to create mods based on the Game - which you have duly obtained access to.

You can create, enjoy and make publicly available your mod, for your non-commercial use. However, please remember that **you are responsible for your mod**, which you give us rights to use. Your mod shall not contain any material which is unlawful, infringing, inappropriate, or violates any contracts or third-party rights.

* You hereby grant us and our affiliates a nonexclusive, royalty-free, sublicensable, irrevocable, and perpetual right to use, develop, reproduce, modify, create derivative works from, distribute, transmit, broadcast, otherwise communicate, publicly display, publicly perform and otherwise commercialise or exploit your mod in any manner or form and in any medium or forum, whether now known or later devised without attribution or compensation to you or any third party. This right shall survive the termination of this Agreement.
* **Non-commercial**: Unless otherwise agreed, the creation and publication of mods are strictly non-commercial. The mod shall be provided **free of charge** and be freely available, but you may accept donations for your time through Patreon, or similar services, or through sponsorships.
* **Intellectual Property (IP) rights:** Your rights in your mod only extend to the new, original content you create as part of your mod and do not extend to or grant any rights to the Dome Keeper game, any related IP rights or any content made available by Bippinbits in relation to the Game. Please do not use any third-party content in your mod without permission and only **use materials you are allowed to use**.

* **No hacks, no ads**: Do not create hacks for Dome Keeper. Do not use your mod to add advertisements or any monetization feature into the Game. Do not reverse engineer the Game, the mod editor or any related tools which are being made available at your own risk.

* **Behaviour:** Do not use the Dome Keeper IP in a way that is offensive, grotesque, racist, sexist, vulgar, disparaging, or defamatory.
* **Suspension:** Violating this policy can lead to suspension or termination. Bippinbits has no obligation to use, distribute or continue to distribute mods and we may restrict or remove mods at our sole discretion.
* **Report:** If you encounter content created by another player that you find offensive, we encourage you to report this content by clicking on the report button in the Steam workshop page.
* **Dispute:** first, let’s try to solve disputes informally. If it does not work, arbitration or the courts in `Stockholm, Sweden` will settle it.
* **Privacy:** if you have any questions about how your personal data may be collected when you submit a mod, please review https://rawfury.com/privacy-policy/.

**In Short**

**Use common sense, follow the law and these rules, respect the Game and its community.**