 |
|
Zopperoni
|
|
The second CSI-game ("Dark Motives") is a large improvement over the first game, but as pointed out, it offers no replayability.
If you do...acquire... the game, set the difficulty to maximum at the start for at least a bit of a challenge.
|
|
|  |
 |
|  |
 |
|  |
 |
|
vovan
|
|
quote: Originally posted by Boris Godunov
221B Baker Street was made into a computer game. A fairly old one, at that.
|
Ah, yes, I actually remember that one. The thing about it though was that it was a rather close "port" of the board game, and so it was only mostly fun to play with several people. If you played alone, the whole "Press key to roll" thing that limited the number of your moves untill you next rolled was quite annoying. It's a cool resource of starting material though. 
quote:
I seem to remember some old detective games that were pretty engrossing, though I can't think of the names of them. One had several mysteries, and you went to various locations around a town finding clues and piecing it all together.
|
Yeah, I looked around mobygames for old detective games to check out, and found this one called "Deaths by the Dozen" or some such. Basically, you have 12 murder cases to solve and you go around the different locations in town, talking to people, and searching locations for clues. Thing is, it again comes down to being fun when played in "multiplayer" mode - since there is no challenge in getting the clues themselves, but rather - only in trying to piece the murder together from as few as possible in order to beat the other players to the solution.
quote:
The problem was the limited replay value. Once you solve a mystery, it's done. So Matt's idea for a randomly generated one would be awesome.
|
Precisely. 
|
|
|  |
 |
|
vovan
|
|
quote: Originally posted by MattH
It's difficult to keep limited for a 'proof of concept'. |
Indeed. 
quote: Originally posted by MattH
Along the same lines, it's hard to even make one crime "fork" (i.e. burgulary without assault/murder) because of the number of possible twists that have to be recconed with individually. |
Well now, I spent a bit of time thinking about how I would start with such a project, and here's what I came up with.
First of all, I think that for this to be successful, one needs a strong information-sharing system. Basically, my idea was that every NPC would have a memoery of their own, represented by a semantic tree. At the root of it would be the most generic, almost useless information, and as you go deeper, more and more details are contained, so in the end the leaves have the most specific info - the one you are after. Basically, the "memory" of a witness of the crime right after the occurrence would look something like this:
code:
Saw Burglary
/ | \
[Participants] [Location] [Environment]
/ \ | \
Saw Victim Saw Burglar ... ...
| |
Victim Burglar
was was _____________
female male \ +-Was unshaven
| | \
She had Had a scar Had dark hair
long hair |
Scar was on
left cheek
Now, the deeper down the tree you go, the more details you discover right? So, my idea was that each NPC's memory would slowly decay. And the deeper into the tree you go, the larger the decay rate. After the function reaches a certain threshold, the piece of information is forgotten. So, basically, as time goes on, the NPCs start forgetting stuff. Back to the witness from the above example. If you ask her about what she saw the day after the event, she might tell you the exact looks of the burglar. A week from then, on the other hand, she might only remember that he had a scar on his face, but forget the exact location, or even that the man was not cleanly shaven. Thus, you would have to be fast about getting information from the witnesses, though inevitably something will be lost from your sight - there are only so many people you can interrogate in the given time, so by the time you get to others, they will have forgotten some stuff.
Alright, so my thinking was that I would start with this knowledge representation system. Then, once that works, the first thing I would do is try to simulate the crime. I'd start simple: just one type of crime, say theft. I'd then generate, say 10 NPCs. Each would have, say 3 characteristics. Let's say I chose: gender, race, and length of har - them being the most conspicuous characteristics of a person. So, then, I'd randomly give these attributes to the NPCs. Next, I'd pick two NPCs - the victim and the burglar, and five witnesses. To two of those witnesses I would give full and correct memory of the crime; to two of them, I'd give the memory of two of the characteristics of the burglar correctly and one made up; and the last witness would only remember one characteristic of the burglar correctly, and the other two - incorrectly. Finally, I'd put the player in and say: find the burglar in 10 turns. (The victim is assumed to have been hit over the head with something heavy and thus does not remember anything.)
Okay, example time. Say I have the following possible characteristics:
Gender: {male, female}
Race: {Black, White, Asian}
Hair Length: {Bald, Short, Long}
Then, I could generate the following ten characters:
1. male, black, long
2. female, white, bald
3. male, asian, short
4. female, black, long
5. male, white, short
6. female, asian, long
7. male, black, short
8. female, white, long
9. male, asian, bald
10. female, white, short
Now, pick two of them. Say, I pick the first two: the black man with long hair has stolen something from the white female with a shaven head.
Now, say I pick the next five people to be the witnesses. Then, two of them remember all three characteristics of the burglar correctly. Next two: one of them may only remember that the burglar was a male with long hair, but happens to think he was white; the other person may remember the person was black and had dark hair, but happens to think it was a female. The final witness knows the person had long hair, but thinks it was an asian female! ( ) The remaining three people just heard the screams, and can't really say anything useful about the burgar.
Okay, now the player's taks is to pin-point the burglar within 10 turns. This is tricky because:
a. Interrogating four of the available NPCs doesn't yield any information (victim was unconscious for the most part, and the three witnesses only heard stuff), but still counts against your turns.
b. The real burglar will lie.
c. Some witnesses don't have full information but want to seem important, so they still give you all three characteristics of the burglar to the best of their knowledge, without conceding the fact memory may not be serving them right.
d. The witnesses that do know everything correctly, may forget stuff by the time you get to them.
This system would be fairly easy to code, but if you make it extensible, it would then be also easy to build upon and add further details to the crime you generate - additional details of appearance of the burglar, more varying types of crimes, etc.

