
Conan Exiles was an interesting project to join. The game had been in live service for several years at the point I was brought on. It was a delicate balancing act trying to add new content and features to the game while fixing old bugs and refactoring systems that were very often not built to be expanded upon. This meant a lot of refactoring, and with an aggressive release schedule often having to do the best work possible in the time that was given.
Fortunately I was able to work closely with designers and artists onsite, which meant that we were able to work quickly to get features out the door.
The Exiled Lands
Living Settlements
The Living Settlements update was a big one, and one of my favorite ones to work on. In Conan Exiles you have thralls of different professions many of which are crafters. These crafters provide stat bonuses and unlock different crafting recipes depending on their type and tier. Prior to the Living Settlements update, these crafters were simply items in the game once you obtained them (read: “forcibly conscripted”). The update brought these thralls to life by turning them into fully fledged NPCs that would stroll around, eat, drink, sleep, socialize, and work within a player’s base.
As you can imagine this was a lot of work and involved touching some core systems to the game. I handled updating the core crafting system to relocate where the data was being pulled from, along with updating the structure of the data to make it more extensible for future updates. There were a lot of edge cases when it came to the behavior of crafting stations now: NPCs can be killed, lost, replaced, travel too far away, the list goes on. Making sure that the stations operated consistently was a challenge and quite rewarding
A large part of this update was a major overhaul of the crafting stations UI. By allowing players to specify per-crafting station which thrall they wanted to use, it became necessary to better display the bonuses each crafter thrall would provide. This meant that we needed new UI sections both for assigning thralls as well as displaying their perks. I worked very closely with our UI artist to come up with a clean solution that players responded very positively to. There’s definitely something to be said for having very visible reflections of your work in the game.
Age of Heroes
The Age of Heroes required a lot of pieces to come together. This update was another one focusing on our NPCs, just in a different way. We wanted to improve the behavior of followers, make it easier for players to control them, and expand on the types of things they could do.
The first step to this was to improve the commands that players could issue. One of the main problems players had was with their thralls fighting everything that they ran into (and subsequently dying). To address this we did two things: gave players control over the aggressiveness of their thralls, and provided them with new commands to use in combat. Thralls could now be set up ahead of time to be passive, ignoring attackers and simply following the player or even running from danger. The flee command allowed players to tell their followers to flee if they began to look too injured, or to return to the player if they strayed too far away. All of these required code support to free up behaviors to be more flexibly defined in blueprint and behavior trees by designers. As a part of this I also updated our behavior trees to enable dynamically swapping out subtrees at runtime.
The next big piece of this update was the Quest Subsystem. Previously we didnt have quests as a concept. Player’s could be guided through the game using our Journey system, but this wasn’t flexible enough to control things like spawning quest NPCs for forcing cooldowns between stages in a quest. Thus the Quest Subsystem was built. The main considerations were ensuring it was persistent, per-player, and allowed for players to repeat quests as much as they liked. The system was fleshed out, and allowed designers to define quests step by step. It was built to be flexible enough to allow designers to hook up any kind of content implementation to it with simple calls. It was used to build the quests for the Companion NPCs: the main feature of this update.
Other Interesting Features
NPC Combat Behavior Revamp
In order to make NPCs more interesting in combat I got to rework the way we define their attacks and combos. I updated our structures for combos, allowing our designers to do more complicated and varied fights. It was used to great effect to create the boss for the Sacred Hunt event, which was one of the most popular boss fights we added to the game.
Smart Objects
With the Living Settlements update, we needed to improve our in-house implementation of Smart Objects to allow for more varied uses. I expanded the logic to allow for things like specifying exit locations for different slots, and allowing slots on the same object to enable/disable each other to prevent multiple slots in the same location being used at the same time.
Improved NPC Thrallification
Our spawning library could spawn in templates of NPCs from items, such as when you turned and enemy NPC into a thrall. But in the process this meant that you would lose their armor and weapons. This was fine for normal thralls, but when we added Companions and hirable mercenaries this became an issue. I reworked the process to make it simpler, and to give designers control over exactly what kind of equipment NPCs got to keep when made into thralls.
Resolved (Some) Issues with Sheathing Weapons
We had a recurring issue during Purge attacks on player bases where NPCs would leave their weapons behind floating in midair. This came from some long standing issues with the way we were handling references when moving the weapon items between inventories. I cleaned up how we were passing those references around and was able to resolve the issue (though you could still end up with floating items in other ways).