Hi,
We're not most games, and we're not after the easiest, but the most realistic approach. This is a work in progress so unfortunately there are a lot of difficulties to overcome, but the end result will be very much worth all the effort. We want people to treat NPCs as if they were real (i.e., real citizens of Yliakum just like your characters) and not just "tools" to get what you want.
Researchers have been working in the artificial intelligence area for quite some time, with much more funding than any of us are likely to see, trying to figure out problems like parsing natural language, machine learning, etc. The researchers haven't really got very far, but the developers of this game expect to solve these incredibly difficult problems with a few weeks of fiddling.
USER: Is there anything I can do for you?
NPC: Yes, I need 3 carrots for a stew I'm making - could you go to the grocer and get them for me?
USER: Probably not - I think carrots are out of season at the moment. Why don't you just use turnips?
NPC: Hmm, turnips would make it taste strange
USER: What if you only used one turnip, and added some pumpkin to make up the difference?
NPC: Yeah, I guess that'd work. Could you get me a turnip and some pumpkin instead?
USER: Maybe, but are you going to need anything else from the grocer in the next week?
NPC: In the next week? I'll probably need a few sacks of potatoes, more tomatos and some celery.
USER: Hmm, how about you do a list of things you need from the grocer each week and arrange a regular delivery?
NPC: Hey, that sounds like a good idea...
USER: You could probably even talk the grocer into giving you cheaper prices if it's a regular order..
NPC: Nice idea - then I could make more profit from my stews. I wish I had time to go talk to the grocer..
USER: Would you give me cheaper stews if I negotiate a regular order with the grocer?
NPC: Ok, as long as the grocer gives me better prices - it's been costing me heaps buying a few vegetables at a time.
In the dialog above, what if the user tried to talk the NPC into dealing directly with a farmer, or growing their own carrots? What if the user had some carrots but tried to barter, or told the NPC that the grocer increased their prices so they could keep the difference? How about if the user was hungry and decided it'd be better to bash the NPC and steal the partially made stew, or perhaps decided to go and get all of the things needed to make stews and start selling stew themselves (and maybe buy every carrot in town to make things hard for the original stew maker)?
There is no way one earth that the developers of this game will ever be able to allow people to treat NPCs as if they are real - the massive number of things a person can say, the incredible difficulty in parsing what users say correctly, and the work required to get the NPC to say sane responses makes it totally impossible. Add to this that most people use tone and gestures - is the sentence "I really like the color pink" a serious statement or was I being sarcastic? You can tell because of the way I said the word "really", and because I poked my tongue out at the end of the sentence...
In practice, there's usually a very small number of responses that an NPC is capable of (except for variations of "huh?" and "I didn't understand that"), and there's also a very small number of things a user can say to trigger the very small number of responses. Keywords will not work - consider something like this:
USER: Is there anything I can do for you?
NPC: Yes, I need 3
carrots for a stew I'm making - could you go to the
grocer and get them for me?
USER: I used all of my carrots with your wife last night!
NPC: Yes,
carrots - do you have them?
USER: No - I said I've used them all. I killed the grocer last week too...
NPC: Yes, the
grocer - did you go see him?
Rather than trying to perform miracles, why not implement something that is practical and can be used? This is what most games do, and I expect it's what this game will do after spending years trying (and mostly failing) to make the NPCs seem "real".
Cheers,
Brendan