Archived

This topic is now archived and is closed to further replies.

bishop_pass

Using Lisp (or another language) to generate fictional characters

Recommended Posts

solinear    145
quote:
Only an RPG programmer would think like that, and for what purpose?


You say that as if RPGs were not stories or if attributes could not be quantified.

If you simply want to create random, seemingly unrelated NPCs, then more power to you, but if you want to actually try and build a community, then you have to quantify much more in order to try and make it something resembling believable.

Simply creating a group of random NPCs out of the ether ends up with there being no rules and nothing is quantifiable. You would end up with a psychopathic drug dealer married to a CFO of a Fortune 100 company.

I'm trying to suggest that quantifying attributes and personalities of NPCs will allow you to create NPCs, then give them forced relationships (parents) which would create the basis for their story. An intelligent child in an inner city slum will have a completely different story than the child of the affluent parents, even when otherwise their attributes are the same. They might have the same possibilities, but the probabilities of coming to the same conclusion is far, far from likely.

My impression was that you were looking for a better way to create believable NPCs with good stories though. I'm sure that there are plenty of ways to create stories for any number of NPCs. They won't be very believable stories, but you can churn them out left and right. My understanding of LISP is that it does not lead one to do such a thing, in and of itself at least. Of course, as always, I could be mistaken.

quote:
Storytellers don't think like that. They think in terms of stories.


Computers don't think like storytellers, they think in terms of numbers. I'm simply trying to think of ways around the numbers in order to create a system that will do what you're looking for, create lives and stories from the numbers that the computer has no choice but to think in.

Being someone who writes short stories, I think in terms of societies, individuals, events and goals. Maybe I'm just not a very good storyteller, but that's the way that I think when I'm writing stories. Leaving any of that out will end up with an incomplete story. I'm trying to find a way of telling a computer enough about the individuals in a way that it will create the society and then create the events and goals based upon the individuals and the society. I'd say to do more, almost create a virtual metropolitan area, but at some point in time you are well on your way to creating a whole world and that's way more than you want or need, in all likelihood.

[edited by - solinear on November 19, 2003 3:49:29 PM]

Share this post


Link to post
Share on other sites
Extrarius    1412
RPGs are NOT stories. An RPG session might contain a story, but 99% of the time, an RPG is just a set of numerical rules that describe characters and actions.

The point is that if you can describe somebody without quantifying every single attribute (do you recite iq, wisdom score on a scale of X-Y, dexterity as a number from Q-R, etc) when describing somebody, a computer can do so as well. Words such as 'intelligent' are just symbols in our minds that we link to concepts. A computer can have a database that links descriptive words to probable consequences, so that an intelligent person does intelligent things and a person lacking intelligence does not.

I agree that using numbers is one way to describe a person, but it is not the only way, and it is not the way that the participants in this thread want to approach the problem.

[edited by - extrarius on November 19, 2003 3:40:51 PM]

Share this post


Link to post
Share on other sites
solinear    145
quote:
I agree that using numbers is one way to describe a person, but it is not the only way, and it is not the way that the participants in this thread want to approach the problem.


The most humorous thing about this is that doing it a different way just ends up with creating different labels to describe varying levels of the same thing, low, high, very, etc... While it might be easier if you plan on building a complete language understanding, if you just want to tell a story it might be a longer way around the problem.

I guess the reason for trying to find another way to do it, not completely dependent upon LISP at every stage of the work is based upon the fact that LISP is very processor intensive and impractical for most game applications and since this is a game development site I'm trying to come up with a solution that might be able to be implemented in an actual game.

[edited by - solinear on November 19, 2003 4:21:12 PM]

Share this post


Link to post
Share on other sites
kordova    140
quote:
Original post by solinear
The most humorous thing about this is that doing it a different way just ends up with creating different labels to describe varying levels of the same thing, low, high, very, etc... While it might be easier if you plan on building a complete language understanding, if you just want to tell a story it might be a longer way around the problem.


I don''t see anything being quantified so I don''t see that relation.

quote:

I guess the reason for trying to find another way to do it, not completely dependent upon LISP at every stage of the work is based upon the fact that LISP is very processor intensive and impractical for most game applications and since this is a game development site I''m trying to come up with a solution that might be able to be implemented in an actual game.


So you''re sacrificing story in favor of clock cycles?

Share this post


Link to post
Share on other sites
kordova    140
quote:
Original post by solinear
quote:
Only an RPG programmer would think like that, and for what purpose?


You say that as if RPGs were not stories or if attributes could not be quantified.


You say that as if that is the best, if not only, solution for all sorts of games. I contend than many things can not simply be abbreviated with a quick number as they so frequently are and even if a dead end, other paths should at least be tested.

