Character Generation [technical/theoretical]

lol! Toddlers running rampant--there's a metaphor and have never thought to apply to character generation. :)

So, from your examples, an OA would never remove data from an object, it would merely ignore anything it didn't understand, and add anything else it needed. I think I can see how that would work.

I think I would argue counter to your assumption that "self-aware" data need more attention, though. By giving a datum the ability to make its own decisions, you've actually delegated responsibility to it. You can focus on other things and accept that the data will know what to do under any given circumstance. Perhaps I'm still not seeing your entire philosophy here, but it seems like removing the logic from the data requires you to pay more attention to the data...

And don't worry about ideas having holes in them. I haven't seen a theory yet for entity generation that doesn't have holes in it. That's what these discussions are all about--patching up holes and finding models that can hold enough water to be robustly implemented.

- Jamis
 

log in or register to remove this ad

Melted ice cream

By giving a datum the ability to make its own decisions, you've actually delegated responsibility to it. You can focus on other things and accept that the data will know what to do under any given circumstance.

Okay, lets assume our datum is intelligent. Does it know what its relationship is to other datum in our set? If so, does it know what its relationship is to other datum based on the context it's being viewed in? Simplified example: Does Strength know that it affects Base Attack and Damage? If so, this works fine for D20 games, but what about a new game that comes along? Does Strength also know that in NewGameX it also affects Skill points?
 

Ah, I see what you're driving at. By coupling logic and data, it becomes hard or impossible to teach an object new tricks. A good point.

I'll think about this some more.

- Jamis
 

Regarding Evolving Yugos

BeerSkunk -

I'd argue that the data without the rules is useless. For example, the number 12 appears on a characters sheet. Without tying that to something else, say Strength, the number itself is useless. But, by tying it to Strength we have given the data definition. It has a purpose. It also has rules associated with it (anything that relates to Strength).

Now, I do think your approach has merit. I just don't agree with the assertion that rules and data must be decoupled. In fact, by the nature of the problem we are trying to solve, a universal generator, it is imperative, in my opinion, that the rules be defined by the data. Without that it'll still take a programer changing the code to add more rules.

That's not what we want. It shouldn't take any programming skills to create new rules. It'll probably take more cognitive skills than the average bear, but that's a different problem. :D
 

Re: Melted ice cream

BeerSkunk said:


Okay, lets assume our datum is intelligent. Does it know what its relationship is to other datum in our set? If so, does it know what its relationship is to other datum based on the context it's being viewed in? Simplified example: Does Strength know that it affects Base Attack and Damage? If so, this works fine for D20 games, but what about a new game that comes along? Does Strength also know that in NewGameX it also affects Skill points?

Argh! Posts while I'm posting ... must reply. :)

As part of allowing generation of entities for NewGameX, it would be necessary to create Rules that describe it's differences, i.e. you'd add a Rule that describes how Strength affects Skill points.

Don't think of coupling Rules with Data as making them part of the data element. Think of them as independent entities that can be used to connect other entities together. Example: NewGameX has a Rule (entity) that describes the relationship between Strength and Skill points (two other entities).

Am I making sense? I think maybe I need to draft a formal paper on what I'm trying to get at. I'm starting to think I'm not explaining my thoughts very well.
 

I'd argue that the data without the rules is useless...

Agreed. Data without rules is useless.

...For example, the number 12 appears on a characters sheet. Without tying that to something else, say Strength, the number itself is useless. But, by tying it to Strength we have given the data definition. It has a purpose. It also has rules associated with it (anything that relates to Strength).

This is where my Object Analyzer concept comes in. Some thing, separate from the data that applies rules. What the OA is, or how its implemented is anyone's guess. There are numerous ways of doing it, but the point is to keep data from knowing about how they interact with other data in our set. I assert that should be the job of some other entity.

Don't think of coupling Rules with Data as making them part of the data element. Think of them as independent entities that can be used to connect other entities together. Example: NewGameX has a Rule (entity) that describes the relationship between Strength and Skill points (two other entities).

I think we're in sync here. Keeping the Data and the Rules separated. You're right that the Rules could very well be independent data entities. They could be something else entirely. I don't know how the Rules will be implemented, but essentially we're in agreement. It should be the Rules, as separate entities, that give the Data meaning, not the Data itself.

