Using Lisp (or another language) to generate fictional characters

Started by
125 comments, last by Woodsman 20 years, 3 months ago
Let's imagine, for the sake of exercising our brains, the way that we could code a program where its purpose is to create a dossier on a fictional character. Essentially, it is the program's task to contrive, imagine, and flesh out a character and a little bit of his history. I'll lay out some basic ideas. In my example, I'll assume that depth is more important than breadth with regard to the program's abilities, therefore, in my example, I'll restrict the domain to a particular region and period. If you wish to elaborate on this whole idea, then explore the idea how you might. For my example, let's assume that domain is the Old West. The first thing we want is a name. Since I'm not up on Native American culture, I'll limit my program to having knowledge of European and Hispanic names. So, we'd provide a database of names. We might create a list of lists like this: ((Smith English) (Sanchez Hispanic) (Bierstadt German) ...) and so on. And for first names, we might create a list like this: ((John English Male Johnny) (Carlos Hispanic Male) (Mary English Female) ...) and so on. Now, first the program decides on an ethnic background and gender, and then proceeds to find a suitable surname, first name, middle name, etc. Notice that a provision can be made for marriages between individuals of different ethnic backgrounds, allowing for leeway in the choosing of first names. From here, the program can recursively create parents of the individual, receving information regarding the birthdate, the surname, etc. Speaking of birthdates, the program will choose a birthdate and age for the character. Also, the program can decide if the character is an orphan or not, and if so, create a guardian who raised the character, or an institution, such as an orphanage, school, etc. After that, the program can create a medical history for the character, based upon any knowledge the program has on common ailments, etc. If there exists knowledge about any disfiguring attributes of any diseases, then such characteristics can be created for the character, such as a limp, etc. Then come accidents. If there were any accidents which caused permananet scarring or some other such maladies, these are recorded. Again, note that such embellishments of character require knowledge with respect to the event. As an example, we might have a list which lists things such as muggings or carriage driving accidents, and the possible resulting wounds which might have happened. Note that we not only create a physical description of the character, but a history which explains how such physical traits were acquired. I'll leave it at that, but obviously there is more to say... [edited by - bishop_pass on October 3, 2003 12:09:49 AM]
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
Advertisement
So would this character generator be most useful for something like a computer game, or do you have something else in mind?
I think that in order to generate each character''s life story, you would have to take into account all the other characters'' life stories. Basically, you would have to evolve all the life stories together. That would be quite an interesting project - something like The Sims except more global in nature.
“[The clergy] believe that any portion of power confided to me, will be exerted in opposition to their schemes. And they believe rightly: for I have sworn upon the altar of God, eternal hostility against every form of tyranny over the mind of man” - Thomas Jefferson
This is an interesting idea. I''ve got nothing better to do, so I might as well get to work on this

I don''t know Lisp and I''m not really up to learning it, but I''ll give it a try in c++.
pixelwrench.com | [email="matt[nospam]@pixelwrench[nospam]com"]email[/email] lethalhamster: gamedev keeps taking my money, but im too lazy to not let them
quote:Original post by Tron3k
I think that in order to generate each character''s life story, you would have to take into account all the other characters'' life stories. Basically, you would have to evolve all the life stories together. That would be quite an interesting project - something like The Sims except more global in nature.
I don''t think it''s necessary to do such a thing, unless you''ve defined a set of criteria requiring just that. I would consider it a sufficient problem to tackle it as I originally put forth, whatever the context might be, and whatever depth and breadth you wish to add to the domain.

_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
quote:Original post by Xtremehobo
I don''t know Lisp and I''m not really up to learning it, but I''ll give it a try in c++.
Hmmm. I''d like to point out that Lisp is better suited to focusing on the problem at hand - that is to say, the actual domain knowledge, rather than a language like C++, where you''d have to spend time developing the infrastructure for such domains before actually tackling the domain knowledge itself.

_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
But all you are left with is the equivalent of an RPG hero with generated statistics and some kind of physical description. You still don''t have a REAL character with personality, attitudes, vices, fears, goals, dreams, etc.

I guess you could just take the same approach even farther to get all this, but all you''ll still have is just a character with a bunch of flags set. Then again, I guess technically that''s all we are.
I like the DARK layout!
quote:Original post by BradDaBug
But all you are left with is the equivalent of an RPG hero with generated statistics and some kind of physical description.
I don't even recall focusing on a physical description or statistics. I think I was more focused on a history for the character.
quote:
You still don't have a REAL character with personality, attitudes, vices, fears, goals, dreams, etc.
I thought that was more the direction that I was taking.

[edited by - bishop_pass on October 4, 2003 12:06:26 AM]
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
Do you have any ideas on giving the characters personalities? I think this is an important aspect because it can affect different traits that a person can have. Someone who loves excitiment and adventure might be more likely to have one of those accidents that lead to disabling diseases.
__________________________________________________________America seems to like crap because its what we make popular. - Goober King
It sounded to me sort of like a character would look something like this (btw, I don't know Lisp (which may have something to do with me not understanding), so this is pseudo C):
injury i0i0.date_received = 20031004i0.type = LIMPi0.bitterness_weight = 3.5i0.depression_weight = 1.2i0.happiness_weight = -0.2character.injuries[0] = i0character.eye_color = "blue"character.hair_color = "brown"character.outgoing = 3.0character.neatness = -3.0character.friendliness = 0.8

Something like this.

Edit: syntax error in my pseudo code!

[edited by - BradDaBug on October 4, 2003 12:19:04 AM]
I like the DARK layout!

This topic is closed to new replies.

Advertisement