Share this post


Link to post
Share on other sites
Neoshaman    180
i think we must talk about WHAT is a story before go beyond this point to make thing clearer

a story is an a related events

then story told about things wich are already do (fictionnal or real, even if it is in the future)

for myself i have use 3 layer which interact themselves
the theme (what it is about)
the characters (who made action)
the story itself (what''s happen, the action)

story differ from game, in that game are experiance which has not been set yet (and would became at the end a story)

the whole problem is to shape something in the way it would be if it had already happen (giving the sense of a story)

there is to major theory in story
aristotelicean and non aristotelicean

aristotelicean focus of what''s happen and how to tell it in the more efficient way (structure), now known as the hollywood''s style, aim for efficienty and could be breath taking but can be not that deep (rely on stereotype as code to say what''s happen, because they are easily readable)

non aristotelicean focus more on plot (why it happen) and don''t mind about the structure but about meaning, french movie and art class movie are the kind

good story tend to fit both description ( and manga i''m watching now did this quite good, ex stereotype is use as amorce for a character but is only the superficial part then when we are introduce to the character we go to more non stereotypical behaviour, stereotype is use to emphase some aspect to introduce a non conventional character playing with the knowledge of the viewer)

then learning about how we could organize code with this is more useful than arguing about number or not, but how to acheive the basic required, then we have to define these basics first

did this meaningful??

>>>>>>>>>>>>>>>
be good
be evil
but do it WELL
>>>>>>>>>>>>>>>

Share this post


Link to post
Share on other sites
sjelkjd    171
quote:
Original post by Extrarius
RPGs are NOT stories. An RPG session might contain a story, but 99% of the time, an RPG is just a set of numerical rules that describe characters and actions.


Have you ever played a real rpg? You know, like D&D? Final Fantasy doesn''t count.

In fact, I''ll go so far as to say that if you''re character is primarily determined by numerical rules, you haven''t really been playing an RPG.

Share this post


Link to post
Share on other sites
TerranFury    142
How about representing the "story space" as a really simple directional graph? Each node is an event, and each edge points from a cause to an effect; if the relationship between events can go both ways then the arrow points both ways. Start at some "first mover" and then just randomly traverse your graph in a chain of causes and effects.

To make things interesting, perhaps do this recursively, splitting off multiple chains. If/when two paths intersect, a rather interesting plot emerges spontaneously!

One could also begin narrating the story at some time after t=0 , such that there are causes preceding the first narrated effects and are not revealed until later. A heuristic could determine flashback points; obvious ones are previous plot intersections.

You can see how this relatively simple idea can be developed to any ridiculous degree of complexity.

Opinions?

[edited by - TerranFury on November 20, 2003 2:06:01 AM]

Share this post


Link to post
Share on other sites
Extrarius    1412
quote:
Original post by sjelkjd
quote:
Original post by Extrarius
RPGs are NOT stories. An RPG session might contain a story, but 99% of the time, an RPG is just a set of numerical rules that describe characters and actions.


Have you ever played a real rpg? You know, like D&D? Final Fantasy doesn''t count.

In fact, I''ll go so far as to say that if you''re character is primarily determined by numerical rules, you haven''t really been playing an RPG.
I haven''t played many, but I''ve used a few different systems: Shadowrun, GURPS, Hero, and D&D. In all of them, the RPG contains rules for numeric manipulation of events. The DM made the story, not the RPG.

Share this post


Link to post
Share on other sites
bishop_pass    109
quote:
Original post by solinear
The most humorous thing about this is that doing it a different way just ends up with creating different labels to describe varying levels of the same thing, low, high, very, etc... While it might be easier if you plan on building a complete language understanding, if you just want to tell a story it might be a longer way around the problem.
Humorous? I suppose it is humorous that you actually think we want to attach labels such as ''high'' or ''low'' to quantities. In truth, only you want to even use quantities. Others here want to use events as the primitives. Oh well, to each your own. I personally find the notion of attaching whether a person was cared for by a lover while nearly dying of the flu to be more useful and interesting then saying some guy had a wisdom of 14+. Oh, excuse me, I supposed that 14+ is actually denoted as ''moderate/high''.
quote:

I guess the reason for trying to find another way to do it, not completely dependent upon LISP at every stage of the work is based upon the fact that LISP is very processor intensive and impractical for most game applications...
It is? I didn''t realize that. How processor intensive is list traversal of cons cells vs. C++ data structure manipulation and string comparisons?

Share this post


Link to post
Share on other sites
sjelkjd    171
quote:
Original post by Extrarius I haven''t played many, but I''ve used a few different systems: Shadowrun, GURPS, Hero, and D&D. In all of them, the RPG contains rules for numeric manipulation of events. The DM made the story, not the RPG.


