EverEnding DevBlog 115: Parametric

EveHeader

The parameter editor is pretty much done. It crashes whenever I try to do anything still, but all of the things that are supposed to make it do things are in place, so it’s just a matter of ironing all that stuff out and making a few minor UI improvements. The biggest benefit to the system as it is now is that just by changing a few things around I should be able to use the exact same editor to make entity templates as to modify specific entity instances as placed in the level, which is pretty exciting. Thus, in a roundabout way, I’ve come to a point where I’m going to get for free all of the stuff that I was wracking my brains looking for a way to add to my entity editor before. This is why it sometimes pays off trying to make things nice and elegant, because nice and elegant things tend to be much friendlier when you want to do something complicated with them later on.

Throughout all this, the biggest nightmare has just been figuring out how to handle arrays. It’s essentially impossible, as it turns out, to find out at run-time what the intended contents of an empty array is. I wasted pretty much a whole day trying to figure out a way around that problem, but in the end was only able to solve it by tagging all arrays used in behaviors and behavior parameter types with metadata describing the content they held. I’m not wild about that since it’s another solution that places pressure on anyone who wants to add new behaviors later (realistically that means me, but you never know), but it is a solution and it was the least onerous one I could think of while still maintaining some semblance of type safety.

I think I’ve got all of the hard parts done on this, so it should be just a day or two to finish it. I may take another day or two to build a template editor using the same code, and then I think either the animation system improvements needed for the secondary attack or a basic lighting system.

Leave a Reply

Your email address will not be published. Required fields are marked *