In the interesting of trying to post one update a week I thought I would describe some of my latest development activity.
I got back to inventory management last week and had to do some more design work with respect to object definitions and so on. I wanted to make sure I could handle things that will come up later so as to avoid some future hackery. As soon as you start peeling back these layers and biting into actual meat, things have a way of snowballing a bit.
In order for objects to be sized and positioned properly in their containers (like the backpack) they needed to exist again... thus I started porting over the old object and model loading system from the old engine. To this I started to add the size information necessary to scale the objects properly and so on.
I'd been doing my best to push the scripted action stuff until later because the old one was built on top of a system that was built on top of another system... in a case where the bottom layer system later wasn't even used anymore, really. So I wanted some time to really think about the new implementation and at the same time deal with some things that made me uncomfortable.
However, when I started actually getting to the "moving things around in the inventory" part, it became pretty clear that this is a job for object actions. Since the container itself is an object, it can have (presuming a certain amount of flexibility) actions assigned to it for manipulating the objects in it. This makes sense for a few reasons. Namely, those client->server paths will already exist so that's an easy win... but more importantly, it's quite common for a container to want to be notified about the stuff entering, exiting, and moving inside of it. If these actions are already runtime-attached to the container then that's pretty straight forward.
So now we're deep into redesigning one of the more core features of the engine... and so far it kind of feels good.
Peeling back the onion a little further, the new design also helped inform the approach to how the player will interact with the objects they are holding in their hands. This was kind of stubbed in for the "build wand" that is in the donator-only test releases (and videos) so I'm slowly migrating this over to the "new way". It's a little exciting because I think I've managed to solve a couple nagging problems with all of my previous designs. It's still early, I could end up hating it again in a week.
Ultimately, this cuts across the blueprint editor and the dialog stuff, too. A bunch of things will be cleaner once ported.
Anyway, the nice thing is that when the inventory stuff is working that most (all?) of the object action framework, etc. will be fully implemented with a (hopefully) nice new retrospectively-considerate design. Some other things might get sucked over as well.
I'm keeping my fingers crossed that I don't have any more design surprises.