Now, could you play without the DM? How fun would that be?

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
So.. so far after reading two threads about this I can only conclude that you are trying to produce a program that generates a story.
The story generation could be acheived as well with a sequence of random selections from tables, what benefit would your method achieve over this.
Ultimately every attribute you describe must be given a weighting whether numerical or descriptive or you will not be able to apply it to the game or even the content generation itself or the characters will make no sense e.g a cripple lifting heavy weights.

So it either is a random story with no connections to in game play (so you might as well just randomly generate it) or you need to be able to compare attribute values.

Simply dismissing everyone as "pah you are one of those dirty RPG thinkers" is a cheap way of getting out properly discussing this subjecy with those you see as not sharing your view.

As for programmtic content creation for RPGs, yes I haven''t seen much about it bar randomly generating encounters

Share this post


Link to post
Share on other sites
Extrarius    1412
quote:
Original post by sjelkjd
quote:
Original post by Extrarius I haven''t played many, but I''ve used a few different systems: Shadowrun, GURPS, Hero, and D&D. In all of them, the RPG contains rules for numeric manipulation of events. The DM made the story, not the RPG.


Now, could you play without the DM? How fun would that be?
Not very, which is why I can''t understand why people play cRPGs and MMORPGs so much =-P

Share this post


Link to post
Share on other sites
sjelkjd    171
quote:
Original post by Extrarius
quote:
Original post by sjelkjd
Now, could you play without the DM? How fun would that be?
Not very, which is why I can''t understand why people play cRPGs and MMORPGs so much =-P


And we come full circle

Share this post


Link to post
Share on other sites
SecondBest    122
I think there is a bit of a mix up between story and plot. This point maybe creating some confusion in this thread and its sister thread (The one about filling story gaps)

When asked what I did yesterday, I''d say "Went to work. Met Adam who gave me this CD. and had dinner at the Chinese restaurant next door."
This is a story (Quite a boring one too) that has no plot. The fact that it''s boring IMO is not due to lack of plot, but rather that the events themselves aren''t that interesting.

Now let''s move on to another example:

Actors:
Frodo and the hobbits
Elrond half-Elven
Tom Bombadil
Strider
The Ring-Wraiths

Settings:
The Shire
The Old Forest
Bree
WeatherTop
Rivendell

Story Objective:
Frodo has to deliver the magic Ring to Elrond Half-Elven.

Story Main Events:
Frodo recruits some friends and forms the Underhill party.
The group meets with Tom Bombadil and gains some weapons.
The group reaches Bree. Strider joins the group.
The group is attacked on WeatherTop. Frodo is critically wounded.
The group Reaches Rivendell. Frodo is healed, gains magical weapon and armour. A new Objective is given.

This is Book 1 of LOTR described very superficially. You can also imagine it at different levels of detail.

allow me to dump some ideas here
1- LOTR has plot. Our story virtually none. Most computer RPG games only have a very thin plot (if any)that most people could do without.
2- LOTR is written much better. Computer games'' main strength is not narrative, but rather gameplay, of which LOTR has none.
3- Most of the character histories in LOTR were developed seperately and in relation to characters you never (or rarely)encounter in the book. The story teller was under no obligation to tie all the stories together to create a believable and engrossing world.

I think that with a bit of work (or a lot of it) you can write a program that creates stories.How good they will be we cannot know until we try, but it will probably depend on how much effort is put into it.

As to means of implementation I would say that LISP and similar languages do present themselves as the most logical choice. But a good programmer can approach the problem with whatever language they feel comfortable with.

Peace Out!

Share this post


Link to post
Share on other sites
kordova    140
Well, I''ve been tweaking and enlarging the use of the above stated functions, making them more "intelligent" in that a slot has to be defined for an existing category as well as all of the other little nuances that crop up with setting up such broad utility functions. If anyone is interested in the code I could throw it on my site easily enough, though it''s not very efficient nor really safe at this point. Just thought I''d state that this is still being worked on by me. Cheers.

Share this post


Link to post
Share on other sites
I think this topic would be alot more interesting if people who knew NOTHING of C or machine code were the ones discussing it. We''ve sacrificed our brains to make them think in machine code.

Share this post


Link to post
Share on other sites
Extrarius    1412
quote:
Original post by bjmumblingmiles
I think this topic would be alot more interesting if people who knew NOTHING of C or machine code were the ones discussing it. We've sacrificed our brains to make them think in machine code.
You'd have to include knowledge of RPGs (both P&P and cRPGs) in the list of banned knowledge. Too many people see the stats section as the main part of a character sheet.

