Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Uploading Community Sheets

1652888783
Alan S.
Pro
Sheet Author
So, I've been making custom sheets for my home games for a few years, and my designs  have gotten good enough that I really should be uploading these as community sheets.  They meet the various requirements for layout (e.g. they do have roll buttons and roll templates, don't use tables). But I'm a little bit stuck as to what the next steps are. 1) Other than the .css and .html, what other files are needed or recommended and what info must they contain?  I see that the sheets in the roll20 github all have something called sheet.json--how do I make that? 2) What is the dirt-simplest way to actually get the files onto github so I can make a pull request?  The guide on the wiki seems to have a lot of steps about having a cloned repository on your desktop that seems unnecessarily complicated.  Right now, I'm just typing html and css into the custom sheet section of the game settings page, so I don't even have these files on my computer. 3) For sheets with custom images, I've seen a recommendation that those image files be uploaded to github as well.  How does that work?
1652903001
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Hi Alan, First, a question. You mention these are for your home games. Are they for published systems? or for your personal homebrew? The repo only accepts sheets for published systems (i.e. must be available publicly somewhere). Additionally, sheets are usually only accepted if there is not already a sheet for the system. Now, to your actual questions: 1) Other than the .css and .html, what other files are needed or recommended and what info must they contain?  I see that the sheets in the roll20 github all have something called sheet.json--how do I make that? The sheet.json file is the only other required file, but I generally recommend that sheets being submitted to the repository be translatable as well which would require a translation.json and the translation support embedded in the sheet. A sheet.json is just a file that contains a JSON object describing the sheet files to be used. 2) What is the dirt-simplest way to actually get the files onto github so I can make a pull request?  The guide on the wiki seems to have a lot of steps about having a cloned repository on your desktop that seems unnecessarily complicated.  Right now, I'm just typing html and css into the custom sheet section of the game settings page, so I don't even have these files on my computer. There really isn't an easy method to do this. You'll need to submit the sheet files via github. The wiki has a walkthrough on that  ( two of them actually ). You'll need to save the files to your computer before uploading them to github, simply save the code for each file type into a file of that type. E.g. save the text of the html code in a file ending with .html. 3) For sheets with custom images, I've seen a recommendation that those image files be uploaded to github as well.  How does that work? You would upload these images to the repository in the same directory as your sheet code. Then, once they are uploaded, you'd edit your code to point to these versions of the images and then update your code on the repository with the new code that points to the github version of the images. The whole process takes several days.
1652904781

Edited 1652908869
John D.
Pro
Sheet Author
Alan, I just had to go through this again as my GitHub Desktop client s the bed and took down all my branches with it...anywho, the process is not that difficult once you know what you're doing...like most things.  Here's my short hand tips to get you going. If you've not done so already, download GitHub Desktop and install it on your machine. Also, create a GitHub account if you've not done so already. Browse to the Roll20 GitHub repository here and click the green, jolly, candy-like Fork button.  This should forward the request to your GitHub Desktop client and start to download of 1+GB of character sheets you will never use.  I know it seems superfluous but it's the way GitHub was designed to work.  Consider it the cost of doing business.  ;) After the fork finishes downloading, you may create your first branch.  A branch contains your current work, and if it is your first branch then you need to include the 4 required files: html, css, sheet.json. preview.jpg.  The html and css files should have the same name of your sheet, like mysheet.html and mysheet.css.  The sheet.json and preview.jpg filenames should be those exactly (more on those later). Create your first branch!  This will be your main branch (more on this later).  In your forked Roll20 repository, create a new folder named after your character sheet.  Copy the 4 required files into the folder.  You should see the GitHub Desktop client detect the changes.  Commit the changes, publish your branch, then create a pull request (PR).  GitHub Desktop will walk you through this one step at a time.  Just be patient! Your browser should popup and navigate to GitHub where you'll complete the PR.  Name the PR after your character sheet and append the title with the type of PR it is: new sheet, bug fix, new feature. Fill out the PR form, it is broken up into 3 sections.  You'll want to middle section for new sheet, you can delete the rest.  Place an x between the [ ] for each item you've completed (make sure there are no spaces, such as [x].  Then submit it!  Note: your new sheet will fail the automatic checks...don't fret, they all do. Other Things sheet.json documentation here ; also peruse through your forked Roll20 repository to see what others have done.  You can make this very simple, but at some point you should spend some time to deep dive into understanding how this works as it can be used by GMs to set default settings for new sheets.  This is also how people can find you if they encounter bugs and need your help publishing a fix. preview.jpg should just be a screen capture of your character sheet. Consider that you will work with 3 types of branches: 1) your main/development branch, the one you will initially submit to get your character sheet on Roll20 (call this something like mysheet_main or mysheet_dev); 2) when you need to fix bugs, create a new branch based on your main branch, call it something like mysheet_rollButtonFix; 3) when you're working on a new feature for your sheet, again create a branch based on your main branch and call it something like mysheet_newStatsUI.  When you are finished fixing a bug or complete a feature, merge the bug/feature branch back into your main branch and publish/PR your main branch (not the bug/feature branch!). If you're working on a feature in your feature branch but find a bug you need to fix, create a new bug fix branch and when complete  merge the bug fix branch into your main and feature branches to make sure your code is consistent.  Hope that makes sense. Use a sandbox to do your dev work in, not a game.  This will save you so much time and headache, but before you submit your PR and after it is merged, you should test your changes in a game for sanity.  Strang things happen that aren't always apparent in a sandbox.
1652905487
John D.
Pro
Sheet Author
Scott, you beat me to a reply once again!  In my defense, I spent the 30 minute offset in our replies yelling at my children.  ;)
1652906247

Edited 1652906269
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
Heh, you also hit on the need for a preview image which I forgot to mention. One thing that I'll note is that the command line interfaces for Git will seem terrifying, but I'd really recommend using a CLI interface (e.g. git Bash) over githubDesktop. The CLI is much more powerful, and only requires learning maybe 5-6 commands.
1652908203
John D.
Pro
Sheet Author
Scott, You make a good point about using Git CLI.  I'll jump down that rabbit hole soon, as I am much more in favor of CLI and scripting over UI.  Recently I got my head wrapped around Custom Roll Parsing and OnixRing's change player hack.  One thing at a time!  I'm doing a major overhaul in my character sheet to take advantage of these techniques to automate combat without API.  Your Sheet Author's Journey section on CRP was a good primer for me that got the hamster wheel turning in my mind.  Thank you for that!  ;)
1652910498

Edited 1652910529
Scott C.
Forum Champion
Sheet Author
API Scripter
Compendium Curator
John D. said: Scott, You make a good point about using Git CLI.  I'll jump down that rabbit hole soon, as I am much more in favor of CLI and scripting over UI.  Recently I got my head wrapped around Custom Roll Parsing and OnixRing's change player hack.  One thing at a time!  I'm doing a major overhaul in my character sheet to take advantage of these techniques to automate combat without API.  Your Sheet Author's Journey section on CRP was a good primer for me that got the hamster wheel turning in my mind.  Thank you for that!  ;) I don't want to hijack this thread, but I would recommend not using the Roll20 Async stuff from OnyxRing. It is very cool, but unfortunately it makes your sheet incompatible with any API scripts (as in the API sandbox will error out and shut down). If you want more information, PM me or start another thread to discuss it.
1652918380
Alan S.
Pro
Sheet Author
Thank you for your help, folks.  I think I've more or less got it figured out, but will post for more help if I get stuck.