Let's discuss the less interesting system first. Achievements. We get it in every game, and there seems to be an inherent dislike for achievements. I never really understood why. It helps you understand what you would like to do. Perhaps you are a completionist and want to get everything. Perhaps there is a certain achievement you want to go after. Why is it such a problem?
Nevertheless, our achievement system is as simple as you can get it.
Here we have, of course, a name and description.
But we have a category. Aw! Amazing. A category. You know – it is designed to organise things. Good.
We have sub category as well. Amazing. So simple.
Did I say it was simple?
We also have Game Events. Wait, what? What are game events? So, this is a category of when things happen in the game.
Okay, that's not too complicated, but wait. Script Type? What's Script Type?
This was supposed to have been simple!
Well, never mind. But I guess we need to understand what's going on here.
So, the achievement system is not as simple as we would have liked, but we still need to understand it, right? There is a huge list of game events tied to achievements that we need to understand. Let's take a look at this list and see what each one does.
- Artefact Acquired - This event is created when the player fully acquires an artefact, that is all the fragments associated with that artefact.
- Artefact Unlocked - This event is created when the player has unlocked access to an artefact and can start finding it's fragments.
- Artefact Activated - This event is created when the player uses an artefact as evidence in conversation.
- Artefact Fragment Discovered - This event is created when the player discovers a single artefact fragment.
- Activity Part Completed - This event is created when part of an activity is complete.
- Activity Completed - This event is created when all the parts of an activity is completed.
- Character Attitude Changed - This event is created when a character's general attitude changes (not it's raw value).
- Character Attitude Towards Changed - This event is created when a character's attitude towards another character changes (not it's raw value).
- Character Trait Progressed - This event is created when a character's trait has progressed incrementally. If already over their maximum potential, this event is not created.
- Group Frequency Changed - This event is created when the frequency of a character group changes towards the player.
- Special Feature Progress - This event is created when progress is made within a scenario of a special feature. This event must be triggered manually.
- Special Feature Complete - This event is created when a special feature scenario is completed (i.e. it's end script is called).
- Item Acquired - This event is created when the player acquires an item from discovery (not purchased from a vendor).
- Item Used - This event is created when a specific item is used, consumable or otherwise.
- Item Expended - This event is created when an item that is consumed reaches zero in the player's inventory.
- Journal Progress - This event is created when a new page in any given journal becomes available.
- Journal Inactive - This event is created when a journal can no longer be progressed due to availability conditions.
- Journal Complete - This event is created when a journal entry has revealed all its pages to the player.
- Section Discovered - This event is created when a new section is discovered.
- Section Entered - This event is created when a section has been entered into.
- Section Leave - This event is created when the player is about to leave the current section.
- Place Unlocked - This event is created when a place of interest is unlocked and can be accessed.
- Conversation Changing - This event is created when the conversation is about to change. Choices also affect this.
- Conversation Changed - This event is created when the current conversation has changed and opened a new file (new scene). Choices may not affect this.
- Conversation Advanced - This event is created any time the player advances dialogue whether by mouse click or button presses.
- Chapter Changed - This event is created when the chapter has changed.
- Point Of View Changed - This event is created when the current character point of view changes. New conversations also trigger this event, even if the point of view has not actually changed.
- Time Advanced - This event is created when in-game time has elapsed, defined by automatic incrementation or scripted.
- Real Time Advanced - This event is created when time has elapsed, or every frame. This event should be used sparingly.
Once we have chosen an event, we can specify how we wish to check to see if the player has earned this achievement. We have three different types of scripts: Standard, Return Value and Function.
Standard simply calls the script as is. Because this is the case, it also expects the manual call to unlock this achievement.
Return Value considers the script as a condition returning either
false. Nothing else should be added.
Function is like standard, except the script is wrapped around a function on its own and defined as a custom script. The function would need to return a Boolean value to determine if this achievement is earned or not.
This script is called every time the selected game event passes, allowing for immediate checking of achievements.
The Special Feature
Now to discuss something more interesting. Above is the image for our special feature system. This is designed for maximum flexibility, so the amount of actual parameters is minimal. We don't know how you are likely to add a special feature to your interactive story, if you wish to, so we offer start and end scripts so you can define how your special feature begins and ends.
Your Special Feature will have a name and some additional details:
- Difficulty - This is pretty obvious. You can choose to enable a difficulty indicator or not and the minimum and maximum values for it.
- Repeatable - Defines whether or not scenarios can be repeated.
- Overwrite Lower Scores - If enabled, any score indicator you implement will be overwritten if the player achieves a better score than previously.
- Allow Frequency Changes - If you are offering a way for player's to catch up in frequency, then scenarios will allow for the player's frequency to be changed whether for good or bad.
The rest is self-explanatory.
Now that all the data forms are complete, we can move onto working on the conversation system. There are one or two things that need to be done beforehand in one or two places, but apart from that we can move on perfectly fine.
In the next article, I will begin the run down of the WYSIWYG interface for code construction, and I am also considering an advanced section of this as well.