Skill Trees ~ Summary of Skill Tree Integration 2022 - uchicago-cs/chiventure GitHub Wiki
General Comments
In general, it seems like the skill trees library is minimally integrated. The 2021 demo of the entire chiventure project relied on core aspects of the skill trees feature, such as the node struct and various attributes. The demo itself calls for improvement in line 99.
The player class module has a class_prefabs.c file that 'prefabricates' information about a character for the developer. The skill trees module is used to describe the nature of the player's skill.
The vision of the player class team is well documented starting around line 264. In general, it seems that further integration requires the skill trees module to be more flexible. The class.c file has related dependencies on skill trees.
Future Steps, Improvements
move_effect_t struct
It is unclear from previous years what, if any, other functions were meant to use the move_effect_t struct--they only noted "More fields will probably be added after speaking with the rpg-battles team / TODO - Add more fields". There are currently 3 functions which use the move_effect_t struct; 1) defines an move effect that unlocks and returns a pointer to it, 2) takes the given move effect and converts it to an effect, and 3) takes the given move effect and adds the move to the player. These functions rely on the only field of the move_effect_t struct, which is a pointer to a move_t struct. From the documentation in the file, it is unclear what other fields were intended to be added and how else this struct was intended to be used after the past year met with their respective rpg-battles team. There are no unfinished functions using this struct that offer suggestions on how else they intended to use this struct.
We met with the 2022 rpg-battles team and they didn’t have any ideas for what to add to the struct, how it was meant to be updated, or how it might be updated to be used in other functions/ways. However, the rpg-battles team did describe some updates they made to another struct we use in some of the other code we have, in particular the stat_t struct. This might impact some of our code, however this is not relevant to the move_effect_t struct. For now this struct doesn’t have any clear fields to add and with the current implementation and goals of our skilltrees work, it can be left alone.
Possible Future Integration
RPG Battles
Skill trees newest additions will require collaboration with the RPG battles team. The effects.c file centers around 4 major "atomic" effects. This includes a item statistic mod, item attribute mod, player statistic mod, and move mod. There is specific emphasis on the move mod as it serves as an important intermediary and link between a skill -> action move -> effect. This could include a move like fireball, which damages your opponents health by 10. This skill needs to be accessed by the battles team in order to use this in combat.
Player Class
Player class would like to collaborate with the skilltrees team, to make unique skills available to the different player characters.
Open World
As we develop the complexity of Skilltrees we could rely on collaboration with the open world team. Our complexity in the future relies on a conditional skill, which relies on the circumstances and surroundings of your event.
WDL
According to the WDL team, their tool can take plain text descriptions for only rooms, games, and a few other features and convert them to a WDL file. These WDL files can be converted to a DSL format. They are interested if the skilltrees module has any features that support WDL and can interact with the WDL file. The most realistic way to support WDL is outlined in the "Environment interactions based on skill characteristics" wiki page; enums/tags that determines whether the locations or features of the world that are available to the character. It may be overlimiting and too complex to put this in the skill struct though.
Instead, an explicit attempt at implementing a "skill type" (see God of War examples in wiki page) can be found in the skilltrees_enums file, where the WDL team can find examples of a "sid" and "skill_type" enum. The effects file also uses a linked list to implement an unlimited amount of 'effects' of skills. Perhaps the WDL team can see if these can be read into a WDL++ file; depending on that, we can extend and modify the design accordingly.
Action Items
With respect to integration, the player class prefabrication file gives many areas of improvement. The comments suggest that we ought to correspond with not just the player class team, but also the CLI (line 272) and battles teams.
These efforts should result in a more flexible and accessible design of the skill trees module that should make it more integrable in general.
After we figure that out, we should look into limiting gameplay according to skills as described in the wiki pages regarding integration with WDL.
Related Pages from the Past
Gameplay: WDL, etc.
https://github.com/uchicago-cs/chiventure/wiki/Skill-Trees-~-Potential-Integration-with-existing-WDL
Skill Leveling
https://github.com/uchicago-cs/chiventure/wiki/Skill-Trees-~-Integration-of-a-Leveling-System