It’s been a while since my last update in January. I have been quite busy at work in the last few months, so I didn’t have as much time as I wanted to work on my game. Hopefully the next few months will be more productive! Still, I have a lot to share today.
Pre-Alpha Test Releases
I have finally released the first build of the game to private testers in June, after a year and a half of development! I had to spend a lot of time finishing some of the features that were required for a first release (user interface for creating a new character, creating a new game, in-game text tutorial, etc.).
I got great feedback from those testers; a lot of these suggestions made their way to my bug tracker. This also convinced me to concentrate my efforts on mouse controls and abilities for the next release.
I have worked on adding proper mouse controls to the game in the last few weeks. Here is how the mouse controls for movement work:
- Click the left mouse button to move the character once in the direction of the mouse cursor.
- Hold the left mouse button to keep moving the character in the direction of the mouse cursor. The repeat delay for moving the character is decreased as the mouse cursor gets away from the character. If you have played Ultima VII, this is basically how this works.
- Hold the right mouse button to order the character to follow a path in direction of the mouse cursor.
- Click the character once to pass a turn.
The game uses pathfinding to move the character to the mouse cursor, rather than moving it in a straight line to the mouse cursor. This means that the character won’t get stuck in walls or other blocking cell elements.
Contextual mouse cursors are used for actions described above, and also when using stairs, opening containers, opening doors, getting items, attacking NPCs, and more.
Class Template System
Some of my favorite RPG games allow the player to choose to unlock any ability or ability tree. This allows you to be creative, customize your character exactly the way you want and have a unique experience every play through. That is exactly the way Divided Kingdoms work. However, I improved this by adding a class template system for helping players pick the right stats and abilities depending on what kind of character they want to play.
Right now, the classes are Warrior, Knight, Paladin, Ranger, Monk, Thief, Bard, Druid, Necromancer, Enchanter, Priest, Warlock and Wizard. Each of these classes have main stats and secondary stats and default ability trees.
All NPCs are assigned a class template; that’s how the game scales the NPCs to a certain level when spawning them. This allows me to create basic NPC templates that can be completed by class templates. Thus any kind of NPC can become a monk, a wizard, and so on. This also affects the AI behaviour sub-trees; some classes have a defensive or support role rather than offensive.
This will be the topic of a future development blog post, where I will share a lot more details on how this works.
Stats: Intelligence becomes Wizardry
I have renamed the Intelligence stat to Wizardry; I thought it was really weird that you spend stats points when leveling up to make your character more intelligent. Intelligence is something that you are born with; you use it to learn skills and more about the world.
I will implement an intelligence system later on, which will be used to determine how fast you can learn skills and also have an impact on what dialogue options are available during conversations with NPCs.
NPC Scaling System
I have added a new scaling system to dynamically scale any NPC based on its template (often defined at level 1). This system defines difficulty templates (weak, normal, elite, legendary) with different multipliers for number of attribute points, HP/MP/SP gain per level, and so on. It is also based on the class template system described above.
This makes it easy to scale any given NPC, make them stronger than normal and give them special abilities for boss fights. This is also a great way to balance the difficulty of all NPCs at once to make sure the player has the right difficulty curves when playing. This has tremendously improved the fun factor of the game.
NPC Schedule / Job System
The NPCs now have a schedule system driven by a AI behaviour tree that defines what they do during the day. The goal is to have NPCs that behave similarly to Ultima games, with a profession system that defines the tasks they can do depending on the time of the day.
Right now, the NPCs are able to go to their workplace during the day, wander around their shop, and then go home at night for a good night’s sleep. The guards have similar behaviour, except they wander around town during the day, and have different shifts to protect the town during the night. Every NPC has a house/bed, a workplace and a job assigned. The dialogues are unique to certain tasks, time of day and location.
Now that the system is in place, it will be easy to add more tasks, such as visiting the tavern during the evening, go to the Warrior’s guild to practice fighting, attending a mass with other citizen, and much more. I also plan to add unique tasks for certain key NPCs that can be tied to quests. A simple example would be an NPC that visits a dead relative in the cemetery every morning to bring flowers to their grave.
I have fixed a ton of bugs related to ability use, especially on the targeting system. I found this to be much more of a challenge than I expected, even though I am using a ECS (Entity Component System) to define how the abilities work. Now that most of the bugs have been fixed, I started prototyping a lot of abilities to see what works best in the context of the game. Here are some of the most unique ability trees I’m prototyping on:
- Bard/Songs: Allows the bard to sing songs that have offensive, defensive or support effects. This might or might not require wearing a musical instrument, I’m not sure yet.
- Bard/Taming: Allows the bard to tame wild animals to join the party for a certain time. Wouldn’t you want to have a dragon at your side? The bard can also entice animals to attack each other.
- Monk/Hand-to-hand: Specializes the monk in hand-to-hand melee combat; this requires wearing light armor.
- Druid/Shapeshifting: Allows the druid to shapeshift into animals; each animal has unique abilities and have a different role (i.e. offensive, defensive, support).
- Necromancer/Summoning: Allows the necromancer to summon undead to join the party. However, you do not have direct control on the undead, so they will attack citizen if you spawn them in a city.
There are also the more standard ability trees such as Warrior, Berserker, Spells (with multiple circles such as fire, ice, lightning, etc.), Paladin, Thief, etc.
This will be the subject of a future development blog post, in which I will share a lot more information on each ability tree.
I have been evaluating different video capture software to record footage of the game. So far Bandicam seems to work the best; I have uploaded a test recording to YouTube in 1080p/60fps and it looks fantastic. Somewhere in the next few weeks, I should be able to release a video of the game.
There are a lot of other things I want to share that I have been working on, but this will have to wait for another post.
I will try to update the development blog at least once a month from now. I will post updates on progress of the game, and some in-depth explanations on how some of the game’s systems work.
Any comments are welcome! See you soon!