First look at the editor componant The purpose of this tool is backstory authorship. It is being designed so that the story writer has no need of programming knowledge, and it should run on virtually any browser-capable device. The underlying structure of the supporting data is going to be such that the values presented on-screen are drawn from the set of values the player has in their mod collection. Maybe there are new traits, or new ranges for values. Whatever the case may be the data itself shouldn't be hard-coded but instead imported from the game state. There is also self-correcting error catching going on both in front and behind the scenes. The data files generated by the editor are an intermediary between the game's API and the user's story. This prevents a variety of hasty errors and troubles that arise in direct editing of the game files. It also insulates the editor from changes in the API, thereby future-proofing it from modifications as Rimworld evolves. There will be an edit window in the browser, and a display window so the artist may verify that what they intended to create was indeed what they created. Once they are satisfied with the production there will be an option to export to game. The preview mock-up on the right is attached as data entry form *.htm that should just work in your browser by clicking on it. Also attached is the complete collection of backstories from Basic, Tribal and Storybook in a readable format for easy searching. | (https://s6.postimg.org/oljwvew9d/screenshot.jpg) |
Data Engineering This is a fairly good representation of the information contained in a backstory record, but it has a ways to go before it reaches the structural integrity of normal form (https://en.wikipedia.org/wiki/Database_normalization) for a database record. Some of the things that can be addressed through well-formed design (some of which are already in the game engine)
Two Questions
| (https://s6.postimg.org/gz613s1jl/Authorship.png) |
Quote from: AngleWyrm on March 25, 2017, 10:01:07 AMThis is a fairly good representation of the information contained in a backstory record, but it has a ways to go before it reaches the structural integrity of normal form for a database record.
Quote from: AngleWyrm on March 25, 2017, 10:01:07 AMThe tag specifying a story belongs to the set of adults or children is better than the optional but redundant separation of those two categories into two different files.
Quote from: AngleWyrm on March 25, 2017, 10:01:07 AMWhy is there a third optional declaration for body type, beyond the set for male and the set for female?
Quote from: AngleWyrm on March 25, 2017, 10:01:07 AMThere is what appears to be a potency factor attached to traits, with a five-point range of -2 to +2. Any details on the effect?
(https://s6.postimg.org/towu81975/assassin.jpg) | Quote from: dburgdorf on March 25, 2017, 12:05:50 PMHere's a quote from the author of a book on the subject. Click the cover art if you wish to read it. Quote from: Michael KayXSLT (Extensible Stylesheet Language: Transformations) is a language that, according to the very first sentence in the specification (found at http://www.w3.org/TR/xslt20/), is primarily designed for transforming one XML document into another. However, XSLT is also capable of transforming XML to HTML and many other text-based formats, so a more general definition might be as follows: | (https://s6.postimg.org/4lt6wvbv5/cover.png) (http://197.14.51.10:81/pmb/INFORMATIQUE/XSLT2.0%20and%20XPATH%202.0.pdf) |
(https://s6.postimg.org/gntmo4rf5/Rimworld_API.png) | To the left is an image of what we might call the Rimworld API, the data structure as the game presents and understands it. To the right is an image of a transform from the API to another potentially different arrangement. | (https://s6.postimg.org/jueiwwg5t/Adults_to_Authorship.png) |
Quote from: AngleWyrm on March 25, 2017, 02:49:18 PMHere's a quote from the author of a book on the subject.... XSLT... is a language that... is primarily designed for transforming one XML document into another.
(https://s6.postimg.org/3k9595xzl/moxxi.jpg) | Can't say he didn't have an opportunity. Meanwhile back at the ranch, I've compiled documentation for the backstory API as presented by Rimworld to and from data consumers. It's html; as always just start at the index of the root directory. Lemme know if I've missed anything ;) One of the oddities that comes up in backstory creation is that authors have differing ideas about favorite skills, and so the distribution of buffs/debuffs in the backstories is unlikely to be a neat mathematical model, instead reflecting various biases. It may be useful to tabulate how the skills are distributed, and use the sight of that as part of the character backstory creation process. This sounds like a job for transforms :P |
(https://s6.postimg.org/yubacc8gh/Tink_Kickin_Ass.jpg) | Skills Distribution (https://drive.google.com/file/d/0B56ASdbmNsIoV1NkVUtFNlZua0U/view?usp=sharing) spreadsheet with pages by skill, by adjustment, and 2-D view. No humans were forced to hand-type data for the above spreadsheet, and the Robot Council of Fair Practice between Humans and Machines has been appeased of their complaint for infringement on duties more suitable to machines. Observations
|
Quote from: AngleWyrm on March 26, 2017, 02:15:04 AMThat might be because it's the hardest to train of all skills. Additionally, the majority thinks melee is underperforming compared to ranged.
There's an unusually large proportion of bonuses to melee
Quote from: AngleWyrm on March 26, 2017, 02:15:04 AMHigh mining skill is one of the least important things. It can also be trained extremely easily in all biomes but one, and in that one you don't use it anyway since there are no rocks.
Mining and Cooking are under-represented
Quote from: AngleWyrm on March 26, 2017, 02:15:04 AM
If taken as equally likely, the set of basic adult backstories doesn't match the typical needs and uses of a prosperous colony.
(https://s6.postimg.org/k4vor3qhd/Hotties_And_Notties.png) | Finished the schemas for Rimworld API and backstories authorship. When writing a new xml of backstories, associate it with the backstories authorship schema and most modern editors will offer prompts for the next valid tag, and value ranges for enumerated data types. The data mappers (both *.dm and *.xslt) are for translating the human-readable xml to a game-readable xml. I've tried using it to translate the example code below and then copy/pasting from the output file to the end of the adults xml and it works fine in-game. More automation to come. If you're working directly with a game-readable xml, associating the Rimworld API schema should provide similar but less legible results. Also, you take full responsibility for mucking about in your game files if you do so. |
<?xml version="1.0" encoding="UTF-8"?>
<backStories xsi:noNamespaceSchemaLocation="file:///C:/Documents%20and%20Settings/Jonathan/Desktop/Rimworld/Backstories/Schemas/Backstories%20Authorship.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<backStory storyID="Leader1">
<title>Leader in Botany</title>
<shortTitle>Botanist</shortTitle>
<description>NAME is a recognized leader in the field of botany.</description>
<ageGroup>Adulthood</ageGroup>
<eligibleFactions>
<faction>Civil</faction>
<faction>Raider</faction>
<faction>Slave</faction>
<faction>Trader</faction>
<faction>Traveler</faction>
</eligibleFactions>
<workPrerequisites>
<work>PlantWork</work>
<work>Animals</work>
<work>Caring</work>
</workPrerequisites>
<skillChanges>
<change>
<skill>Growing</skill>
<adjustment>+3</adjustment>
</change>
<change>
<skill>Animals</skill>
<adjustment>+2</adjustment>
</change>
<change>
<skill>Medicine</skill>
<adjustment>+1</adjustment>
</change>
</skillChanges>
</backStory>
</backStories>
(https://s6.postimg.org/kycvxglw1/Harley.png) | The <Defs> tag doesn't mind attributes, and the game carries on parsing backstory xmls just fine. So it's possible to place unique IDs in the tag as an attribute, which is the normal way of assigning IDs. For example, <Defs storiesID="MyBackstoriesCollection"> is an acceptable node as far as the game is concerned. Which begins to look like support for multiple sets of backstories. |
Quote from: AngleWyrm on March 26, 2017, 11:35:39 AMFINALLY! Took you long enough. You should've started with this instead of making fancy databases of existing backstories or posting mostly irrelevant pictures noone cares about. (No, I'm not talking about your obsession with random female pictures in every post you ever make, I got used to that already. I'm talking about all those pictures containing data which you describe in your posts anyway, effectively repeating yourself over and over.)
The data mappers (both *.dm and *.xslt) are for translating the human-readable xml to a game-readable xml. I've tried using it to translate the example code below and then copy/pasting from the output file to the end of the adults xml and it works fine in-game.
(https://s6.postimg.org/vve7m88nl/tease.jpg) | Yes, well File/Save-As is an important feature and it seemed pretty obvious that a lossless information mapping could go both ways. Colony Leadership & Teaching collection For the mod Colony Leadership & Teaching (https://ludeon.com/forums/index.php?topic=29847.0) by Nanodalt (https://ludeon.com/forums/index.php?action=profile;u=58544), this is a set of four adult backstories, applicable to any faction. Each backstory gives three bonuses in the form of a primary and two secondary skills that are what that leader can teach. In order to teach those skills a leader must have skill proficiency of 8+ in them. So when using EdB's (https://ludeon.com/forums/index.php?action=profile;u=11058) Prepare Carefully (https://ludeon.com/forums/index.php?topic=6261.0), the mouse-over that shows the bonuses for a given backstory is helpful in setting up characters that will be able to teach the full range of a given class of leader. |
<Defs storiesID="LeadershipAndTeaching">
<REB_Code.BackstoryDef>
<defName>GeneralW01</defName>
<Slot>Adulthood</Slot>
<Title>Leader in botany</Title>
<TitleShort>Botanist</TitleShort>
<BaseDesc>NAME is a recognized leader in the field of botany, and HIS peer-reviewed work on genetic updates to haygrass has been published in science journals.</BaseDesc>
<requiredWorkTags>
<li>PlantWork</li>
<li>Animals</li>
<li>Caring</li>
</requiredWorkTags>
<SkillGains>
<li><key>Growing</key><value>5</value></li>
<li><key>Animals</key><value>3</value></li>
<li><key>Medicine</key><value>3</value></li>
<li><key>Shooting</key><value>-1</value></li>
<li><key>Melee</key><value>-1</value></li>
</SkillGains>
<BodyTypeMale>Male</BodyTypeMale>
<BodyTypeFemale>Female</BodyTypeFemale>
<SpawnCategories>
<li>Civil</li>
<li>Raider</li>
<li>Slave</li>
<li>Trader</li>
<li>Traveler</li>
</SpawnCategories>
</REB_Code.BackstoryDef>
<REB_Code.BackstoryDef>
<defName>GeneralW02</defName>
<Slot>Adulthood</Slot>
<Title>Leader in science</Title>
<TitleShort>Scientist</TitleShort>
<BaseDesc>NAME is a recognized leader in general science. HE holds several patents on DNA resequencing in live organisms, and HECAP is traveling to a planet where authorization has been given to run experiments with outbreak potential.</BaseDesc>
<requiredWorkTags>
<li>Intellectual</li>
<li>Animals</li>
<li>Caring</li>
</requiredWorkTags>
<SkillGains>
<li><key>Research</key><value>5</value></li>
<li><key>Animals</key><value>3</value></li>
<li><key>Medicine</key><value>3</value></li>
<li><key>Shooting</key><value>-1</value></li>
<li><key>Melee</key><value>-1</value></li>
</SkillGains>
<BodyTypeMale>Male</BodyTypeMale>
<BodyTypeFemale>Female</BodyTypeFemale>
<SpawnCategories>
<li>Civil</li>
<li>Raider</li>
<li>Slave</li>
<li>Trader</li>
<li>Traveler</li>
</SpawnCategories>
</REB_Code.BackstoryDef>
<REB_Code.BackstoryDef>
<defName>GeneralW03</defName>
<Slot>Adulthood</Slot>
<Title>Leader in warfare</Title>
<TitleShort>Warrior</TitleShort>
<BaseDesc>NAME has fought HIS way up through the ranks from squad leader to master seargent, and has led several successful missions teaching the local rebels how to conduct raids.</BaseDesc>
<requiredWorkTags>
<li>Violent</li>
<li>Scary</li>
<li>Caring</li>
</requiredWorkTags>
<SkillGains>
<li><key>Shooting</key><value>5</value></li>
<li><key>Melee</key><value>3</value></li>
<li><key>Medicine</key><value>3</value></li>
<li><key>Social</key><value>-2</value></li>
</SkillGains>
<BodyTypeMale>Male</BodyTypeMale>
<BodyTypeFemale>Female</BodyTypeFemale>
<SpawnCategories>
<li>Civil</li>
<li>Raider</li>
<li>Slave</li>
<li>Trader</li>
<li>Traveler</li>
</SpawnCategories>
</REB_Code.BackstoryDef>
<REB_Code.BackstoryDef>
<defName>GeneralW04</defName>
<Slot>Adulthood</Slot>
<Title>Leader in carpentry</Title>
<TitleShort>Carpenter</TitleShort>
<BaseDesc>NAME began HIS career as a construction worker, where HECAP took an interest in design flaws. HECAP went to night school and became an architect to improve upon them.</BaseDesc>
<requiredWorkTags>
<li>Artistic</li>
</requiredWorkTags>
<SkillGains>
<li><key>Construction</key><value>5</value></li>
<li><key>Crafting</key><value>3</value></li>
<li><key>Artistic</key><value>3</value></li>
<li><key>Mining</key><value>-2</value></li>
</SkillGains>
<BodyTypeMale>Male</BodyTypeMale>
<BodyTypeFemale>Female</BodyTypeFemale>
<SpawnCategories>
<li>Civil</li>
<li>Raider</li>
<li>Slave</li>
<li>Trader</li>
<li>Traveler</li>
</SpawnCategories>
</REB_Code.BackstoryDef>
</Defs>
(https://s6.postimg.org/4m7flgwy9/darkwing.jpg) | Oh hi, it's you again -- shouldn't you be out modding something? You can tell when a mod has reached it's final stages of usefulness to the public when the developer effort is more towards the destruction of their mod's use through nerfs, gameplay vandalism and general distain. I wonder if the same can be said for developers. My latest iteration of human-readable, attached. |
Quote from: AngleWyrm on March 27, 2017, 12:22:12 PMOh hi, it's you again -- shouldn't you be out modding something?
Quote from: AngleWyrm on March 27, 2017, 12:22:12 PMYou can tell when a mod has reached it's final stages of usefulness to the public....
Quote from: AngleWyrm on March 27, 2017, 12:22:12 PMMy latest iteration of human-readable, attached.
Quote from: AngleWyrm on March 27, 2017, 12:22:12 PMMy latest iteration of code that has XML tags that I like, even though they're incorrect and won't work unless you change them back to what they're supposed to be, attached.
Quote from: Granitecosmos on March 27, 2017, 05:55:48 PMOk, so let's recap the short history behind this....
(https://s6.postimg.org/dhhgnh0i9/crafter.png) | Please find a way to get back into the game
Further analysis of the backstory set I've combined the Adult and Child story set to get a better overall picture of how the skill adjustments are distributed. In the set of about 250 backstories each skill sums up to 54 +/- 25. There are three outliers to the set: Melee, Cooking and Social. |
(https://s6.postimg.org/wg70u561d/skill_adjustments_by_skill.png) | Food service industry backstory collection To address the shortage of cooks that are seen coming and going in the game, I've made a set of five cook backstories. Two are childhood and three are adulthood, and they can appear in any group of arrivals. BTW, the file they appear in is irrelevant as far as the game is concerned; it reads the tag not the filename. Click the attached *.htm to read about them. |
Quote from: SpaceDorf on March 28, 2017, 09:01:50 AMFortunately the tools I have available make working with changes a breeze.
@AngelWyrm ..
This Tool would surely be awesome and quite useful .. but maybe quite the PITA to update if Versions Change to much.
Quote from: AngleWyrm on March 28, 2017, 06:38:49 AMI seem to recall some interest in working with data tags to support the concept of backstory rarity. How's that coming along? There was also an assertion of presenting details on the spectrum mechanic of traits. Where are you on that?
(https://s6.postimg.org/vui1y1az5/blondebraids.jpg) | Quote from: dburgdorf on March 28, 2017, 10:04:36 AM Yeah that works. Looking forward to a better understanding of the spectrum mechanic. |
(https://s6.postimg.org/uy0e3u1n5/ThrumboRider.png) | Animal Handlers After spending some time enjoying leonlim007's (https://ludeon.com/forums/index.php?action=profile;u=71536) Minions (https://ludeon.com/forums/index.php?topic=30647.0) mod, I developed a need for animal handlers and trainers. So many little yellow mouths to feed. So here then is a collection of five animal handler backstories; two childhood and three adult. Click the attached *.html to read about them. |
Quote from: AngleWyrm on March 29, 2017, 08:22:35 AM
(https://s6.postimg.org/uy0e3u1n5/ThrumboRider.png) Animal Handlers
After spending some time enjoying leonlim007's (https://ludeon.com/forums/index.php?action=profile;u=71536) Minions (https://ludeon.com/forums/index.php?topic=30647.0) mod, I developed a need for animal handlers and trainers. So many little yellow mouths to feed.
So here then is a collection of five animal handler backstories; two childhood and three adult.
Click the attached *.html to read about them.
Quote from: Granitecosmos on March 27, 2017, 05:55:48 PM
Ok, so let's recap the short history behind this.
A makes X. B thinks X isn't easily understandable, therefore proposes the creation of Y. A tells B that X is actually easily understandable and Y would achieve little-to-no change. B decides to make Y anyway and, after a few days finishes the basis of Y which is exactly what A predicted would be.
Right now we can see A telling B that he was right (which is indeed the case) while also raising awareness that Y has no mod support whatsoever, further limiting it's usefullness. In response B implies that A probably tries to demote or sabotage Y because he can't make X better or thinks Y is endangering the existence of X.
It appears that B forgot that the sole reason for Y's existence is to serve X, therefore Y's maximum quality is always equal or less than X's maximum quality. B also seems to ignore that X is in no way a finished product; in fact, X is more like a gateway for others to add their content. Therefore the proposition that X can't evolve further is moot; it's up to the user to improve it. Let's not forget that A was right from the beginning: X is easily understandable; Y has no possibility for proper mod support; Y's very existence was unnecessary.
Throughout the conversation between A and B, A tries more and more desperately to make B understand how Y is still unnecessary and destined to be subpar compared to just using X. B continues to ignore this and now is actually mocking A, forgetting that since Y is dependant on X, A has an easy way to screw B and Y over if B becomes pesky enough.
All the while C is watching with a grin and eating popcorn.
(https://media.giphy.com/media/tFK8urY6XHj2w/giphy.gif)
Quote from: AngleWyrm on March 29, 2017, 08:22:35 AM
(https://s6.postimg.org/uy0e3u1n5/ThrumboRider.png) Animal Handlers
After spending some time enjoying leonlim007's (https://ludeon.com/forums/index.php?action=profile;u=71536) Minions (https://ludeon.com/forums/index.php?topic=30647.0) mod, I developed a need for animal handlers and trainers. So many little yellow mouths to feed.
So here then is a collection of five animal handler backstories; two childhood and three adult.
Click the attached *.html to read about them.
(https://s-media-cache-ak0.pinimg.com/564x/39/37/c5/3937c5981526c19383c2fa30074b5811.jpg) | Thanks bunches, and yes it's still very much a Work In Progress. Eventually I'd like to get it to the place where backstory collections can be just dropped into a folder, but that's a ways off. |
Quote from: AngleWyrm on March 29, 2017, 11:20:03 AMEventually I'd like to get it to the place where backstory collections can be just dropped into a folder, but that's a ways off.
(https://s6.postimg.org/hw8bia4lt/soldier.jpg) | The Creation of Law and Order Within the backstory definition are three variables for body types: male, female and global. Each of these variables are sets that can be a list of values drawn from a specific pool of choices. And they overlap. There is a Thin for males, females and global, and there is a Male for males and global. If these values are stored more than once then the opportunity for errors creeps in. Maybe I forgot to capitalize one version but not another. It also becomes a maintenance headache if ever a value changes and the developer has to chase down all the copies sprinkled about. So the goal is to achieve a state where there is only a single value stored for every possibility. That way there's no opportunity for conflicting copies and no need to hunt for duplicates to change. | (https://s6.postimg.org/6ils72u35/Body_Types.png) |
Quote from: AngleWyrm on March 29, 2017, 01:40:12 PM
And they overlap. There is a Thin for males, females and global, and there is a Male for males and global. If these values are stored more than once then the opportunity for errors creeps in. Maybe I forgot to capitalize one version but not another. It also becomes a maintenance headache if ever a value changes and the developer has to chase down all the copies sprinkled about.
Quote from: dburgdorf on March 29, 2017, 02:50:27 PM
... Should I take the oddly irrelevant side-rant as a "no," then, on the question of whether you'd like me to actually distribute your backstory files along with the mod that can use them?
(https://s6.postimg.org/6mflnbzkh/gems.jpg) | Quote from: dburgdorf on March 29, 2017, 02:50:27 PMIrrelevant side-rant, what a fitting description. On the topic of copyright law In keeping with the principles of modding and maintaining an open-source environment, I release all content to the public domain, free of charge and without obligation. Do with it as you will. Quote from: Granitecosmos on March 29, 2017, 05:40:59 PMApparently you stopped reading after the problem description, and didn't bother to read the solution. But, as you say, I have no problem with building my house on a solid foundation. |
Quote from: AngleWyrm on March 30, 2017, 06:53:17 AMQuote from: Granitecosmos on March 29, 2017, 05:40:59 PMApparently you stopped reading after the problem description, and didn't bother to read the solution. But, as you say, I have no problem with building my house on a solid foundation.
That sucks. But hey, you were the one insisting on doing this.
Quote from: Razzoriel on March 30, 2017, 07:49:12 AM
Thank you for this amazing mod, dear sir. I only have one problem with it:
I don't want my colonists to have Pirate King/tribal backstories. How do I proceed about making the backstories' rationale work as vanilla, and only have the editting/adding/removing aspect preserved?
(https://s6.postimg.org/yd8p8upxt/855b8e1e2a3c9c716fbe9f55056e3bd6.jpg) | Quote from: leonlim007 on March 30, 2017, 11:32:52 AM See the First post (https://ludeon.com/forums/index.php?topic=31306.msg320813#msg320813).
|
Quote from: Ramsis on March 30, 2017, 11:29:48 AMDorf stop taking the b8 m8.
Quote from: leonlim007 on March 30, 2017, 11:32:52 AM
Honestly, I already lost track of what is this "mod" is about actually....
Quote from: dburgdorf on March 30, 2017, 12:36:41 PM
As I said in an earlier comment, as long as I've been participating in online forums, I really ought to know better by now. ;)
Quote from: Ramsis on March 30, 2017, 11:29:48 AM
Take the admin's advice and back off now, I won't be repeating myself.
Quote from: AngleWyrm on March 30, 2017, 12:02:43 PM
See the First post (https://ludeon.com/forums/index.php?topic=31306.msg320813#msg320813).The rest of this WIP development thread pretty much requires training in computer science, so it has a narrow target audience.
- The new sets of backstories are attached there
- The current uses for what I'm building are also listed there
(https://s6.postimg.org/sv6ga6z0x/egg.jpg) | A first look at the backstory editor; see first post (https://ludeon.com/forums/index.php?topic=31306.0). |
Quote from: Dragoon on April 01, 2017, 11:44:36 AMI saw it stated it would rely on editable backstories, but I'm not entirely sure. Do need to get that? I was kinda hoping this would be more a revival for the mod that just allows us to add backstories rather then, just an easier way to add ours to a mod that edits them.
(https://s-media-cache-ak0.pinimg.com/736x/48/79/19/48791933f81c7e6699fcb177d5d2a92d.jpg) | Quote from: Dragoon on April 01, 2017, 11:44:36 AMThe Editable Backstories mod brings backstory files out into the open so that they may be edited. The tool I'm working on is an editor for them. The current set of backstories from the Editable Backstoris mod that includes basic, tribal and storyteller is available as a readable and searchable *.htm attached to the first post. The list of stories on the Wiki differs from the list of stories in that compilation. Attached are two collections, one called 'Missing' which returns a couple stories that are on the wiki into the game, and another called 'Variants' which creates alternate versions of some backstories without over-writing the original, so that both can co-exist in the game. |
Quote from: AngleWyrm on April 01, 2017, 04:07:35 PM
(https://s-media-cache-ak0.pinimg.com/736x/48/79/19/48791933f81c7e6699fcb177d5d2a92d.jpg) Quote from: Dragoon on April 01, 2017, 11:44:36 AMThe Editable Backstories mod brings backstory files out into the open so that they may be edited. The tool I'm working on is an editor for them.
I only have one question. I saw it stated it would rely on editable backstories, but I'm not entirely sure. Do need to get that? I was kinda hoping this would be more a revival for the mod that just allows us to add backstories rather then, just an easier way to add ours to a mod that edits them.
The current set of backstories from the Editable Backstoris mod that includes basic, tribal and storyteller is available as a readable and searchable *.htm attached to the first post.
The list of stories on the Wiki differs from the list of stories in that compilation.
Attached are two collections, one called 'Missing' which returns a couple stories that are on the wiki into the game, and another called 'Variants' which creates alternate versions of some backstories without over-writing the original, so that both can co-exist in the game.
(https://s-media-cache-ak0.pinimg.com/564x/fb/b1/7d/fbb17d8f8415cdc611a87ee2c9e7d2fb.jpg) | Quote from: leonlim007 on April 02, 2017, 12:54:10 AM Development is a long walk, and an entertaining journey for those who enjoy it. I've updated the first post (https://ludeon.com/forums/index.php?topic=31306.0) screen shot and attached data entry xml to show the current state of the work. |
Quote from: dburgdorf on April 01, 2017, 12:26:01 PMQuote from: Dragoon on April 01, 2017, 11:44:36 AMI was kinda hoping this would be more a revival for the mod that just allows us to add backstories rather then, just an easier way to add ours to a mod that edits them.So, am I understanding correctly that you'd be interested in a mod which allows you to add backstories to the game, without offering any ability to edit or modify the pre-existing backstories? Such a mod would be a fairly trivial to create (perhaps as a "Lite" version of "Editable Backstories")....
Quote from: dburgdorf on April 02, 2017, 11:51:28 PM
In addition to updating the base version of "Editable Backstories," I also just went ahead and released Editable Backstories Lite (https://ludeon.com/forums/index.php?topic=30749.msg322778#msg322778), which allows you to add backstories and names to the game, but doesn't allow you to edit or delete anything from the default database.
Quote from: AngleWyrm on March 24, 2017, 05:05:16 PM
The underlying structure of the supporting data is going to be such that the values presented on-screen are drawn from the set of values the player has in their mod collection. Maybe there are new traits, or new ranges for values. Whatever the case may be the data itself shouldn't be hard-coded but instead imported from the game state.
(https://s6.postimg.org/se8xrmz0x/dependencies.png) | I've been working on formalizing the relationships between the various pieces of data, currently the traits definitions. Both the backstory and the trait XMLs refer to work types, so it makes good sense to separate work types out into it's own definition. That way both XMLs can refer to one set of work types. Don't get hung up on the API that the game engine expects to see; translation is a trivial task. |
(https://s6.postimg.org/67x9qw0r5/Schema.png) | Unfortunately the editor I was using, Liquid XML Studio 2017 Community Edition, turned out to be crippleWare. The graphical XML interface isn't available in the community edition, making it little more than an XML text editor with a rather long load time. So I've downloaded Oxygen XML Editor (https://www.oxygenxml.com/) that has the option for an academic license. Maybe this one won't devolve into a text editor in a month. The graphics are a bit more wordy and it looks like I'll end up post-processing svg->png, but the schema production process seems a bit more clear as well. So here's a Traits collection that contains a set of (1..unbounded) Trait records. Each record has a TraitID attribute that is of the standard XML xs:ID type to provide uniqueness. The TraitsCollection uses a constraint that the Trait elements within it are keyed to the Trait/@TraitID so there's no duplicates in the collection. TraitsCollection/Trait/@TraitID is synonymous for what the API calls TraitDefs/TraitDef/defName |
(https://s6.postimg.org/um05c9n81/Authorship_schema.png) | Schema Ok, so here is a schema that manages to record a complete backstory. There's still plenty of development and error-catching to do yet
Currently I can generate random backstory XMLs that meet this loosy goosy specification. Next step is to implement the editor using this schema. |
(https://s6.postimg.org/ijmuij1e9/API_schema.png) | A rendering of the Rimworld backstory API. This isn't yet a complete expression of what the game engine expects of story input, as the title wants to have only the first letter capitalized. It appears to be something like an XQuery of the form functx:capitalize-first('Hello World'). Soon as I figure out how to inegrate that, I'll update the schema. It could be done with a pattern match to a regex "[A-Z][a-z]*", but that breaks language support. Besides, what if there's a language that doesn't have capital letters? To them, an extra symbol set would seem redundant; maybe a philosophical conversation for a fireside chat over brandy with an Orassian. |
Quote from: AngleWyrm on April 10, 2017, 11:21:16 AM
(https://s6.postimg.org/ijmuij1e9/API_schema.png) A rendering of the Rimworld backstory API.
This isn't yet a complete expression of what the game engine expects of story input, as the title wants to have only the first letter capitalized.
It appears to be something like an XQuery of the form functx:capitalize-first('Hello World'). Soon as I figure out how to inegrate that, I'll update the schema.
It could be done with a pattern match to a regex "[A-Z][a-z]*", but that breaks language support.
Besides, what if there's a language that doesn't have capital letters? To them, an extra symbol set would seem redundant; maybe a philosophical conversation for a fireside chat over brandy with an Orassian.