Albrook from Kefka's Revenge might be a good test map too. Lots of layers and scripts everywhere.
If you're striving for full Sphere v1 compatibility, you actually want to run map/entity scripts with `EvaluateScript()`, making them into functions (they get their own scope) or using `eval()` (uses scope of caller in ES5+) will change the behavior.The difference if you're curious is that Sphere 1.x runs all scripts as top-level program code, the same way browsers handle multiple scripts.This, incidentally, is the reason I made SetUpdateScript() etc. be able to accept a function instead of a string, since it let's you access local variables in your update/render/person scripts that way.
byte blocked; // 0 = no obstruction data, 1 = old obstruction data, 2 = new obstruction data
No idea, I never implemented it in miniSphere and haven't had any compatibility issues, I think even the Sphere 1.5 editor only supports line segment-based obstruction. The RTS spec says:Code: [Select]byte blocked; // 0 = no obstruction data, 1 = old obstruction data, 2 = new obstruction dataSo I just assumed it was deprecated.edit: Yep, Sphere 1.x ignores it too:https://github.com/sphere-group/sphere/blob/master/sphere/source/common/Tileset.cpp#L513-L517
Hmm... not sure where I picked up the information if it's not in tileset.rts.txt, since miniSphere has code to load the tile names:https://github.com/fatcerberus/minisphere/blob/v4.8.4/src/minisphere/tileset.c#L154
var wh = screen.width / 2;var hh = screen.height / 2;screen.transform = new Transform() .translate(-wh, -hh) .scale(3 / wh, 3 / hh) // <-- HERE .rotate(0.6, 1.0, 0.0, 0.0) .translate(0, 0, -1.0) .project3D(120, wh / hh, 0.1, 2.0);
The factors for both axes should be the same, you want to divide by either wh or hh but not both (I tend to prefer the former). That was my mistake when I originally wrote the code.
Albrook is a hell of a map, I even remember having trouble getting miniSphere to load that one properly.