Development Log #3 - Skills and the Skill Tree
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.
What I Learned
- Scaling Your Ambitions: Starting with an ambitious idea, I learned to scope down and focus on creating something achievable yet meaningful. It’s better to have a polished, functional system than an unfinished grand design.
- The Importance of Pre-Made Assets: Leveraging tools like the Unity Asset Store and Mixamo allowed me to focus on my strengths—programming and systems design—while still delivering a polished experience.
- Debugging Multiplayer Systems: The skill tree was my first real encounter with complex multiplayer state management, teaching me the importance of local vs. networked logic.
- UI Design Principles: Building a skill tree from scratch gave me hands-on experience with Unity's UI systems effectively.
What’s Next?
While the skill tree is functional and satisfying, there’s still room for improvement:
- Adding more unique effects for skills to make them stand out visually.
- Polishing the UI aesthetics to match the game’s overall style.
- Introducing external progression, allowing players to retain unlocked skills between sessions.
- Better integration with the dynamic hotbar, so players can seamlessly assign and use active skills.
- Adding sound effects for each skill.
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!
Get PolyShift
PolyShift
A cooperative perspective-shifting game made in Unity.
More posts
- Development Log #2 - Syncing Network Objects10 days ago
- Development Log #1 - Multiplayer Networking17 days ago
Leave a comment
Log in with itch.io to leave a comment.