Okay, so I kinda jumped the gun on declaring intent to create a deep dynamic quest system. That's still my goal, but I need to start with smaller projects and work up to higher level stuff. From research and planning thus far, it's all about AI. In the case of a quest system, it would seem to be multiple layers of advanced AI.
The top level would be the planner. It would be responsible for saying "Okay, here's the basic quest, here are the actors involved, and here's what I need to do to make it happen." To be truly dynamic, it'd have to react to what a player does, and "re-think" the quest as it goes along.
The major subsection of that is the actors. They should be able to plan and act on their own according to their needs and goals. If the bad guy needs blood, he should find a farmer and kill them, or kidnap someone. If he's hungry, he might step over to the tavern (in the case of UO, you might find him at Buc's Den). What I call "pivotal" actors in my planning are the really believable ones, with dialog, goals, and they act as major plot devices.
A smaller still subset of Actors is the basic NPC. They tend shops, go eat when they're hungry, talk to you about recent events, send you on errands if they need supplies, close up shop when it's dark. I call these guys "drones."
So, my first project, based in a UO environment, will be getting believable drones working. An NPC might hop down to a tavern for lunch, after ensuring that his co-worker is still tending the shop. He might tell you about some strange adventurer that came in the other day. A bartender might complain about how much of a slob your friendly neighborhood blacksmith is.
I'll probably start a little bit smaller than that. Possibly just setting up a basic needs system for them and giving them a grid for pathfinding through the city to their destinations.
Still doing research, but that's about where I stand at the moment...
This whole thing is being targeted at UO (Ultima Online), just because it seems like it has a lot of resources open for AI computations, and it's what I'm used to working with in the form of a server emulator written in C#, and I feel OOP should lend itself to this rather well. Eventually it may be necessary to explore options for handing over the "thinking" part of this system to a secondary computer, but for the time being I'm not worrying about that.
So, yeah. First stop: "Drones."
0 comments:
Post a Comment