Developer Guide - Product Guideline and Procedures
- 1 1. Overview
- 2 2. Core Product Requirements
- 3 3. Image & Asset Guidelines
- 4 4. Content & Authoring Standards
- 5 5. Development Workflow
- 6 6. Screenshots & Store Assets
- 7 7. Helpful Tools
- 8 8. Procedures
- 9 9. Submission – Dropbox or SVN
- 10 10. Submission – Folder Structure
- 11 11. Turning In a Product
- 12 12. Updating a Product
- 13 13. Product Status Definitions
As a Community Developer of Fantasy Grounds products, refer to the Fantasy Grounds Community Developer email sent when joining the Community Developer mailing list.
It contains required procedural and login information.
If you have not joined the mailing list yet, see Procedure – First Steps below.
1. Overview
This guide defines the standards, requirements, workflows, and submission procedures for Fantasy Grounds products, including modules, adventures, rulebooks, asset packs, extensions, and rulesets.
Intended Audience
Community Developers
Conversion Developers
Artists (maps, tokens, portraits)
Ruleset and extension developers
2. Core Product Requirements
2.1 Naming & File Conventions
Filenames must use A–Z, a–z, 0–9, underscore (_), dash (-) only
Avoid apostrophes, quotes, accents, or special characters
Module filename must match the Product ID provided by SmiteWorks
Decorators may be used for multiple modules:
<ProductID> GM<ProductID> PG
2.2 Module Metadata Requirements
The module Name field must match the Product ID (with decorators if needed)
Avoid special characters in the Display Name
All products must be exported from Fantasy Grounds Unity
3. Image & Asset Guidelines
These guidelines exist to maintain performance on lower-resolution systems and reduce memory/network load.
3.1 Supported Image Formats
WEBP
WEBM (VP8)
PNG
JPG
3.2 Image Optimization
Static WEBP at 75% quality is recommended
Be mindful of total product size, especially animated assets
Avoid duplicating images between Player and GM modules
If an image is needed in both Player and GM modules, store it in the Player module and link to it from the GM module.
3.3 Image Size & Type Specifications
Image Type | Recommended Format | Recommended Size | Notes |
|---|---|---|---|
Images (Maps) | WEBP (75%) | ≤ 4K×4K pixels; ≤ 2MB static; ≤ 10MB animated | Target grid <100px; break up large maps; include LOS & lighting |
Images (Brushes / Stamps) | WEBP (75%) | ≤ 100×100 pixels per grid square | Example: 4×4 tile = 400×400 |
Images (Creatures) | WEBP (75%) | ≤ 2K×2K; ≤ 1MB static; ≤ 5MB animated | Creature images are rarely zoomed |
Images (Other) | WEBP (75%) | ≤ 4K×4K; ≤ 2MB static; ≤ 10MB animated |
|
Tokens (2D – Top Down) | WEBP (75%) | ≤ 512×512 (Small/Medium); ≤ 1K×1K (Large+) |
|
Tokens (2.5D – Camera) | WEBP (75%) | ≤ 2K×2K; ≤ 1MB static; ≤ 5MB animated | Transparent background; height data required |
Initiative Indicators | WEBP / WEBM | ≤ 1K×1K; ≤ 1MB static | Transparent background |
Skybox (Panoramic) | WEBP / WEBM | ≤ 2800×1400 recommended; ≤ 4K×2K max |
Top-down or Flat tokens follow Tokens (2D) specs.
Full-body and camera tokens follow Tokens (2.5D) specs.
4. Content & Authoring Standards
4.1 Text Usage
All text should be entered as text, not embedded in images, except for:
Unsupported special characters
Visual clues embedded in artwork
Timelines and charts
4.2 Reference Manuals & Story Entries
Products should be created with a Reference Manual (Books > Campaign)
The reference manual should be divided into Chapters and Sub-chapters to closely resemble the printed book or PDF
Page Headers should not duplicate page names
Page sections should apply appropriate Frames to resemble the book or PDF
Images should be placed from the Asset Window in-line with text
Text should be formatted to match the book or PDF. See guide
Tables should be laid out with appropriate column span widths relative to content. See guide
Any referenced FG record (encounter, area, NPC, item, treasure) must be linked
NPC dialogue must use boxed text with a speaker
GM narration must be boxed text
4.3 Developer Notes (Required)
Each product must include a Developer Notes page containing:
Version number
Version history
Notes describing deviations from the PDF (e.g., page numbers replaced with links)
4.4 Exporting the Module
Player-facing content should be marked as a Player Module
The Read Only checkbox should no longer be used
Mark all Record Types needed for the final product
Match the Category to existing products
5. Development Workflow
5.1 Before You Start
Review source material thoroughly
Contact Developer Relations if new functionality or record types are required
5.2 Extensions vs Rulesets
Module-specific features → Extension (.ext)
Cross-product features → Ruleset update
Developer Relations will help determine the best approach
6. Screenshots & Store Assets
Requirements
Minimum 5 screenshots at 1920×1080
JPG at ~70% quality
One screenshot must feature the cover
High-resolution Cover Image for the store
Store images must be uploaded to Dropbox only.
Do not upload store images to SVN.
7. Helpful Tools
Conversion Checker
8. Procedures
8.1 First Steps
Email:
Include your name, email address, and request to join the Community Developer mailing list.
8.2 Signing Up for a Product
Select a product from the Adaptation List in the Developer Portal
Email James Holloway with:
Full product title
Estimated completion time
Wait for confirmation before starting work
If AI-generated content is included, disclose the tools used and affected assets in the product notes.
9. Submission – Dropbox or SVN
9.1 Dropbox
Shared folder name:
Smiteworks_for_<your name>One master folder per product
Zip/unzip folders before upload
Do not manipulate files inside Dropbox
Warning: Store backup copies of your work separately from this submission Dropbox folder. These folders are periodically cleared out to free up space.
9.2 SVN
Use assigned SVN path
Extract MOD / EXT / PAK files
Remove packaged originals
Do not checkout folders in SVN. Just run an Update prior to committing a new version. This will flag any possible conflicts that need to be resolved prior to submission.
10. Submission – Folder Structure
Each product should be put into a folder named with the product id. Inside this folder you will put one or more of the following:
Subfolder | Contents |
|---|---|
campaign | Development campaigns (cleaned of session/user files)*. Take the folder inside the Fantasy Grounds data/campaigns folder and copy it inside the campaign folder that you are turning in. |
extensions | Unzip your extension files and place them in a subfolder here. Name that inner folder with the product ID (and add a short descriptor if needed, like "ABC123GM"). |
modules | Unzip your module files and place them in a subfolder here. Name that inner folder with the product ID (and add a short descriptor if needed, like “ABC123GM”). |
rulesets | Unzip your ruleset files and place them in a subfolder here. Name that inner folder with the product ID (and add a short descriptor if needed, like “ABC123GM”). |
store | Cover art, screenshots, Steam images go directly into the store folder. No need for any subfolders here. |
For example a module folder should look like: <productid>\modules\<productid>\definition.xml
You only need to add a descriptor if there are multiple sub-folders such as multiple modules or multiple extensions or multiple rulesets.
* db.script.XXX.xml, chatlog.html, db.session.XXX.xml, windowstate.xml, extensionstate.xml, modulestate.xml, usersettings folder, moduledb folder.
Products containing a non-theme extension or ruleset must include:
<ProductID>folder (ruleset/extension only)<ProductID>-datafolder (modules, campaigns, portraits, themes)
11. Turning In a Product
Upload files via SVN or Dropbox
Upload store images to Dropbox
Go to the Developer Portal
Click Review on the product
12. Updating a Product
Upload updated files
Click Update in the Developer Portal
Document changes using:
[Fixed][Updated][Added][Removed]
Submit the update
13. Product Status Definitions
Development – Assigned, awaiting submission
Review – Under internal review
Bugfixes – Issues found, awaiting fixes
Steam – Submitted to Steam
Priced – Approved and scheduled
Posted – Live on store and Steam