(PARENTHESIS) First, let me say: W00T, this is post #100 on codebastard.com (applauds myself). I don’t even understand how I could post that much. Even then 100 posts is weak, Vint Falken must post at least that amount each month. But yay anyways. For me it’s a milestone even if i’m a weak blogger. (END OF PARENTHESIS)
Okay this last weekend I went on a mega all-nighter coding rampage. I am very pleased and proud to state that I achieved what I would call a working proof of concept of a modular plugin architecture for MachinimaCam HUD. Being very limited by that 16Kb bytestack limitation, I had to find a way to separate the effects from the main core.
I really hoped it would be technically possible to make a real uniform architecture that would allow me to pass an upgradable parameter block from and to the effect plugin scripts. However, LSL is so handicapped on that level, it is even weaker than Standard BASIC on a TRS-80 Coco 2.
From what I discovered, there is no way I can declare a new variable name from a string, which totally borked my attempt at building a real transient API. But, using a few smartass tricks, I managed to build a decent intercom architecture. Only downside is that I will need to upgrade each effect script if I ever decide to extend the MCAPI range of variables, which is very likely to happend. But this is still good news none of the less, since now MachinimaCam will be able to hold several dozens of effects, maby even over a hundred (tho this would need to be tested). Much better then the 16 effects I was stucked with due to memory bytestack limitations.
Next step, interface separation. By keeping church and state separate, I should be able to have an interface+plugins open and upgradable architecture while keeping the MCAPI core and communication API closed. This is not really a big task, I have pretty much a good idea on how it will be achieved. Fun thing is that only the interface will need to be updated when you write new plugins. The core should use one of the MCAPI parameter as the effect name, therefore eliminating the need to do any modding to the core itself. Yay!
After that is done, I will finish that “Cam focus on other avatars” extension, because it is a wildly popular demand, and maby half a dozen new effects. And I will close this release. But this big hoola of an upgrade will just open the door to more and more possibilities. I have in head at least 2 major advancements: MachinimaCam Remote control through another authorized MachinimaCam wearer, and another idea I had was Automated avatar trajectory recording and camera playback.
I know you guys want moar, so moar I shall bring!