Should I go with BMax or...?

Miscellaneous Forums/General Discussion/Should I go with BMax or...?

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Actually, it was TGB's behavior system that is prompting me to write my own for Blitzmax. So far, it's coming along nicely.

It's actually not just a behavior system, per se, it's really a modular logic system where you code your logic module and can then attach it to any LogicObject, or you can even attach it to another logic module. At the moment I'm coding an error handling system with it, and the error handler itself is just a logic module. In fact, the default error handler is going to be a logic module that is attached to all new logic modules upon creation.

The beauty of it is, not only can you swap in a different error handler if you wanted to (say you wrote a custom logging error handler..you could attach this to any and all entities you desired.) but you can even switch out functions on the fly, in realtime.

It'll have dang near the flexibility of a scripting language (you'll be able to view and/or modify any and all parameters and variables an object contains at runtime, and I plan to make a visual editor to make this even easier.) You'll be able to activate, deactivate, swap, add, or remove logic modules during runtime. The only thing that can't be done during runtime is actually writing or loading a new function (well, actually this COULD be achieved via DLL's, if it was really necessary.)

So besides being able to redefine or define new functions (or classes or whatever), it'll be as flexible as a scripting language but should be far more powerful due to the underlying structured API I'll be providing. What I'm hoping to do is to release this and then allow others to write their own behaviors/logic modules and then we can openly share them. For instance, I might write a "sinusoidal movement behavior" that can link to any number of variables (you'd probably link them to your characters/enemies X and Y values, but you could also say link it to only their X velocity if you wanted them to speed up and slow down according to a sine pattern).

You can then change the parameters of my logic module, such as the amplitude of the wave (which would affect whatever variables the module itself is affecting...a larger wave = more variance applied to the variables it is affecting). These parameters can be changed in real time. Also, since each logic module is it's own separate instance, you could give the enemy ships their own sin logic module and make it a large wave, thus they have very wide flight patterns, while at the same time applying another sin logic module to the alpha value of the stars in the background, and hence they flicker in and out according to that particular modules settings.