Anyone who's dealt with client.dir knows that, by its' lonesome, it will not properly handle a non-square map, in addition to seeming to do all manner of wacky things when the size of the map exceeds client.view. For over a day I tried silly modifications to things like client.pixel_x and pixel_y to no avail, until after about ten hours of programming the checkers game I decide to take a look-see at the variables the client has available, thinking to myself "there *has* to be something I can do about this issue". Turns out, there is -- simple use of client.edge_perspective, and enabling the EDGE_PERSPECTIVE flag on client.view.
In short, I lost a day's development simply by stumbling over something I've not used or researched extensively in the past. This sort of thing is what irritates me about BYOND as a whole, where simple items like what I was attempting has a simple solution, but is never presented as such. Sure, I knew about edge_limit and even read the reference entry for it before, but until I had a situation where its' application is essential I had no idea what its' purpose was.
Minirant aside, I'm more or less back on track. I think my immediate plans will involve finishing checkers and hosting this beasty for a public test of just how well the channel system functions while I finish chess. It may even be today yet, but sans any unforeseeable hangups like mentioned above, definitely by tomorrow evening.
Oh yeah, a peek at checkers:
