Welcome to my system development tutorial for FoundryVTT! My goal is to guide you through system development with little to no knowledge of Foundry or the languages it uses. At first we'll walk through the steps to create relatively simple systems that allow you to collect data for things like stats and attributes and calculate modifiers for them, but eventually we'll get into more advanced topics like making dice rolls from your sheet or letting items be converted into macros.
If you have any questions, you can find me on the Foundry discord as @asacolips#1867. And with that, let's move onto to the tutorial!
- Getting an empty system together
- Start with a boilerplate system
- Using SWS
- Using a CLI
- Stuff to be aware of
- Scripts or ES6 modules?
- CSS preprocessors
- Handlebars
- What about 3rd party libraries?
- Localization
- system.json
- template.json
- Defining actor and item types
- Creating your main system javascript file
- Extending the Actor class
- Basic data vs. derived data
- Creating derived values with prepareData()
- _prepareCharacterData()
- Extending the ActorSheet class
- defaultOptions
- getData()
- activateListeners()
- Creating HTML templates for your actor sheets
- Extending the Item class
- Extending the ItemSheet class
- Other things to do on actor sheets
- Localization
In addition to the above, there are several more sections that will be added to this tutorial over time! Check back in every few weeks to see if any additions have been made. If there's a topic related to system development that you would like to see added to this list, shoot me a message on Discord!
- Other things to do on actor sheets
- Creating rollable buttons with dialogs
- Creating item-like data structures
- Querying for entities with map and filter
- When in doubt, look at other systems
- CONFIG and things to do with it
- More Localization
- TabsV2
- Flags
- System Settings
- Making things draggable in your sheet
- Overriding core behaviors (like the combat tracker)
- Development patterns to be aware of in the API