quote: Originally posted by MattH
Hopefully I'll have something basic to show soon (tomorrow? Friday?). |
How's it coming along then? 
|
|
|  |
 |
|
MattH
|
 |
Go sneer at that cow creamer!
Jul 2002 time: 05:34
|
|
DAMMIT stupid enter key. Wait a sec, I'm finishing typing this.
I really need to cut down on the variables. When I started I got very carried away... But there are some things you need (more on this later blah blah blah)
My concept map right now is this. In order of decisions made by the game, choices that will eventually be made by the player are marked (p), random decisions are marked (r) and 'educated' decisions are marked (e), decisions fixed by previous decisions marked (f). Most items are generated using the previous item as a base:
code:
- Type of crime (murder, robbery, etc.) (p)
- Criminal [
----sex (r) }
----name (e) } These 4 are standard for all characters-
----age (r) }
----misc. personal } Lumps intel, etc.
----profession (r) } Alot is lumped into profession: salary, position, years on the job, etc.
----disposition (r)
----relationship - victim (e)
----personal relationship - victim (e)
----relationship - victim (r)
----personal relationship - victim (r)
]
- Victim [
... boilerplate personal stuff
----disposition (r)
----relationship - victim (e)
----personal relationship - victim (e)
----relationship - npc 1..x (r)
----personal relationship - npc1..x (r)
]
- NPC 1..x [
----boilerplate
----relationship - victim (e)
----personal relationship - victim (e)
----relationship - npc 1..x (r)
----personal relationship - npc1..x (r)
]
- Motive (e, based on disposition, job/martial status, inteligence, etc.)
- Weapon used (e, based on disposition, motive)
----weapon evidence (e)
- Evidence } Big category, will cover soon. Will include turn length randomness for processing (based on type of crime!), etc etc.
That's a little snippit of how my thinking is going. I'm going to have to write a turn incrementer for every time the detective does things.
I got my new hard drive this week, so everything had to be moved over. I hope to get a good portion of the boring work done tomorrow at work, nothing interesting going on there...
Last edited by MattH on 19-04-2004 at 07:42
|
|
|  |
 |
|
Urban Ranger
|
|
Apolyton Duke of Off-Topic
|
|
quote: Originally posted by vovan
Now, you are saying you would use a genetic algorythm kind of thing to generate a full crime? I am not sure really that a genetic algorythm would apply here... I mean, you have a crime after one generation of the algorythm, but then how would you determine the fitness of the genotypes to bring to the next generation? I imaging it would be hard to analyze the "difficulty" of the crime programmatically... And then, what would be the other criteria? |
As I understand it, you (as the author) define a set of criteria to judge the generation algorithm, and the various "crime cases" compete against each other for survival based on these rules. The closer they are to them, the "fitter" they are judged to be. Then the surviving cases get tossed back into the generator, which looks at them, mutate a variable here or there, and create a new batch.
A run of the mill heuristic algorithm should work too. You (the author) looks at each case, and tells the generator which area(s) need(s) improvement.
|
|
|  |
 |
|  |
All times are GMT. The time now is 05:34. Apolyton Time is 00:34. |
top of page
|
| archivepost |
|
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is ON
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|