Posted December 13, 2024 by Chawon
#development #dev #log #devlog #game design #design #documentation
Welcome to the Third PolyShift Dev Log: Player Skills and the Skill Tree
As the title suggests, this dev log dives deep into the Player Skills and the Skill Tree in PolyShift. I’ll walk you through how I implemented them, the design challenges I faced, and the lessons I learned along the way. When I first began brainstorming, one idea stood out: I wanted to create a skill tree inspired by the iconic system in Path of Exile—a sprawling, intricate web of progression that offered players both freedom and reward. However, I quickly realized that the scope of such a system was massive, far beyond what I could realistically implement as a beginner developer working solo. To keep things manageable, I decided to scale down the scope while retaining the core idea: a skill tree that felt meaningful and engaging without being overwhelming.
The result was a simplified but satisfying skill tree system, divided into three primary categories; Health Skills, Weapon Skills, Melee Skills. Each category has its own unique twist and play style. For example, it's completely possible to play a "Tower-Defense" play-style through the Weapon category or simply play as a tank!
One of the biggest challenges I faced was the visual polish of skills. I knew that creating my own effects would require more time and expertise than I currently had, so I relied on the Unity Asset Store for high-quality, pre-made assets. This allowed me to focus on programming while still delivering visually appealing results.
As for animations, I leaned heavily on Mixamo's free animation library. While they’re not the most polished or unique, they were easy to integrate and provided a solid foundation for my skills. I spent a lot of time tweaking and fine-tuning these animations to make them work seamlessly with the combat system. Through this process, I learned a lot about animation blending, timing, and synchronization with gameplay mechanics.
Another major issue arose with ScriptableObjects, which I used to represent individual skills. Their persistent nature caused unintended behaviors when multiple players interacted with the skill tree in a multiplayer setting. Debugging this problem forced me to rethink how I managed state in multiplayer contexts, a valuable lesson for future projects.
Since PolyShift is a multiplayer game, I had to ensure that each player's skill tree was local-only, with no synchronization across clients. This required careful planning and testing to prevent bugs, such as all players being stuck on the skill tree UI or unlocked nodes affecting other players. Ultimately, I implemented a system where each player’s skill tree was instantiated locally, ensuring independent functionality.
The layout of the skill tree was just as important as the functionality. I wanted the nodes to feel logically connected while maintaining visual clarity. To achieve this; Skill nodes represent major abilities and upgrades while surrounding each skill node are smaller travel nodes, which enhance the main skill or provide minor bonuses. These design choices not only improved the aesthetic appeal of the skill tree but also helped players navigate it intuitively.
While the skill tree is functional and satisfying, there’s still room for improvement:
This journey has been both challenging and rewarding. The skill tree has transformed from an ambitious idea into a core system that ties together player progression and gameplay mechanics in PolyShift. I’m excited to continue improving it and seeing how players interact with it!