I’m struggling to understand why some of adv3lite was done the way it was. For example, as with adv3, I could just define the “me” object as
me : Actor
;
But the documentation for the player character for adv3lite is routinely this:
me : Thing
isFixed = true
proper = true
ownsContents = true
person = 2
contType = Carrier
;
What the documentation doesn’t seem to bother addressing is the most obvious question: Why would I do that? Why would I avoid deriving “me” from Actor? Or, better, why would I make “me” a Thing and then re-add the parts of the Actor class that make it so that the “me” object acts like an Actor? There’s one part mentioned about how you can do this to be “minimalist.” But what’s being described is actually the opposite of that. Calling a person-type object a thing-type object does not make it minimalist. Having to specify less (not more) is what makes something minimalist.
Also, little changes here and there seem to have been done for no good reason. For example, why change ‘roomName’ to ‘roomTitle’? Beyond adding yet one more inconsistency between adv3 and adv3lite, it arguably makes more sense to have a room “name” than a room “title”. Yet in other places, logic indicates a “name”: such as “DarkName”, “roomnameStyleTag”. There are a lot of other inconsistencies. Admittedly small in and of themselves, I suppose.
Looking at it purely from design orthogonality principles, it would have been quite easy to make a lot more compatibility between the two libraries to make transitioning easier and I have no clue why that wasn’t done. But, then again, I suppose if that was done, you could argue it would have been easier to just modularize adv3 rather than create a new library.