Armageddon MUD General Discussion Board

Non-Armageddon Discussion => Non-Armageddon Discussion => Topic started by: Case on November 06, 2011, 03:42:55 AM

Title: Character Generator Tool Revision 2, Generate Harder
Post by: Case on November 06, 2011, 03:42:55 AM

As none of you remember, last year I decided to write a character generation tool a la the one on the website AmandaGreathouse had but all extensible with XML and impossible to run without Java runtimes. My nearly-new-year resolution was to write another with the following caveats:

Naturally, I looked at C#. I ain't used C# before but I gave it a go anyway, doing up a windows application WPF style with all the fancy bells and whistles (hacks for all you industry readers) you've come to expect from dodgy looking Windows forms. I am somewhat to moderately happy with the result and I hope the one of you out there who'll maybe use it once will like it too. It also features some top quality artwork from myself that goes to show the level of effort I put in to polish the application - only after I realised using the Battlefield 3 icon since it's the only thing I could find is probably illegal.

You will require .NET 4.0 to run this executable. If you're a WinFag like me, you probably have it already.

Enough crap (Republican candidate thread only), project link follows: (
Title: Re: Character Generator Tool Revision 2, Generate Harder
Post by: valeria on November 06, 2011, 12:36:47 PM
"He was dragged up in the Labyrinth," instead of born.  Love it ;D
Title: Re: Character Generator Tool Revision 2, Generate Harder
Post by: Case on November 06, 2011, 04:57:06 PM
Now I am not so tired I can talk about it.

The idea was to write a program that allows you to write up the structures used for your game. I included the files I made in the tool for Armageddon as an example of that, although I've also since noticed you can't roll Muls because I put a double requirement in for them, and nothing can have two birthplaces. Luckily I put 'alpha' on the name and I'll fix this on next release.

What traits (this is the term I used for any aspect of a character at all) are used are determined by the tick next to them. Trait Categories, the base trait if you will (e.g. Sex, Birthplace, Race), contribute one trait from the lowest level of their tree structure of traits as long as it can possibly do so. If you put "Requires: Race.Broken" on say... Labyrinth, and you received the Birthplace.Allanak.Labyrinth trait, it will be unable to find Race.Broken in the next category and abort there. I may change the behaviour to exhaust every category but currently it just stops after being unable to select a trait from a category.

The order in which it processes categories is determined by the 'Trait Order' value. The order in which it displays the trait strings are determined by the Display Order value, although it will use the Trait Order value if the Display Order value is -1 like in the current files. If the category of the required trait or incompatible trait is for a category later in the Trait Order, it will ignore that requirement until it can possibly test it, meaning that Birthplace can limit Race choices even though Birthplace comes first. This can be seen in the example of Muarki Territory trait.

I included the display string markup in the readme file I put in the release.

Anybody could build upon what I have done. Personality traits could be added. Hair, eyes, build... whatever you like. To add a category, select the top level 'Traits' option on the Traits Tree and 'Add Trait' becomes 'Add Category'. Each category creates its own .XML file in the .\traits\ folder of the application.

The frequency value is how many votes each trait has to be selected and the chance of selection is Frequency / SumOfAllFrequenciesAtSameTraitLevel. The percentages are correct only in the situation that all traits will be available to be selected. If you are not a human, for example, you cannot be a Psionicist. When it rolls for Guild, Psionicist's frequency votes will be removed and thus other available options will be comparatively more likely. For traits that contain more traits, like Birthplace.Allanak or Guild.Templar, the frequency determines how likely the program is to select that trait. It will then dive down and try and select one of its child traits. If it cannot, it will fail, strike that trait parent from the list and try again. This can happen to infinite depth although your computer will crash at some point in the procedure if you go crazy.

What I am hoping for is some people to play around and expand the little library of files I've provided, that only represent the base character design for Arm, and allow for more physical traits, mental traits, flaws, background events.