Mission Editor
Mission Overview
A detailed explanation of missions can be found on the missions page.
Creating a Mission in the Game Designer Frontend
Mission Name
Create your mission by first giving your mission a name; a unique identifier for your mission. This can actually be changed later, but the system will likely break if you have two missions with the same name probably.

Mission Briefing
Start by creating your mission briefing. Ths mission briefing is the prompt that will be given to the player of the game. It should introduce the mission, the goal of the mission, and any other information that you think the user (as well as the genAI) should have as it pertains to the mission. Maybe this is relevant skills etc. This could include a mission giver potentially if you wanted. TBD.
Associated Knowledge Tags
Next, select each of the knowledge tags that you want associated with this mission. This should include each of the knowledge tags (level 1) that you want updated with the results of the mission at the end of the mission. This could include the NPCs involved in the mission, the location, the zone, potentially items if you wanted. In addition to these explicitly added tags, whichever companions are sent on the mission will also be include in the knowledge tags.
This system essentially allows for the world to change over time. Did a tavern burn down? Update the knowledge of that tavern to read "the tavern burned down because of such and such".
A problem with this sytem as is is essentially that assigning all resultant knowledge to level 1 doesn't make much sense. What if the mission was a secret mission? Then maybe you'd want that knowledge to be level 2, or 4 etc. The plan is likely to create a system to automatically assign knowledge of various happenings to various levels via genAI. Perhaps there are rumblings that a certain NPC murdered the king, but it's just a rumor. Add that rumor to that NPC's knowledge level 1. But then add the more detailed info to a higher level. I'm going to have to look into this problem more at some point.
Availability Logic
Availability logic is the system used for telling a mission when it should or should not be available. For a more detailed understanding of the greater availability logic system navigate to 'Availability Logic'.
If you want a mission to exist at the very beginning of the game (e.g. no requirements to become available), just leave the name-based mission availability logic field empty. However, lets say you only want the mission to unlock if a certain npc objective is completed. Then you could enter the following into the field: [OBJ 'TumTum' 'defend the tavern'].status == 'completed' This essentially says If the npc_objective for npc_name=TumTum and npc_objective_name 'defend the tavern' has a status of 'completed', then this mission will become available.
After entering the name-based availability logic, click 'convert to id-based logic' in order to get the ID-based equivalent. The ID-based equivalent maps to a specific ID in the database. We do this because names are subject to change, but the underlying IDs associated with them are not. Even if you change an npc_objective name or mission name, the name-based availability logic will be updated based off the ID.
Okay, how about if you want a mission to be available based upon the completion of some mission as well? You can then have the name-based logic be
([OBJ 'TumTum' 'defend the tavern'].status == 'completed') and ([MISS 'mission_name'].status == 'completed')
alternatively you could use [MISS 'mission_name'].outcome == 'outcome_name' if you want the mission to only be available based on the outcome of some previous mission.
Possible Outcomes
Although the mission narrative is AI generated, missions outcomes are constrained to a limited number of outcomes. This essentially makes it so that the game designer can write a story with multiple outcomes and the AI wont just go off the rails and do something ridiculous that makes the entire story of the game make no sense.
Okay, so what is involved in creating a new possible mission outcome? The core components of a mission outcome are a unique (to the mission) outcome name and an outcome summary. Name the mission outcome whatever you want, but shorter is likely better and a super weird name could potentially negatively affect the prompt chain. The mission outcome summary is important! The mission summary is what is utilized by the AI to write the mission outcome. I recommend utilizing some level of specificity here. Not only have I found AI to prefer specificity, but I tell the AI here to not go off the rails and to stick to what it knows (knowledge, memories, summary, etc), so giving it more information here is better (I think - not really hugely tested).
Lastly, if you want certain outcomes to only be available to certain a certain NPC, then click 'certain NPCs only' and add the companion you want this outcome to be available to.
Save updates
Click 'save updates to mission' otherwise your mission isn't updated...
Test Mission
If you want to test your mission, you can click an NPC and send them on the mission. You'll see the results (e.g. narrative) of the mission in the text box below after like 30ish seconds. Note: this mission outcome is for a clean save state. Once I implement save states, I plan to make it so that you can test a mission for a specific save state.
Last updated