# AMP Templates
For the AMP community to share Generic Module templates.

# Making generic module templates
See the wiki article for the module: https://github.com/CubeCoders/AMP/wiki/Configuring-the-'Generic'-AMP-module

You can also use the online configurator at https://config.getamp.sh/ to help with building templates.

# Sharing Templates
Right now the following restrictions apply to templates that may be publicly shared via this repository (some of these will be relaxed over time):

 - The application must not require any login/authentication in order to download (except for SteamCMD logins).
 - If the application does not have a Linux version you should add a Proton download via SteamCMD to support it if possible.
 - Applications that have customizable settings must use a Settings Manifest.
 - Only applications that expose some kind of Console that AMP is able to pick up.
 - Do not invoke any shell scripts/batch files. You must only launch actual executables.
 
# To share a template

Create a pull request containing the following files in the top-level directory of the repository:

    *APPLICATIONAME*.kvp
    *APPLICATIONAME*config.json
    *APPLICATIONAME*metaconfig.json (Optional)

With the names fully lower-cased.

For example, `valheim.kvp`, `valheimconfig.json`, `valheimmetaconfig.json`

Do not use any directories and include no-other files.

**If you are only submitting a draft, make sure to append (draft) to the pull request title.**

# Editing templates

If you believe that a template needs either updating or changes made, please submit a pull request for that template with a justification for why that change is needed. If possible try and contact the original author first.

# After submitting a template

Once you've submitted a pull request, your configuration will be tested in its as-is state by an automated tool. It will:

- Load the configuration
- Attempt to perform an update
- Attempt to start the application
- Verify that the application reaches the 'Ready' state.
- Attempt to stop the application
- Verify that the application reaches the 'Stopped' state.

You should ensure that your configuration can do this on both Windows and Linux before submitting your configuration.