World Map, Items, Dialogue Screen, Script Actions
Posted: Fri Dec 05, 2014 12:57 pm
Hello! In this update, we'll review the following subjects: world map, selection circles, items, item picking and dropping, dialogue screen, romances, and special script actions.
World map
I've spent a few days drawing a nice world map. Here it is: KotC 2 world map
I have not yet implemented the world-map code but I don't expect it to be very complicated.
A world map is like a standard map except that no creatures or items are shown, there's no fog of war, and there's an icon indicating the party's position. You click on a point of interest and the party is teleported there.
Points of interests can be made available from the start, or they can be set up to be displayed only when the story moves forward (e.g. when the party finds a map or learns about a secret location).
When travelling from point A to point B, the game will record the time spent travelling so that we can keep track of the success and failure of timed quests. Failing a timed quest might trigger a script that would apply to the game world the consequences of missing the deadline.
Although the world map image is huge, please note that I have no plans to do a single huge game that would cover all those locations, a la Baldur's Gate 2 or Divinity Original Sin. My plan is to use the engine to create small modules providing enough experience for three or four character levels. The time required for the creation of a small module could be six months or so.
Selection circles
Whenever the user mouses over a creature, a door, a portcullis, items on the floor, a campfire or an activable area, the game displays the standard rotating selection circle. (Click on a picture to enlarge it)
Activable areas can be anything, like a treasure chest, a lever, a secret button, a wardrobe, a pool, etc. A picture can be associated with the object. For example I've created a lever object which has two positions, up and down. The starting position is down. When you click on the lever, the lever's script is executed. It does something (like raise a portcullis) and then it updates the image associated with the object to reflect the new position of the lever.
Games like Baldur's Gate 2 allowed the user to highlight objects that can be interacted with. I'm not fond of this solution. For example, if there was a hidden button, I would rather keep the button hidden from the player's view entirely. Then, using a script, I would have all the player characters roll for intelligence whenever they walk within two or three squares of the button. If a character succeeds on the check, a dialogue box appears to inform the player, and the button appears on the wall. Characters will get a bonus on their search roll if they are a Rogue, a Dwarf or an Elf.
Items
Our artist has finished the main series of graphic icons for items, weapons and armour. In addition, I did magic glows for all the weapons. See the following screenshots to have a good idea of what items and weapons will look like.
By the way, the 'armour' category will include robes. They will belong in the 'clothing' category rather than the light, medium or heavy armour proficiency category. A standard robe does not provide any armour class bonus but it can be enchanted like other armour items, if it is of masterwork quality.
Speaking of enchantment, I have not yet created the screens/dialogue boxes for crafting. But I've created the buttons that will open those screens, from the inventory screen (see the next section for screenshots of the inventory screen). You will not be able to craft 'anywhere anytime'. It will be a service that clerics, druids and sorcerers can provide, together with healing services. Forging an item will require an ingot while enchanting an item or recharging a wand will require a specific magic gem.
In addition to items, we've completed the main series of creature graphics, here are a few screenshots. I'm also adding a screenshot showing the image preview when loading.
Item picking and dropping
In order to pick items up, you just click on those items. That is, if they are on the floor. The party will automatically move towards the items and pick them up.
Alternatively, move to the square occupied by the items and then open your inventory (shortcut 'I'). The items on the floor will appear in the bottom-right corner of the inventory screen, in the box called 'floor items'. Clicking on an item in that box moves the item from the floor to the character (as in Baldur's Gate).
Clicking the headline of the box ('floor items') moves all of the items from the floor to the character. You can also drop items onto the floor. To do so, just click-and-drag an item from the inventory screen onto the 'Floor items' box.
Also, items can be picked up from a container on the map, like a treasure chest. When you open a container (this is done through a script), the party leader's inventory screen appears and the items found inside the container are displayed in the bottom-right corner, in the same box that is normally used for floor items.
This functionality is available because I have expanded the 'activable object' code to allow it to store a list of items. In the editor, it's easy to place items inside a container.
Dialogue screen
For the dialogue screen I did something very similar to KotC 1. A scroll texture at the top for the NPC's text and a scroll texture at the bottom for the possible dialogue options. It is possible to have any number of dialogue answers. It is also possible to allow the player to type in an answer (as mentioned before in the update about the script editor). That way, we can have standard riddles requiring to type the right answer.
As in adventure games, it is also possible to have situations requiring the selection of a particular item. One of the script actions allows just that. It opens the party's inventory and waits for the user to select an item. Once an item is selected, the rest of the script can check whether the right item was selected. For example, in order to climb up or down (a wall, a well, a passage), the game might require the use of a grappling hook.
Romances and the avatar
Romances between the main character and an NPC seem quite popular in CRPGs like Baldur's Gate 2, so I wanted the game to support that. For it to work, there has to be a main character. However, party-based games do not have a permanent main character.
So I've decided that one of the characters created by the player will be the player's avatar, the main character. It is selected in the party-creation screen and cannot be changed afterwards. This way, whenever NPCs say something personal, it is intended to be addressed to the avatar character. Romance dialogue scripts will have to check that the avatar character is not dead, though.
Review of some special script actions
Any action that can be launched from a script is a script action. Let's review some interesting ones.
- Trading
Trading in KotC 2 will be pretty similar to that of KotC 1. First you click on the dialogue option that starts trading, then the inventory screen opens. The items available for purchase appear on the right side of the screen, in the box that is normally used for party items. Mouse over an item to know its price, right click to get more information. You can also sell an item with a click-and-drag onto the trading box.
- Move to position x,y on map z
That's the standard action to teleport the party from one map to another. It can also be used to move NPCs. In the following screenshots, the party has moved to another map, a cave system.
- Remove party equipment and place it onto square x,y
That's a script action for scenarios where the party is captured and temporarily loses its equipment. I always wanted to do this in KotC but couldn't because of technical limitations. Now it will be possible. Removing all possessions is a good way to create a challenge.
- Perform an ability check or attack roll
That's a script action for testing the success or failure of an action undertaken by one of the party members. The modifiers applying on the check can be displayed in the dialogue screen. Checks are based on the result of a d20 roll, so if you reload, you can get a different result. Simple checks of an ability amount (without d20 roll) can also be made.
- Display bubble speech
I call bubble speech the text given by NPCs directly in the main game view, in games like Baldur's Gate 2, when you are not specifically talking to any NPC. It is now possible to have NPCs do that in KotC 2. That's controlled in the non-combat script of the NPC. Usually, these scripts are used to assign a patrol path to an NPC. By assigning patrol paths to NPCs, we can make the game world of an RPG look less static than it would if all NPCs were immobile.
- Party split
A party split is a situation where one or several party members are separated from the rest of the party for the time of a fight or two. There's a script action to do that. For example, imagine that the party must go down a deep well using a rope or grappling hook.
The script for the well may ask the player to decide who will climb down first. It would then split the party, then start combat between the single character who has gone down and the monsters at the bottom that were waiting for a prey. Once this fight is over, the rest of the party could also be having a fight with other wandering monsters. Then once these two encounters are over, the party would be re-united.
- Decipher message screen
I don't know if you've played the adventure game Broken Sword. But in that game there was a cool mini-game where you were supposed to decipher a coded message. There were two alphabets, the normal one and the coded one. Secret messages were written using the coded alphabet.
To decipher them, you had to find the real letter associated with each coded symbol. So it's a simple substitution cipher based on a randomised alphabet, but it's fun to decode. Essentially, you have to make educated guesses until you win. I say 'educated' because it is expected that some letters, like E and T, would be more frequent than others in any message written in the English language. So you would try replacing the most-frequent symbol with the letter E first. Depending on the message, certain words could also be expected, like 'attack', 'kill', 'hidden' or 'secret'.
I haven't yet added an interface for this kind of deciphering in the game, but I would like to do it later on.
Next tasks
You guessed it, I haven't done any work in the combat department yet. I'm excited to start work on the meat of the project, but for the moment, my desire to complete the other parts has not allowed me to. There are some things I'd like to do first, including the world map code, the quest journal, the crafting screens and the update of the character screen. Then I'll work on the first elements of combat: initiative roll, moving in combat, skipping turns, etc.
Let's conclude this update with the creature tokens for the Tarrasque and Treant:
Feel free to post feedback. Cheers!
World map
I've spent a few days drawing a nice world map. Here it is: KotC 2 world map
I have not yet implemented the world-map code but I don't expect it to be very complicated.
A world map is like a standard map except that no creatures or items are shown, there's no fog of war, and there's an icon indicating the party's position. You click on a point of interest and the party is teleported there.
Points of interests can be made available from the start, or they can be set up to be displayed only when the story moves forward (e.g. when the party finds a map or learns about a secret location).
When travelling from point A to point B, the game will record the time spent travelling so that we can keep track of the success and failure of timed quests. Failing a timed quest might trigger a script that would apply to the game world the consequences of missing the deadline.
Although the world map image is huge, please note that I have no plans to do a single huge game that would cover all those locations, a la Baldur's Gate 2 or Divinity Original Sin. My plan is to use the engine to create small modules providing enough experience for three or four character levels. The time required for the creation of a small module could be six months or so.
Selection circles
Whenever the user mouses over a creature, a door, a portcullis, items on the floor, a campfire or an activable area, the game displays the standard rotating selection circle. (Click on a picture to enlarge it)
Activable areas can be anything, like a treasure chest, a lever, a secret button, a wardrobe, a pool, etc. A picture can be associated with the object. For example I've created a lever object which has two positions, up and down. The starting position is down. When you click on the lever, the lever's script is executed. It does something (like raise a portcullis) and then it updates the image associated with the object to reflect the new position of the lever.
Games like Baldur's Gate 2 allowed the user to highlight objects that can be interacted with. I'm not fond of this solution. For example, if there was a hidden button, I would rather keep the button hidden from the player's view entirely. Then, using a script, I would have all the player characters roll for intelligence whenever they walk within two or three squares of the button. If a character succeeds on the check, a dialogue box appears to inform the player, and the button appears on the wall. Characters will get a bonus on their search roll if they are a Rogue, a Dwarf or an Elf.
Items
Our artist has finished the main series of graphic icons for items, weapons and armour. In addition, I did magic glows for all the weapons. See the following screenshots to have a good idea of what items and weapons will look like.
By the way, the 'armour' category will include robes. They will belong in the 'clothing' category rather than the light, medium or heavy armour proficiency category. A standard robe does not provide any armour class bonus but it can be enchanted like other armour items, if it is of masterwork quality.
Speaking of enchantment, I have not yet created the screens/dialogue boxes for crafting. But I've created the buttons that will open those screens, from the inventory screen (see the next section for screenshots of the inventory screen). You will not be able to craft 'anywhere anytime'. It will be a service that clerics, druids and sorcerers can provide, together with healing services. Forging an item will require an ingot while enchanting an item or recharging a wand will require a specific magic gem.
In addition to items, we've completed the main series of creature graphics, here are a few screenshots. I'm also adding a screenshot showing the image preview when loading.
Item picking and dropping
In order to pick items up, you just click on those items. That is, if they are on the floor. The party will automatically move towards the items and pick them up.
Alternatively, move to the square occupied by the items and then open your inventory (shortcut 'I'). The items on the floor will appear in the bottom-right corner of the inventory screen, in the box called 'floor items'. Clicking on an item in that box moves the item from the floor to the character (as in Baldur's Gate).
Clicking the headline of the box ('floor items') moves all of the items from the floor to the character. You can also drop items onto the floor. To do so, just click-and-drag an item from the inventory screen onto the 'Floor items' box.
Also, items can be picked up from a container on the map, like a treasure chest. When you open a container (this is done through a script), the party leader's inventory screen appears and the items found inside the container are displayed in the bottom-right corner, in the same box that is normally used for floor items.
This functionality is available because I have expanded the 'activable object' code to allow it to store a list of items. In the editor, it's easy to place items inside a container.
Dialogue screen
For the dialogue screen I did something very similar to KotC 1. A scroll texture at the top for the NPC's text and a scroll texture at the bottom for the possible dialogue options. It is possible to have any number of dialogue answers. It is also possible to allow the player to type in an answer (as mentioned before in the update about the script editor). That way, we can have standard riddles requiring to type the right answer.
As in adventure games, it is also possible to have situations requiring the selection of a particular item. One of the script actions allows just that. It opens the party's inventory and waits for the user to select an item. Once an item is selected, the rest of the script can check whether the right item was selected. For example, in order to climb up or down (a wall, a well, a passage), the game might require the use of a grappling hook.
Romances and the avatar
Romances between the main character and an NPC seem quite popular in CRPGs like Baldur's Gate 2, so I wanted the game to support that. For it to work, there has to be a main character. However, party-based games do not have a permanent main character.
So I've decided that one of the characters created by the player will be the player's avatar, the main character. It is selected in the party-creation screen and cannot be changed afterwards. This way, whenever NPCs say something personal, it is intended to be addressed to the avatar character. Romance dialogue scripts will have to check that the avatar character is not dead, though.
Review of some special script actions
Any action that can be launched from a script is a script action. Let's review some interesting ones.
- Trading
Trading in KotC 2 will be pretty similar to that of KotC 1. First you click on the dialogue option that starts trading, then the inventory screen opens. The items available for purchase appear on the right side of the screen, in the box that is normally used for party items. Mouse over an item to know its price, right click to get more information. You can also sell an item with a click-and-drag onto the trading box.
- Move to position x,y on map z
That's the standard action to teleport the party from one map to another. It can also be used to move NPCs. In the following screenshots, the party has moved to another map, a cave system.
- Remove party equipment and place it onto square x,y
That's a script action for scenarios where the party is captured and temporarily loses its equipment. I always wanted to do this in KotC but couldn't because of technical limitations. Now it will be possible. Removing all possessions is a good way to create a challenge.
- Perform an ability check or attack roll
That's a script action for testing the success or failure of an action undertaken by one of the party members. The modifiers applying on the check can be displayed in the dialogue screen. Checks are based on the result of a d20 roll, so if you reload, you can get a different result. Simple checks of an ability amount (without d20 roll) can also be made.
- Display bubble speech
I call bubble speech the text given by NPCs directly in the main game view, in games like Baldur's Gate 2, when you are not specifically talking to any NPC. It is now possible to have NPCs do that in KotC 2. That's controlled in the non-combat script of the NPC. Usually, these scripts are used to assign a patrol path to an NPC. By assigning patrol paths to NPCs, we can make the game world of an RPG look less static than it would if all NPCs were immobile.
- Party split
A party split is a situation where one or several party members are separated from the rest of the party for the time of a fight or two. There's a script action to do that. For example, imagine that the party must go down a deep well using a rope or grappling hook.
The script for the well may ask the player to decide who will climb down first. It would then split the party, then start combat between the single character who has gone down and the monsters at the bottom that were waiting for a prey. Once this fight is over, the rest of the party could also be having a fight with other wandering monsters. Then once these two encounters are over, the party would be re-united.
- Decipher message screen
I don't know if you've played the adventure game Broken Sword. But in that game there was a cool mini-game where you were supposed to decipher a coded message. There were two alphabets, the normal one and the coded one. Secret messages were written using the coded alphabet.
To decipher them, you had to find the real letter associated with each coded symbol. So it's a simple substitution cipher based on a randomised alphabet, but it's fun to decode. Essentially, you have to make educated guesses until you win. I say 'educated' because it is expected that some letters, like E and T, would be more frequent than others in any message written in the English language. So you would try replacing the most-frequent symbol with the letter E first. Depending on the message, certain words could also be expected, like 'attack', 'kill', 'hidden' or 'secret'.
I haven't yet added an interface for this kind of deciphering in the game, but I would like to do it later on.
Next tasks
You guessed it, I haven't done any work in the combat department yet. I'm excited to start work on the meat of the project, but for the moment, my desire to complete the other parts has not allowed me to. There are some things I'd like to do first, including the world map code, the quest journal, the crafting screens and the update of the character screen. Then I'll work on the first elements of combat: initiative roll, moving in combat, skipping turns, etc.
Let's conclude this update with the creature tokens for the Tarrasque and Treant:
Feel free to post feedback. Cheers!