[edited by - extrarius on November 27, 2003 1:54:17 AM]

Share this post


Link to post
Share on other sites
cannelbrae    122
bjmumblingmiles:

It isn''t thinking in C; its the abstractions people think in. There are many books for authors on character generation. Those are about as unconstrained as you can get. Perhaps, given a thousand years of literature, a few people have taken time to write out how they generate characters in their works.

Share this post


Link to post
Share on other sites
SecondBest    122
Ummmmmmm, isn''t it our knowledge of C (or any other programming language) that enables us to make games in the first place? Being aware of your limitations and working with them is a much stronger tool than blind enthusiasm.

Peace Out!

Share this post


Link to post
Share on other sites
kordova    140
quote:
Original post by SecondBest
Ummmmmmm, isn''t it our knowledge of C (or any other programming language) that enables us to make games in the first place?

Maybe. But by that same token we are limited by the limitations of that very language moreso than by our own ideas. If you don''t really see that you should reread this thread.

quote:
Original post by SecondBest
Being aware of your limitations and working with them is a much stronger tool than blind enthusiasm.


I don''t see any blind enthusiasm. In fact I see a little actual thought and work as opposed to going out and reading a stock lamothe book and making what everyone else is learning to make as though its the only form of expression on the market.

I agree that you should be aware of the limitations of your tools. However, these limitations should not cripple your creativity on any given project. If there exists a better tool for the job than you should take advantage of it. Do you really think any one language is the best for anything and everything?

Share this post


Link to post
Share on other sites
The abstractions we think in are abstractions pertaining to programming knowledge we have acquired thus far. Data type oriented, functional, even object oriented abstractions are still an extra layer above reality.

Share this post


Link to post
Share on other sites
cannelbrae    122
Blue. Red. Apple.

Those are all abstractions too. They have nothing to do with programming. Our minds operate on abstractions. Those are the types of abstractions I am talking about.

When it comes to comparing things, we use some form of a metric. That metric is an abstraction.

When it comes to relating things, we use stories and prior experiences. These are abstractions as well.

In this thread, over and over, people use different abstractions and problem solving methods while arguing that theirs was the best/only workable one. This isn''t all due to language, its due to how people thing at a much more basic level.

Share this post


Link to post
Share on other sites
Neoshaman    180
quote:
I think this topic would be alot more interesting if people who knew NOTHING of C or machine code were the ones discussing it. We''ve sacrificed our brains to make them think in machine code.


actually i fit the description, i know a little about pprpg and not that much about crpg (and i have no veneration for their definition then i could use any definition)
sometimes since i''m talking of diferent thing people don''t take me seriously, but i have proven in the past (in other domain) that i could surprise everyone, that''s why sometimes i may sound stupid, but the reply is analyzed and i get less each times and then could go beyond the problematic

well i''m still aware of code, but i have no value wether a code or a method is better than another, for ex i''m discussing with the rpgmaker community to adapt the lisp style programming in rpgmaker with using dinamic management of variable with an emulation of pointer, now we discuss how to emulate a list into a list with atom, i don''t know that much lisp (i have just begin learning him) and the programming style is very similar to assembly (i know little about it)
my method is just to borrow method and pattern from different things to build another one, that''s why i''m an artist and not a programmer

quote:
In this thread, over and over, people use different abstractions and problem solving methods while arguing that theirs was the best/only workable one. This isn''t all due to language, its due to how people thing at a much more basic level.

i don''t beleive in best method i only care the goal and the result

>>>>>>>>>>>>>>>
be good
be evil
but do it WELL
>>>>>>>>>>>>>>>

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Getting off track I feel with the usual bickering...

So if I could bring us back on track.

For my own understanding, why is this system any use at all? If it''s merely to produce a summary of a virtual persons life then fine. But as mentioned such a bit of text (or however you represent it) probably won''t be enough to produce a deep character. There''s another nature vs nuture argument here.

I don''t see stats as a bad thing, especially if in the end you want to derive something about the character. ie ''integrate'' over the events to say ''aged 21 the character was...''.

Sorry if I''ve missed the posts with this in already but can''t this be achieved in a simple and efficient manner with a FSM?

And whilst it is marginally more complex an interwoven history of a population would also be possible. Just think about the events happening to the population as a whole eg there''s a fight at blah blah, pick two people (with the ability to fight), done.

The (isa ... ...) style that was suggested gave me the idea of using something like OpenCyc. Create a complete knowledge base of the history of the population.

Note that the individual only mention is really a questionable endeavour, the whole idea that you have to store information in the child about the father being an alcholic is silly. You have to store all that extra information for each event, ie the usual why, how, when, where, what happened before and after.

Share this post


Link to post
Share on other sites