So I got coked up and tore out SDL’s still-beating event system, holding it triumphantly aloft before plunging it into the cleansing fire. From now on Boxer does rendering and input entirely by itself, keeping the SDL framework around only for audio. The new build is a Cocoa zen garden and I am at peace.
While much is changed under the hood, visible improvements from this recoding bacchanalia are fairly few:
Mouse-locking and cursor behaviour in general are much improved: the DOS and OS X cursors stay in sync whenever possible when locking and unlocking, and the cursor should now hide and unhide much more faithfully.
Minimizing or hiding the application from fullscreen now works properly.
Just because I could, I added a chic blur effect behind the Inspector panel.
CtrlOptclick now simulates clicking the left and right buttons simultaneously: a ray of hope for you Syndicate fans rocking a trackpad or a Magic Mouse. (Reminder that Ctrlclick on its own simulates a right-click, and Optclick simulates a middle-click.)
As a result of this input restructuring, joystick support is officially gone and it won’t be back until after 1.0. Which isn't a great loss, since the joystick support left over from DOSBox was a nightmare to configure and never worked very well on the Mac.
Which is not to say I don’t care about joysticks: on the contrary, I love them so dearly I couldn’t bear to support the feature as it was. Once 1.0 is properly out the door, I want to do joysticks right: make them work magically and beautifully, with no initial setup but enough graceful preferences to work how you want. More on this in a future blog entry.
This has been a major code overhaul: there are many small changes in input-handling behaviour and no doubt Lots Of Fun New Bugs. As always, if something seems wrong or broken or just worse than it was before, it is your duty as an Alert Alpha-Tester to report it as a bug so that I can fix it and make the world a better place.
Another Boxer 1.0 alpha build is up, sporting some of the mouse control improvements discussed in the previous post. Boxer’s existing mouse cursor behaviour is still the default, but locking the mouse is now just a Cmdclick away: quick, intuitive and obvious. I'll be improving both behaviours further in the coming builds, but I'm already much happier with how they work.
This build also features three fewer features:
After reading Rework, 37signals’ guide to kicking yourself in the pants, I felt inspired to start viciously pruning Boxer’s feature-set for the looming release of 1.0. These were fallow features full of bugs and awkward flaws; there was no way they would be finished to my satisfaction before 1.0, were I to release before the oceans boil and all life on Earth comes to an end.
I’m casting my eye around for other fripperies to send to the guillotine, but in any case once game installation is in then I’ll institute a feature-freeze and start calling everything a beta instead.
Design by 40watt.