GAME CONCEPT AND DESIGN
COSC 320.101_SU09
SUMMER 2009
The Journal
The journal is one of the ways that players track their progress in a quest, and one of the ways you can help prod them along the proper path. In the interest of full-discloser, I've never actually played with the journal, but I've read a great deal about it in the last few days!
From the main editing window, select Tools > Journal Editor. A window opens that looks a lot like the conversation editor. However, whereas conversations were a one-conversation-at-a-time affair, the Journal is a module-wide beast. It's the entire journal with (I guess) every possible entry. So let's see what we've got.
Just like a conversation, click the Add button. You'll see Category000 appear. Each Category is a quest. So your "Find the Dog" quest might be Category000 and the "Save the Princess" is Category001.
Down below, you see a number of fields that you can enter information into:
Name: Is the name of the quest as it appears in his journal.
Tag: The tag of the quest. This is used when you want to update the status of the journal through scripting. Be aware that in all other windows, tags are forced into lower-case, but here they are not. Force yourself to be consistent and type the quest tag in lowercase with no spaces!
Priority: Players have the option to organize their journal in either the order the quests were assigned or their importance to the game. If order to allow them to organize by importance, you have to set the quest's priority here.
XP: This is how many experience points the player gets for completing the quest. However, it is not automatically awarded to them. Instead, this value is just "stored" in the journal and when it comes time to award it, you use the command GetJournalQuestExperience(<quest tag>) to find out how much experience should be awarded, then use GiveXPToCreature( ) to give that much experience to the player.
Comments: A big area for your comments.
Once you've set up the quest Category, it's now time to set up all the entries. Remember a quest can have multiple steps, and this is how you help your player keep track.
Add a line beneath the Category and you'll see [0001] - Entry001
Down below, you'll see:
ID: The step number of the quest. When you initialize the quest, for instance, you'd set that quest's tag's ID to 1.
Text: This is what the player reads when they examine the quest when the quest is at this stage.
Finish Category: If this ID entry is the last step in the quest, check this box and it will cause the quest to be moved to the Completed Quests section of the Journal. It's worth noting here that--like a conversation tree--you could have multiple possible endings (just use scripting to "skip over" ID numbers). With multiple endings, the final ending for each branch could have a Finish Category check mark. This is handy when you want the quest to end but have the text to display the varying results.
In other words, suppose they're supposed to save the prince (equal opportunity) and bring back both him and the harp. When the quest is over, they might have:
- Brought back the prince, but no harp. So you jump to ID 7, mark it as finished and say, "You saved the prince but didn't recover the harp."
- Brought back the harp, but no prince. So you jump to ID 8, mark it as finished, and say, "The harp has been recovered, but the prince is dead."
- Brought back both. So you jump to ID 9, mark it as finished, and say, "Having rescued both the prince and the harp, you're a hero to the kingdom."
Updating the Journal through Conversations
Updating the journal through the conversation editor is must like playing an animation or sound effect.
- Click the conversation node where you want the update to take place.
- Click the Other Actions tab.
- Under Journal, click the drop down box and select the Category / Quest Name you wish to update.
- Then in the dropdown box below that, choose the step ID number that you want to jump to.
- Done!
Updating the Journal through Scripting
Well, you decide when the journal should be updated (when the monster is killed? when an item is picked up?) and find the appropriate event and script. Then use the command AddJournalQuestEntry( ). The command takes a few more parameters...and we'll talk about that later...but there it is!
|