I'll toss out some ideas on how I might approach the problem and hope that helps.
- I would probably create quests as a hidden inventory object that is effectively a container of prerequisites, requirements, rewards, etc. This would provide an easy solution for saving your quest state, as they would effectively be saved using the same mechanisms you save your inventory state already.
- I would consider treating quests as an inventory item of sorts, that you can simply equip an NPC with in order to make them a quest giver. Talking to NPCs would check all the quests in their inventory to see if your character currently meets the 'prerequisites' in order to be offered the quest(good enough faction, high enough level, etc).
- In accepting a quest, I would transfer the quest object to the players inventory and remove it from the NPCs.
- From the players inventory it can be referenced again to access whatever requirements it has to complete, maybe even what the reward is too.
- Maybe quest items in the players inventory receive notifications when the player kills enemies, picks up items, etc, so that if the enemy killed, item picked up, person talked to, etc is a requirement of the quest, it can increment its internal counter to 'check off' an element of the requirements.
- When completing a quest I would probably maintain it in the inventory as a shell object as the indicator of quest completeness, and it would also be available for other elements of the game to query and provide quests that are 'smart' to quests you've already done, or dialog choices to reflect the previous deeds of the character, etc.
hmm I've never thought of doing it like that. I do have an inventory currently in game, so correct me if im wrong. I'd make a on gui with quest text ect and maybe have something like a counter on my inventory or items picked up (like apples as per the example) and when apples = 10 quest complete or something. Also how would that apply to kill quests and rewards?
Because i was thinking if it's a large game, with allot of quests, would that slow the game down?
On a side note, I've been using 3d buzz for their mmorpg dev class, they created a database, I assume you can create a quest system by making custom set, get, lines of code?
On an additional note aswell, I've been thinking about your post throughout today and I figured out a method of making the quest thing. Correct me if im wrong. This is the theory:
Set-up a quest active thing by the npc. When you press accept quest, the quest which was deactivated in your inventory is active.
This tracks your quest. When you've completed it, this will activate on the npc something which allows you to get the reward and finish.
When you accept your reward, it disabled the npc's quest that you just did and the stuff on your inventory.