In order to have a decent questing system, I will definitely need a way to convey which NPCs, items, or places will trigger quests, what the status of a quest is, and how the player will know where to get and turn in quests.
Adding The Quest Status Manager
I need a way of updating the quest status icons on each map. I can do this in a variety of ways. The most common is to make a single quest manager or several quests managers (one for each quest).
I will do this using a single event running in parallel on each map. I call this event the Quest Status Manage, or QSM.
I put the QSM in the upper left corner of the Event Map as the first event on the map, so it's easy to find.
The QSM has the following requirements:
- A single point of contact for quest status management on each map.
- All quest icons on the map should be updated in real-time as the player makes progress from one stage to the next in the quest.
- Easy modification and extensibility for adding new quests to maps.
- Make sure the player meets the requirements to qualify for the quest.
Adding quest status monitoring for a new quest to the QSM is as easy as adding the new quest at the end of the list of quests.
For ease of management, though, I will be listing quests in the QSM alphabetically so I don't make duplicate entries by mistake.
Each quest will need a variable to hold the quest status. I will give these variables the prefix of "Q-" followed by the name of the quest to make it easy to find them in variable lists.
I'll need to keep track of the following quest states::
0: The quest is unavailable - the player does not qualify.
1: The quest is available but has not been accepted.
2: The quest has been accepted but not completed.
3: The quest has been completed, but not cashed in.
4: The quest has been completed and cashed in.
The job of the QSM is to change the chat balloon icon over the quest giver, depending on what stage the quest is in.
Each quest state has a corresponding icon:
0: Hash Mark "#" - The player doesn't qualify for the quest.
1: Question Mark "?" - A quest you qualify for is available.
2: Ellipsis "..." - A quest is in progress. The quest has been accepted but not completed.
3: Exclamation Point "!" - A quest has been completed and a reward is waiting.
4: No icon - The quest has been completed and the reward collected.
The default condition is 0; the player does not qualify.
Players are tested to see if they qualify on a quest by quest basis.
If a quest has no requirements, then the quest is initialized to State 1 by the QSM.
My Quest Status Manager In Action
Let's have a look at my QSM in action.
We begin our story at Level 1.
There are two NPCs onscreen; one has a quest with Level 2 as the minimum requirement, and the other has a quest with no requirements.
The NPC that has a quest we don't yet qualify for is displaying the "Hash" icon (I have a quest, but you don't qualify for it yet).
The NPC that is the quest with no requirements is already displaying the "Question" icon (I have a quest you can take).
Not qualified for the quest. |
In the next example, I set my player to Level 2 and restart the map.
Now, I see both NPCs have a quest for me, so I talk to the first one.
He gives me a quest to seek out the Lost Well.
Quest Available: Player is qualified for the quest. |
I have accepted the quest and now my mission is to find the Lost Well.
The QSM changes the chat bubble to the ellipsis "..." icon (You accepted the quest but have not yet completed it).
I find the Lost Well (duh - it's right THERE, Jonas!)
The QSM changes the chat icon to the Exclamation "!" icon (You completed the quest but need to turn it in).
Quest accepted and completed. |
I return to the Quest Giver to turn in the quest and receive my reward.
The QSM changes the chat bubble to no icon (The quest has been completed and turned in for reward).
Quest complete and turned in. |
Will this work in the long run? I don't know.
I made a few tests and it seems that multiple QSMs (one for each Quest on the map) have better performance, but I think I will trade in that sliver of better performance in favor of a single point of contact for managing all the quests. I think this method will help reduce bugs caused by duplicate entries.
Join My Game Dev Journey!
It's nice to have company on a long trip.
If you want to follow my production progress, check my blog at MakeYourOwnRPG.com.
You can also join the CyborgPrime Discord server, where I post my progress and interact with the community.
Click here for more articles in this series about my indie game dev journey.
Your Turn. What Do You Do?
How do you handle updating quest status icons in your games?
Share with us in the Comments section below. I'd love to hear alternate approaches to this method.
If you found this article helpful, please give it a good rating, thanks!
E-mail Notification Opt-in
Do you want to follow my RPG Maker game dev journey?
Sign up on my private mailing list.
YES! Please notify me of new RPG Maker game dev posts!
You can also join me and my friends at the CyborgPrime Discord server.