CampaignManager

v0.13 has a new class called CampaignManager that I’m using to store the progress of the current story. Essentially it is a collection of strings. Various parts of the game engine can read/write these strings to create some persistence and progress in the game world.

Related To Do:

  • Move the processDialog and chooseDialogNode into NPC
  • Give each NPC a pointer to the current Map (which also contains the CampaignManager). This structure choice will allow future NPCs to move around the map.
  • Create handling for Quest Items. Perhaps this should be a new base item type.
  • Prevent quest items from being dropped or sold
  • Add an on_pickup command to quest items that sets a campaign state
  • Allow CampaignManager to check for or remove items from the player inventory (pointer to the carried MenuItemStorage)

v0.13 Quests

With this simple quest implementation in place, I need to create a few archetype quests for v0.13. My plan is to create a simple quest chain that ends in slaying the skeletal warrior Sir Evan Maddox.

  • Report for duty: talk to this person, they have work for you.
  • Exploration quest: I need intel from an area but it’s too dangerous for me to go
  • Fetch quest: get this item for me
  • Key quest: take this item, now you can get into a new area
  • Kill quest: kill this creature

Other common types not yet represented:

  • Escort quest: universally hated so I probably won’t even implement this.
  • Gather quest: I don’t have support for e.g. gather 10 boar lungs. That kind of tedium is more for time sink MMOs anyway. Simpler quests (e.g. gather 1 of each of these ingredients) can instead be done in a quest chain or in parallel quests.
  • Genocide quest: Kill X of this creature. Again, more of an MMO time sink type quest, I might not implement this.

By covering these basic quest archetypes, I’ll have the first Flare quest chain and have examples of how to create each basic type.

2011/04/17

Leave a Reply

Your email address will not be published. Required fields are marked *