The JavaScript scripting interface has been evolving over the test releases since 1.67. None of the original interface remains, and what’s there is far more powerful than I expected at the start.Ramirez wrote:To be honest one of the reasons I'm not quite as active on the boards these days is because doing Oolite work has become more of a hardcore programming exercise than a fun way to experiment with simple yet effective gameplay ideas. I admit I've never got to grips with javascript, so I can't really follow a lot of the current discussion, and not knowing the inner-workings of the code all I can do is use trial and error to see what works best. I know progress is good but it gets a bit frustating when a perfectly good solution to a problem is rendered ineffective in each release because a particular function gets deprecated. I've just had a skim through the release notes for 1.72 and while I don't see any other obvious incompatibility with any of my OXPs, it's anyone's guess whether or not a function I may have made use of still works or not.
Maybe I'm being slow here - certainly others have produced far more complex OXPs than me - but isn't anyone else finding it very difficult to keep up with developments? Also I'm mindful of how long it took me to test Trident Down the first time around...
This instability of the scripting interface is the main reason there hasn’t been a stable release in the two years I’ve been leading the project. A stable release represents a commitment to compatibility; every OXP that works in one stable release should work in every future stable release, unless it relies on bugs or methods not intended for OXP use. Conversely, things introduced in test releases are flexible.
That said, while 1.70 and 1.71 had a lot of renaming and redesign, and 1.72 had the big split of player and player.ship, I don’t expect particularly big redesigns after 1.73. The overall design of the scripting interface feels right. Between now and the MNSR, my focus will be:
- Feature completeness in the JS interface (most importantly, everything used by existing OXP scripts should be doable in JavaScript).
- Fixing some outstanding problems with shader support (namely demo ship lighting and shadowing, and possibly support for tangent information, enabling normal maps).
- Bug fixes.