These are made on a per game system basis by users, and must then be approved by Obsidian Portal. Prior to approval, only the person who is writing it can see them.
@TreChriron, there are a few requirements to be able to use a DST:
1. You have selected a Game System for your Campaign (under Manage Campaign > Edit Settings > Game System).
2. Someone submitted a DST for that Game System.
3. That DST was approved for general use (or you're the one who submitted it).
If all of these conditions are met, when you create a new character or edit an existing character, a dropdown menu will appear directly above Basic Info. It will contain the DSTs you can use. Selecting one will cause that DST to appear, and you can fill it out. After you save your changes, that DST will be used for that character going forward.
Hey, I'm new here and I'm putting together a DST for the old Mayfair Games DC Heroes system and I've a question that concerns the character data. I read that the data is single level JSON object ... just key value pairs like so:
@Benzai_Aether, you can definitely do user input equipment lists. Check out the Exalted character sheets from Chainsaw and some of the D&D sheets (I know Karelzarath's 3.5 one has it, I think the 4th ed. ones have it, etc..). They work more off of javascript than the base pairs setup, but yeah.
To elaborate slightly on the back end of dynamic lists used in various sheets, they kind of hack around things rather than doing it in the way you were suggesting Benzai_Aether. The data for a sheet lives in a JSON blob, but that blob is recreated from scratch by the common DST script each time the sheet is saved. Fiddling with it directly wasn't a super great option because there's not a good way to intervene between the stage where the data is collected into the blob and the stage where it gets saved. Thus what the lists do is just make regular fields on the page with auto-numbered field names, which get recorded as top level data with unique names like anything else.
I opted for that solution over doing something like storing a delimited string of values or collecting the list data into an object, converting it to a JSON string, and storing that string in a single field, because this allows for implicit conversion between sheet designs with a dynamic number of entries and those with fixed length lists. I don't think that's ever actually been an issue in practice, but one of the guidelines for the DSTs early on was that as much as possible players should be able to switch between DST designs for a system, even those by different authors, and have data migrate automatically between them.
@ChainsawXIV - Thanks. Hm. That'll be a bit messy with Mayfair's DC Hero system since beyond a basic character, all items and equipment are essentially "characters" themselves. Then you get into "Alter-Ego" characters (think the Hulk) that are two unique character sheets ... and now give one, or both, Gadgets/Items. Aaannd that doesn't count the rule for "Omni-Gadget" which literally says in the rules "your character can 'happen' to have the exact item they need right then at that moment ." ... I'll need to think this through a bit more.
It's unfortunate you can't hook onto the event where the data is collected into the blob. A JSON data object structure would handle it nicely, even if portions or all of it needed to be stringified to something more primitive for storage. So not even a wrapper around the event that issues the action, or hanging a change event on the form that will house the blob for storage?
Assuming I understand what you're trying to do, probably your best bet is to have just one 'real' storage field (from the common DST code's perspective) and a bunch of dynamic ones that the common code will just ignore. You can set up a function to run just before the sheet is saved, harvest all the data from your 'fake' fields into a JSON object, then stringify that and put it in your single field. And another to run when the sheet loads, get that field value, parse it, and populate the sheet with all the proper stuff dynamically. The down sides of that are 1) that it will be a pretty big engineering project to set up, relative to regular sheet building and 2) that the data you're storing is really only meaningful if processed through your code. But if you're up for the first, there's no real way of getting around the second I think, so that's probably a fine compromise.
There might be a simpler way though, of course - I don't know the game system, so I may be misunderstanding the requirements you've described. Can you link a good example of a paper sheet for the system? I find it's often helpful to look at something like that for a sense of what exactly is needed in these things, and in this case it's probably useful to examine how they solved this issue. Presumably not by having you make a separate page for each detail and sub-detail of your character.
I have developed a character sheet template from a database program with some artistic design. It is coded for Edition 3.5 but has the flexibility to coded for really any gaming system. I have over 70 gamers in 13 different groups in the World of Greyhawk where their character sheets are hosted on a server. The database program, Filemaker, now has the easy to port ability so that any web browser can used to access the sheet and the gaming databases. Just thought I throw what I have created out there for anyone that is interested.
/* I opted for that solution over doing something like storing a delimited string of values or collecting the list data into an object, converting it to a JSON string, and storing that string in a single field, because this allows for implicit conversion between sheet designs with a dynamic number of entries and those with fixed length lists. */
Ah. See, in the Responsive 5e DST I made, I went the opposite direction. What would everyone think about doing both, just to try and maximize compatibility? Save, for instance, both an "equipment" field (which is a JSON list), and then "equipment_0", "equipment_1", "equipment_2" etc., which represent each item within the list? Kind of sloppy in that we're saving the same data twice, but still... your thoughts?
I've actually switched over to saving a JSON blob in a single field with my latest generation of development. It's way easier to manage in a whole range of ways, and isn't really a problem unless there are a bunch of folks developing technically-disparate sheets for the same system.
/* I’ve actually switched over to saving a JSON blob in a single field with my latest generation of development. It’s way easier to manage in a whole range of ways, and isn’t really a problem unless there are a bunch of folks developing technically-disparate sheets for the same system. */
Yeah, that's what I thought too. It seems like the most efficient solution, anyway, short of just being able to store a raw JSON object in the database.
/* Can you share the code Chainsaw? */
Which reminds me -- if anyone's interested, the code for my 5e sheet is up on GitHub: https://github.com/tinwatchman/Responsive5e-Dynamic-Character-Sheet.
I've got my working version up on "GitHub":https://github.com/ChainsawXIV/DST as well, for folks to use or reference (or contribute changes to, if they're so inclined). Specifically, here's the "new dynamic list code":https://github.com/ChainsawXIV/DST/blob/master/common/js/csx_list.js I've been using.
Hi, I was wanting to do a normal list on a DST. I had one in there and noticed that when you on the editing page it looks like it take a select field and changes it into its own select field using lists html and rendering with javascript.
However, I can't figure out exactly how you are suppose to create the list field. Do you put it between a DST span tag or add a DST class to the select?
You are right, this thread is not for me. I looked at the description for making DSS, and it is not in a language with which I am familiar. I can get inside and adjust things to make a TS 3 skin. I have managed that. I glanced at the elements of a couple of DSS on the sight, but saw nothing comprehensible or with which there was sufficient descriptive notes on what is going on that I could modify it for use. The system I was looking at to use here does not have functional usable DSS. I do not know what those with campaigns in Traveller are actually using, but based on my experience in trying to make a character with what is here - they can't be using this website. I would have developed DSS for characters, ships, planets, etc. in the Classic Traveller (1st Ed.) if the system for making them was comprehensible. I even messaged support from which I have had no response over the last several days. The most important function for Pen and Paper style play is being able to maintain and interact over the records of the entities (PC, NPC, objects) manipulated in the story elements. Attempting play without this ability makes being online to play irrational. What I see is great only for programmers, but I am not a programmer. A more open design element set up where one can place, label, and set size of fields and fill fields in a design grid would be more helpful for more people.
Isn't it just HTML, like any web page? Unless at some point it has changed (and if you want to integrate any CSS or Javascript to make it look/function fancier).
If so, you should just be able to use any number of "online HTML editors":https://www.google.com/search?q=html+wysiwyg+editor+online&ie=utf-8&oe=utf-8.
I'm assuming you've been to the "DST page":https://www.obsidianportal.com/dynamic_sheet_templates and gone through the "tutorial":http://help.obsidianportal.com/kb/advanced/creating-a-dynamic-character-sheet-template-dst and do agree it's not a simple process like using a drag-and-drop editor or WYSIWYG.
At the same time, the technical nature of the DSTs allow more customization, so you can come up with highly-customized stuff like the stuff that ChainsawXIV (who leads our DST effort) has come out with. You can take a look at one of his "character sheets":https://sotfa.obsidianportal.com/characters/kadon
The DST listings page was created so that you can copy-paste the code into your own campaigns.
For making a Traveller-specific page, it'll require some effort.
I am looking at customer support requests, have you been filing tickets at the "customer support desk":http://help.obsidinaportal.com?
Yes, I looked at the material at the DST page which as I indicated does not appear in a language with which I am familiar. You might call it English, I do not ;). The tutorial material said nothing to me beyond what is intuitive on the site. I saw nothing that would assist in making DSS. While highly customizable might be great for those with a computer programming minor or better - it might as well not be there for someone like myself with degrees in history and communications theory with minors in ethics, religion, and political science. The only DST listings for Traveller were based on the Mongoose products, and didn't work. Other than creating a character name nothing else - such as bio, skills, etc. would open to be filled or even respond so they could be clicked. I sent a message to customer support several days ago. I also clicked the link to customer support which you provided only to have it not work. (The error message states there is no site there.) I am sure you find this sort of thing as frustrating as I do. But it does make the variety of play more limited.
The support link is "http://help.obsidianportal.com/":http://help.obsidianportal.com/.
You could also post a request for your system in the "DST Requests":http://forums.obsidianportal.com/comments.php?DiscussionID=4168&page=1#Item_4 thread.
Comments
- Kallak
1. You have selected a Game System for your Campaign (under Manage Campaign > Edit Settings > Game System).
2. Someone submitted a DST for that Game System.
3. That DST was approved for general use (or you're the one who submitted it).
If all of these conditions are met, when you create a new character or edit an existing character, a dropdown menu will appear directly above Basic Info. It will contain the DSTs you can use. Selecting one will cause that DST to appear, and you can fill it out. After you save your changes, that DST will be used for that character going forward.
{ “name” : “Tordek”, “race” : “Dwarf”, “class” : “Fighter”, “level” : 12 }
My question is that can a sub-object be the value instead of a base primitive? Example:
{ “name” : “Tordek”, “race” : “Dwarf”, “class” : “Fighter”, “level” : 12, "equipment": ["sword","shield","candy cane"] }
Thanks in advance!
- Kallak
But you can export your pdf as a graphic file (using a converter program) and then upload the image.
I do that for this NPC all the time..
"Shylent":http://www.obsidianportal.com/campaigns/unconquered-kingdoms/characters/shylent
Unconquered Kingdoms, July 2016 CotM
I opted for that solution over doing something like storing a delimited string of values or collecting the list data into an object, converting it to a JSON string, and storing that string in a single field, because this allows for implicit conversion between sheet designs with a dynamic number of entries and those with fixed length lists. I don't think that's ever actually been an issue in practice, but one of the guidelines for the DSTs early on was that as much as possible players should be able to switch between DST designs for a system, even those by different authors, and have data migrate automatically between them.
It's unfortunate you can't hook onto the event where the data is collected into the blob. A JSON data object structure would handle it nicely, even if portions or all of it needed to be stringified to something more primitive for storage. So not even a wrapper around the event that issues the action, or hanging a change event on the form that will house the blob for storage?
There might be a simpler way though, of course - I don't know the game system, so I may be misunderstanding the requirements you've described. Can you link a good example of a paper sheet for the system? I find it's often helpful to look at something like that for a sense of what exactly is needed in these things, and in this case it's probably useful to examine how they solved this issue. Presumably not by having you make a separate page for each detail and sub-detail of your character.
Ah. See, in the Responsive 5e DST I made, I went the opposite direction. What would everyone think about doing both, just to try and maximize compatibility? Save, for instance, both an "equipment" field (which is a JSON list), and then "equipment_0", "equipment_1", "equipment_2" etc., which represent each item within the list? Kind of sloppy in that we're saving the same data twice, but still... your thoughts?
Just trying to help out.
Yeah, that's what I thought too. It seems like the most efficient solution, anyway, short of just being able to store a raw JSON object in the database.
/* Can you share the code Chainsaw? */
Which reminds me -- if anyone's interested, the code for my 5e sheet is up on GitHub: https://github.com/tinwatchman/Responsive5e-Dynamic-Character-Sheet.
Just trying to help out.
However, I can't figure out exactly how you are suppose to create the list field. Do you put it between a DST span tag or add a DST class to the select?
If so, you should just be able to use any number of "online HTML editors":https://www.google.com/search?q=html+wysiwyg+editor+online&ie=utf-8&oe=utf-8.
I'm assuming you've been to the "DST page":https://www.obsidianportal.com/dynamic_sheet_templates and gone through the "tutorial":http://help.obsidianportal.com/kb/advanced/creating-a-dynamic-character-sheet-template-dst and do agree it's not a simple process like using a drag-and-drop editor or WYSIWYG.
At the same time, the technical nature of the DSTs allow more customization, so you can come up with highly-customized stuff like the stuff that ChainsawXIV (who leads our DST effort) has come out with. You can take a look at one of his "character sheets":https://sotfa.obsidianportal.com/characters/kadon
The DST listings page was created so that you can copy-paste the code into your own campaigns.
For making a Traveller-specific page, it'll require some effort.
I am looking at customer support requests, have you been filing tickets at the "customer support desk":http://help.obsidinaportal.com?
You could also post a request for your system in the "DST Requests":http://forums.obsidianportal.com/comments.php?DiscussionID=4168&page=1#Item_4 thread.
Do you Put the HTML, CSS and Java script all into the Custom CSS Area of the Advanced tab? And do you enter them into the CSS field in that order?
Or does only the CSS and Java go there and where does the HTML go?
DST background for those looking for it
Just trying to help out.