Hi everyone !
My name is Lucas, I am a gameplay, network and UI programmer here at Wolcen Studio and you may know me as Caracole on the game’s Discord and Steam forums.
I have been working on Wolcen: Lords of Mayhem for over a year now and have been responsible for the development of the housing system, cloud mode and all the new UI that we’ve been rolling out for a year now (the new main menu, new character sheet, item comparison system, and so on…).
Internally, I am also known as “the guy who like to clean up his room” because I regularly do some cleanup, formatting, refactoring and optimization of the code in order to keep everything clean and maintainable as the project has some code that is a few years old, not necessarily up to date or still used.
On a daily basis, I am mainly working with Alexandre, our 2D artist, regarding UI integration and Hadrien when he requires UI for, for example, the passive skill tree, the active skill tree or his new quest manager.
Recently, I have been working on the Dungeon Challenge, a game mode in which you will build your very own dungeon, using the same system as the Housing, to mine precious resources. However, you will have to defend your dungeon and mines against other players trying to steal you and will have at your disposition creatures but also traps, which are today’s subject.
Traps will come in various flavor: blades, turrets, bombs… and you will not only find those in the dungeon challenge but also in the open world as we will be using them to bring diversity and challenge to the level design.
For this reason, I had to create a system that would make it easy for our environment artists and level designers to create new traps, place them in the open world and parameter them accordingly to their level design needs but also allow to spawn traps we previously setup specifically for the dungeon challenge. I also had to develop a system versatile enough so it would work no matter the trap: a blade dealing damages when you touch it, a turret firing projectile, a spring board that sends you in the air and knock you back when you step on it…
To achieve that, I used an animation-driven state machine. Each trap has 5 animations: deactivated, activating, activated, attacking and deactivating with events placed on the animation timeline to send events to the code. Associated to that is an attribute system used to parameter the general behavior of the trap (if it’s a rotating turret, a turret that aim at the player before firing, a trap that deals damage on collision…), it’s rate of fire, the skill it will cast when attacking and various other parameters.
Additionally, traps can be setup to trigger when the player is at a given distance of the trap, if the player enter a trigger area or if the player collide with the trap. Everything is stored in a XML for easy access and editing.
That’s all for now. See you soon for another devblog and thank you for your support 🙂