Open reuy opened 1 year ago
Thanks for a lot of great features. I need some time to think about the best way to implement them.
Here are my thought on some features.
The tree seems bidirectional, with no way to specify one-way relationships. While this is pretty neat, it can also lead to players traversing some trees in the wrong direction. I recommend adding an optional Json field to every skill pair, specifying if the two skills' relationship is first-to-second, second-to-first, or bidirectional.
I think two-way connections are easier for players. Adding one-way connections would require them to be visually different from two-way connections. I have also come up with an alternative solution to add an option that would make all connections in a category either one-way or two-way. While a visual difference would not be required, skills must be placed in a such way to clearly represent their order.
There seems to be no ability to specify exclusive perks in a branching point on the tree, save for the at roots themselves. This precludes situations where you can force a player to specialize at a certain point in their progression. However, if we were able to dynamically specify more requirements, we could implement this ourselves - for instance, via mutually exclusive gamestages.
I think that player should somehow be informed what skills/paths will become locked after certain skill is unlocked. However, I still haven't come up a way to visually indicate this.
Reskillable worked by allowing players to buy skill points in a Category using XP. There is no way to implement this as there is no button function to allow players to do this. My own use case requires this; while it's cool that we can specify the ways each Category levels, some, including me, would like to have a system where players get to choose what Category they level by playing the game the way they want, rather than playing it the way that Category demands.
Due to current user interface design, all categories must either have their own experience or share global experience. The problem is that someone might want to create categories that are available only for specific class/role or something. In that case it would be impossible to have experience configured differently for each class/role. This is because every category would use global experience. Ideally it should be possible to share experience between certain categories only. I have no idea yet how to represent this in both config and user interface.
It is not that I don't want to add these features. I really want to, but they come with their own problems and concerns which have to be resolved before implementing these features.
My friend and I looked at the API for our own project. This looks great and is much more configurable than Reskillable, but we have a few suggestions or use cases we see missing here:
There appears to be no way to specify any additional requirements before you take on a perk; no ability to set explicit prerequisites like prior skills or gamestages, only point costs.
The tree seems bidirectional, with no way to specify one-way relationships. While this is pretty neat, it can also lead to players traversing some trees in the wrong direction. I recommend adding an optional Json field to every skill pair, specifying if the two skills' relationship is first-to-second, second-to-first, or bidirectional.
In cases where a perk is connected to two prior perks, doesn't look like you can specify if ALL the perks leading up to it must be unlocked before unlocking it, or if only one is necessary. I recommend making this an integer function for any given perk that serves as the minimum number of perks you need to have unlocked beforehand before you can get that perk.
There seems to be no ability to specify exclusive perks in a branching point on the tree, save for the at roots themselves. This precludes situations where you can force a player to specialize at a certain point in their progression. However, if we were able to dynamically specify more requirements, we could implement this ourselves - for instance, via mutually exclusive gamestages.
Reskillable worked by allowing players to buy skill points in a Category using XP. There is no way to implement this as there is no button function to allow players to do this. My own use case requires this; while it's cool that we can specify the ways each Category levels, some, including me, would like to have a system where players get to choose what Category they level by playing the game the way they want, rather than playing it the way that Category demands.
This one would be a nice stretch goal, but the ability to turn a perk on and off once you've unlocked it. I realize the actual code for a perk being "on" and "off" would have to be implemented by a user, but a nice option to allow a toggle on UI side would be great. For example, you can allow the configurer to run separate command(s) when the perk is unlocked, when it is enabled, and when it is disabled.