So there's been these discussions in the forums lately about game ideas, and how they're stale. Agreed. And how games would benefit from more openness. Agreed. And then the discussion revolves around the "end-game" of that gameplay- what you can do:
example: In my game, you'll be able to do anything you want!
It's gonna be awesome! You can be a thief, a cop, a barbarian, a farmer, and you can talk to the NPC's, and they'll talk back!
Okay, fine. How do you go about that?
example: Don't crush my dreams!
Right. So I was at the laundrymat last night (where I do a lot of my game development thinking/sketching), and thought about new ways to represent chatting with NPC's. The problem is that other ways that I've been thinking about, including a Fuzzy Cognitive Map-based method of personality traits (below), are not yielding good results.
A less complicated version holds slightly more promise, but I'm starting to feel that it lacks the depth of the former plan:
So the problem is two-fold:
1) How does one construct dialog in a game in such a way as to allow interaction with NPC's in a more freeform way than the usual script-driven dialogs that are currently used, while allowing for realistic dialog?
2) How does one tie that dialog system in to the AI in such a way as to allow "soft" skills and actions by the player (as well as "hard" ones) to influence the course of dialog?
In other words, how do you make NPC dialog actually part of the gameplay, rather than just a way to get canned information from the NPC's? The answer is not the least bit clear, at least for the first question. Researching where research is at for the structure of dialog, you won't find a consenus for how conversation occurs. With that in mind, I had to sit down and decide not how conversation occurs outside of the game, but the way that conversation should best occur in the game.
Approaching the problem from this angle, I blocked out conversations with NPC's in my head and on paper where conversations took different turns, and accomplished different ends. This was done to help solidify the types of "dialog types" that would be used, such as "question", "acknowledgement", etc. These generic headings make it so that, instead of using natural language processing (NLP), I can use more generic "dialog actions" such as "thank NPC for his time". In this fashion, you can avoid having to parse a player's language (especially if their grammar is not perfect, which means wasting cycles on spellcheck, or asking for repeated inputs).
Remaining problems are how exactly to reference the branching between dialogs, and how to encapsulate the information (though I think I have some information groupings that mimic the real world more closely than just having all the information scattered in a database). There will still need to be some heavy AI behind this, and I look forward to seeing my first server failure from the stress ;)
As for the second question... It's a good question, isn't it? Just how do you describe a personality in so many words, when the words we use are not at all sufficient in and of themselves to do the job? I'm leaning towards a combination of personality traits and emotions, but the list is so up in the air right now that I won't even write too much about it. Suffice it to say that the list is going to have to reflect both the influences of dialog actions as well as physical actions in the world. If it doesn't, then you can have an NPC get angry at you for an insult, but you can go upside his head with a monkey wrench and he'll still be happy to see you. As amusing as that would be, it makes for very bad gameplay ;)
On other fronts, I've been learning Visual Basic, which I really like! It's fast to prototype with, and when used with Excel (as you're seeing in the screenshots), you can easily track all the data and the results with ease. Here's two shots of worksheets I'm using to simulate dice rolls, combat, skill level score calculation (because I went the hard route and did away with experience levels), etc.
RPG Sim (not fully coded out yet):
I should have the RPG Sim page working after this weekend, but it's not a priority since it's mainly geared towards making sure that inventory combinations don't have adverse reactions on the player, balance-wise. The Dice Sim page was more important in that it helped prove to myself (in about 5 minutes) that the skill level system worked the way that I envisioned on paper.
And in yet other news:
1) I'm happy to say that I'm not only going to the IMGDC this March, but my company is also a sponsor this year!
2) trueScape 2.5 and mapExporter are confirmed working with trueSpace 7.5 (basically because trueSpace 7 is just a wrapper with some fancy tools around trueSpace 6). With that said, I am probably going to rerelease trueScape 2.5 through my store. mapExporter may or may not be rereleased, depending on it's relevancy (Constructor kinda puts it to shame like nobody's business right now).
3) Still working on textures, which I'm accumulating faster than I can work on. A recent trip to Ethiopia has yielded one or two hundred more source photos that I need to comb through.