[Need Advice!] Quest system implementation advice needed

The Problem

I am currently making a 2D top-down RPG game in which player can accept quests from NPC, I need my quest to have some kind of reference to the NPC who gave player the quest, so player can return to when quest is completed and perform some interaction whit the NPC, the reference should be easy to save and load when needed. I am currently want to save all my quests into csv file for easy editing. So I am looking for advice on what to choose as a reference.

My Thoughts

  • Using a reference to the NPC node
    In this way I can easily access to NPCs build-in functions to do something when quest is completed. But saving a node to file, it seems I can only use Resource to do the job, and it just don`t feel good to do it this way.

  • Using NPCs name which is a String as a reference
    In this way saving the quest data will be easier but harder to access to the NPC node, I will have to build another system to get access to the node itself which does
    not make it easier.

  • Using a quest list that is local to each NPC
    In this case saving and loading the quests could be done along with saving and loading the NPC itself when changing game levels, when player interact with a specific NPC it can access the quests that is specific to that NPC thus achieve reference in a ‘soft’ way.

Looking for any advice

I hope I express my thoughts clear enough, any advice will be helpful.

1 Like

You could implement it by adding a node to Autoload for handling the nodes you want.
And you could also call functions (let’s say for example, adding a quest to the player character’s journal or for mark certain quest completed) or changing values to variables anywhere you want because of this.
(eg.: get_node(/root/TheNode).add_quest("Quest name") or something)