Skill Trees ~ SkillTree Wiki Summary - uchicago-cs/chiventure GitHub Wiki
This document is a condensed summary of the other skill tree documents and serves as a good starting point for anyone looking for information regarding skill trees and their implementation. For more information about a given section, follow the link at the bottom.
Components Of Exemplary Skill Tree:
A Skill tree element within an RPG is a method in which we allow players to upgrade their characters. The ways of specific implementation are more flexible, and designers can choose an approach that is more limited towards certain classes or one that has a variety of options for each character.
- Structurally composed of nodes that are sequentially unlocked as a player progresses
- Each node provide a specific attribute that the player can upgrade, whether it be ability, stats, or an additional combat move.
- Should clearly communicate the skills or attributes that the player receives, so the player can better evaluate the potential options.
Skill tree nodes are divided into two types: Active and passive. Active skills are ones that are able to be channeled by the player for a skill cast, while passive skills are ones that has an effect without needing to be activated.
The organization of Diablo skill trees are divided into rows, with each certifying a certain level of difficulty, each row being available to be leveled after the previous. Arrows are drawn that represent that order in which skills are required before levelling the latter.
Different tabs of skill trees that the player can choose from, each with their own unique path. Such as "Druid Skills", "elemental" ,"shape-shifting", and "summoning".
Skill tree attributes also apply to certain functionalities, such as using weapons and types of armor. Skills provide access to stronger technology.
Pre-selected races of character by a player determines the skill trees available that the player can choose from. For example, a warlock can choose from the Affliction, Demonology, and Destruction skill trees.
Has advanced mechanisms in the game to how to acquire skill points, such as quest rewards, vendor recipes, or random drop from killing monsters.
How will we organize the skill trees for each character? Will they be pre-determined set options, or does each player have access to each tree? How the progression of skills should be within each skill tree, and making sure to limit skills based off of progression made.
Importantly, the interaction between skill trees and other modules. Specifically, if we allow skill trees to alter attributes and abilities (like better items), that will cause changes in other variables of the game.
Skill tree modules should successfully support leveling up new skills and allowing players to use such skills.
For more information click here
Potential Skill Tree Integration existing WDL
Current WDL supports the Game Object, rooms, and items.
Rooms have a similar tree structure as skill trees, where a list6 of rooms may be entered from each given room. Skill trees may be incorporated with Room features so that certain rooms may only be accessed after a given skill is unlocked.
Items in the game can potentially be modified to provide certain attributes/actions when a given skill is unlocked/leveled.
However, our current WDL system does not support the integration of skill trees with combat, and with location-based skill progression, as the attributes have not been implemented.
For more information click here
Research on game balancing in regards to skill trees
Potential attributes of Game Balancing that could apply to our skill trees:
-
World border that can not be crossed until the user unlocks a certain skill. This type of skill should be temporary or permanent, and should be soft-locked and unlearnable if it is temporary.
-
Skill statistics to grow incrementally as it becomes level up. (Skill must be able to be levelled up more than once, each time having an incremental effect). Example can be observed through pokemon, the levelling up skills along with the incremental stats increase with the level of each pokemon.
-
Multiple options in choosing which skills to increment, but having the same linearity. Game should be the same difficulty level regardless which skill player chooses to increment. Examples can be seen through Skyrim, where one can choose to improve magic-based skills or archery skills. Beta testing to ensure that different paths all have the same power. Open world should be available for players regardless of skill path that they decide to pursue.
-
Limitation of skill, preventing certain skills from being unlocked if another is unlocked. Example can be a final skill where the user only has the option to unlock one of three skills. Locked skills should not limit progress in the game.
For more information click here
Research on Skill Tree support in modern day game engines
Unreal Engine: Unreal Engine is a commonly-used modern day engine, which has open-source code on github. However, the size and scope of UE is way beyond the magnitude of Chiventure. Much of the documentation is aimed at game developers, who are much more interested in interfacing with the engine, than in interacting with the low-level implementations that Chiventure needs.UE itself does not have any inherent support for skill trees. When a prospective game developer wants to add a skill tree to their game, they either have to buy one of these plugins, or make use of much lower level assets provided by UE.
Godot Engine: A smaller, but also open-sourced, engine that is more geared towards enthusiasts. Similar to UE, the scope of GE is too far beyond the scope of Chiventuere and GE is not a good fit for the project.
This leads to two choices that we can make in regards to skill tree implementation for chiventure. The first choice is to provide the user with a much lower-level and more general system of player asset-possession using a currency called “skill points” that can be repurposed into a skill tree-like system. The second, and more likelier, choice would be a more direct implementation of skill tree support, which is closer in scope to the goal for this quarter.
As we are choosing the second path, there are not many features from the Unreal or Godot Engines that we can take as design inspiration, so we are more or less in the dark as we start making design choices in our implementation of skill trees.
For more information click here
Skill Tree design ideas in connection to other features
This a list of planned RPG Features for Chiventure (excluding skill trees):- Non-player characters (NPC)
- Battle System
- Open World
- Player class
- Player race
These are some ways in which our designs of skill trees could relate to other rpg features: Non-player characters: A potential integration between skill trees and npcs is allowing for the possibility for NPCs to award player skills. This is done today in World of Warcraft, where completion of certain quests can award players new and upgraded abilities.
Battle system: To improve the combat experience in Chiventure, it is plausible that the inclusion of combat-related skills be present in the skill trees. While it is possible to do combat solely with weaponry and not player skills, the text-based nature of Chiventure suggests that player skills would improve the user experience.
Open World: Skill trees need not necessarily be only combat related. Turning on a lantern could be as much a skill in a skill tree as shooting a fireball.
Metroidvania: “Metroidvania” games are modeled after the classic games “Metroid” and “Castlevania” where parts of the map and story progression are inaccessible until a certain skill is unlocked. For example, a jump that the player cannot make until they unlock a double jump.
Player class: Player class is extremely interrelated with player skill tree, with player class influencing large amounts of if not all of the skills present in the tree. Numerous games have skill trees tied to player class, it is likely the two are connected in Chiventure as well.
Player race: Player race could also affect the skill tree, but likely to a lesser extent than player class. Returning to World of Warcraft, player race awards the player use of a racial ability instead of a full-fledged racial skill tree.
Player stats: In World of Warcraft, abilities that do not require user activation but passively affect player stats are called passives. If passives are implemented in the skill tree design, they could potentially affect player stats.
For more information click here
Skill Trees; Design Document and interface guide
Version 2.1.1: stdst.h renamed to skilltrees_common.h and stdst.c renamed to skilltrees_common.h.
Version 2.1: Updates from last version
Version 2.0: Much of the high-level design philosophy remains the same as from the previous version, which can be seen below. However, there have been a few structural changes, as well as some function-renamings, that justify incrementing the version number, as well as updating documentation regarding the design of this module.
This documentation is accurate and reflective of the skilltrees/skill_tree developmental branch, which will hold all updates in code. Headers are found in include/skilltrees, and include the following files: -stdst.h -skill.h -inventory.h -Skilltree.h
The implementations will be found in the corresponding source files *.c located in src/.
Version 1.0: Design is based around two main objects: -A static, global skill tree -Dynamic, individual skill trees for each character
The goal of this dual-object approach is to front-load most of the heavy work at the launch of the game to minimize the work required to interact with skills later on. This approach will also provide a very clear interface for potential integration with other features.
For more information click here
Implementation of effect.c and effect.h
Effect.c and effect.h describe the way in which skills actually have an impact on the game.
v1 - Created a design that has atomic skill types and started implementation of basic methods- most methods are not implemented.
Further information is in this link here