Hot Pagan Activities
A few things done this week. First, a dubiously titled representative video on...
The most visually interesting is the ability to use multi-tile decals. So far, everything required a single tile, even though the data structures do support larger elements. I found an excuse to create a big multi-tile decal: a big fat pentagram occupying a 7x7 tile area. Because my custom renderer is weird, what really happens is that I chop that into 49 image tiles and pack them in an array, and during rendering I render a single instance that gets scaled to cover the area, and the pixel shader picks the right array slice for the right sub-region. It mostly works, except some occasional artifact (because of UV jumps at subregion borders).
First, the ability to execute abilities without a creature initiating that. But abilities require an entity to use them, so the workaround was when passing the level entity, it's the equivalent of "Mother nature" being the caller of such abilities. The differences are that some requirements don't make sense anymore, like proximity to caller, or being able to see or speak, etc.
The other thing that took a couple of days was a major refactor of the cutscene functionality. Which I developed a couple weeks ago. If I know something about myself, is that the first take of any software subsystem is basically doomed, and that's what happened here too. It was complex in a bad way - it was easy to create bad configurations. Previously I was using actions and action sequences, and you might have different action sequences if you wanted async execution of actions. This was a mistake. Currently I'm just using a list of actions only, and each action is instant (screenshake, text, etc) or async (walk 5 tiles, try to achieve some goal), and actions have one or more dependencies. It works better so far, but I'm building up towards more complex scenarios. I'll shortly add some export to graphviz dot, because it's easy and I like procgen graphs, and develop a couple more complex scenarios with more async actions and more characters.
