You know those cute little retro 3D platformers that are all over gamedev twitter? Yea, well this is what happens when I get indie-dev FOMO and simply have to jump on the bandwagon.
I had a few things I wanted to mess about with in this project:
- A nice feeling 3d platformer controller with sliding, double jumps, all that good shit
- Some sort of "Chemistry Engine" ala BoTW; things can burn, be frozen, get magnetized, etc
- Local multiplayer, because I have a 7-year old.
After a few days tinkering I chucked it on "one day maybe" pile.
Object Tags System
One cool thing to come out of this project was my very excitingly named "object tags system". My aim was to build something that could be used to drive the aforementioned "Chemistry Engine", and also a bunch of other gameplay bits.
- Tags are defined as ScriptableObjects
- Objects have Tags via a TagOwner (usually a component on a GameObject)
- When objects collide or otherwise interact (triggers etc), a set of Rules gets evaluated, which result in Tags being added or removed.
- When the Tags on an object change, other systems can hook in via events.
- Tags have various behaviours associated with them, either via components on a tagged GameObject, or as a custom data-driven behaviour instantiated (from a pool, don't panic) at runtime.