Please correct me if I'm misinterpreting you, or throw blunt objects at me if I'm not making sense and need to clarify myself. :)
 

AGREED!

I agree that we agree. :eek:

I think we basically just debated long enough that we could see through each others jargon and come to the conclusion that we are saying the same thing.

Now all we need to do is define it. :D
 

I've made stabs at this problem before with White Wolf character generation (Characturge ).

It's obviously an old problem with software development, and you generally see several kinds of approaches to solving it.

A. The software is enormously complex and comes with its own script (or procedure if you prefer) language that exposes variables (or objects for later generations) to manipulation by "power users." Microsoft likes this approach a lot, which is why all of their networking products are virus havens.

Upsides: Very flexible, limited expertise required of casual users.
Downsides: Hideous amounts of development time required.

B. The software is really essentially a library - "users" build applications out of components. These are things like MFC, OWL, LabView. Nowadays they typically they come with some kind of GUI CASE tool, so that they approach the script language solution.

Upsides: Even more flexible
Downsides: Even casual users generally have to be fairly savvy. Development time ridiculous.

C. The software itself may be fairly inflexible, but it uses some interprocess communication scheme to allow it to act as a part of other software, via DDE, OLE, COM, AFX controls, etc. Computer scientists love this because it's complex and theoretically rich. Developers generally grumble about it because it's complex and theoretically rich. Another important working example of this in real life is SAP. SAP sucks. On the other hand, Office also uses this approach, and it actually does tend to work fairly smoothly.

Upsides: Not so hard to develop, once you get past the interprocess comm hump, though it can be a big hump.
Downsides: Requires developers to be familiar with arcane protocols, expressed in bizarre computer science jargon, that are highly platform dependent and become obsolete every year or two.

Of course, many real solutions use combinations of all three of these.

I have actually tried using OLE in my character generators, and back in the mid 90s I had a test version of VtMChar (my older Vampire character generator) that you could embed via OLE. Part of the reason for this was that many users wanted note taking capabilty in it, and it seemed like it would make sense to be able to either embed character sheets in word processor documents or embed word processor documents in the character generator. However, I heard nothing but chirping crickets when I floated the idea in public, so I never took it beyond the test stage.

My next approach was (A), which led to Characturge with its template files. My big motivation for this was that White Wolf kept revising Vampire and adding new games, and I didn't want to keep adding Options to VtMChar.

I learned several things from this. First, even in WW's much smaller RP community, plenty of people were ready and able to develop templates. Second, the more general character generator by nature had to be much clunkier than the highly specific VtMChar. Third, no matter what I added, White Wolf's developers would continue to add weird rules that woule require some new functionality. Eventually, with grad school taking ever more time, I stopped working on it. People still email me asking for the source code, and I might eventually give it out if I get around to it. :)

My first plan to push it forward if I ever got time was to write it in a more portable language than VC++. I thought Java was the answer. Then I actually saw Java applications in the field. After I had three JREs loaded on my system to run each different Java app, I decided it wasn't the answer after all, though I did end up using a Java component in my networked dice roller.

The next thing I tried was to build it using DHTML. This almost worked (very flexible, widely known API, those nasty rendering tasks were taken care of), but I could never get a reasonable data persistence mechanism worked out because browser developers were getting continually more paranoid about data persistence.

My current thought is that the best thing you could do is to build it around some open source browser code, say like Mozilla. Most browsers have enough objects and enough rendering power exposed as it is to do anything you could possibly want to do in character generation. With some alterations or additions to the serialization capabilities (say a sandbox for storing persistent character data, which is really no different than caching or cookies), you'd have something vastly ahead of any character generation software currently extant.
 

[Bump]

Any progress guys?

I was wondering if there were any lessons to learned from the E-Tools generators, so I had a quick look.

It's quite happy generating chaotic evil paladins.

I guess that's a lesson of a different kind...
 

We had a pretty lively discussion a week or two ago off the board, and tossed around some interesting ideas. Nothing ready for "public consumption" yet, but we'll keep everyone posted. Things are quiet right now as we are all kind of digesting what has been discussed and reformulating our theories, but hopefully we'll have another burst of creative energy soon. ;)
 

Remove ads

Top