Opeth001:
hi @lclemens ,
Unfortunately, I had to change my plans/priorities with the Gameplay Ability System but I’ll be back to work on it in few days, so I haven’t worked on that phase so far.
i had to use OdinInspector and NaughtyAttributes in my Custom Hybrid Renderer to give the designer the possibily to define material properties overrides and both were pretty easy to learn and work with.
I also had to use them with ScriptableObjects to define Cards, Chests, Shop Offers… and all of them are composition based and very dynamic.
if i understood your issues correctly, i had a similar case where i have a list of interfaces and depending on the elements types or values, the whole ScriptableObject structure (list element) may display differently on the inspector and can even give the possibility to define nested lists.
I personally had a pretty good experience as I was able to reuse most of the property drawers between ScriptableObjects.
in the Gameplay Ability System, I plan to use the Visual Scripting tool as a user-friendly way to define ScriptableObjects and bind data between AbilityCards SOs and AbilityDefinition SOs.
at bake time, the Visual Scripting graphs will be executed to create the AbilityDefinition SOs. these SOs will be converted to Abitlities Prefab Entities at runtime.
this way i can get:
Very easy to use even for non-programmers.
Default runtime performance.
Abilities can be modified/created at runtime.
The game saves tons of memory by only converting abilities that will be used into entities.
I hope this answer helps you.
I was unable to find a good way to do composition with ScriptableObjects. It just seemed like no matter what I tried, I couldn’t find a way to make ScriptableObject composition as straightforward as dragging components onto a prefab. I haven’t played with any Visual Scripting tools and to be honest I’m not real crazy about visual scripting solutions. So for now I am going back to using prefabs instead of ScriptableObjects.
1 Like