March 2023 update
Added 2023-03-14 08:00:02 +0000 UTCHey folks,
As I spoke about in my last post, I've been working on SDL Joystick and DarkEdif SDK. I'll break that down.
DarkEdif SDK
First, the SDK was updated to version 17.
This includes:
- Global functions/variables were conflicting in iOS, so you couldn't use two iOS DarkEdif extensions in the same Fusion app. This was fixed.
- Added HTML5/UWP JS DarkEdif Template code to the MMF2Exts repo.
The C++ code obviously doesn't get re-used in those exporters, since JavaScript can't work with C++. But it's a good starting-off point for anyone wanting to make a fully multiplatform extension, as the templates include an interface for reading the DarkEdif smart properties. - Added the "New_Direction", 32-direction wheel parameter type for actions/conditions - the type from Set Direction.
This required a workaround as Fusion handled it strangely; if you selected multiple directions, the condition would be called multiple times with each direction given as the single one. The new SDK can read all the directions in one go as intended, and converts the 1+1 expression to the same format, if you use that for direction. - Additional Platform Files.txt is now read from project folder to do Android/iOS additional file includes.
It was previously a single override for Bluewing Server. Now you can cleanly include extra Java, Objective-C files or libraries with your zipped extensions.
DarkEdif Mac SDK
Since releasing I've tested and it seems I can make Mac extensions from the same code you use for Windows, Android, iOS.

Fusion uses Mac extensions in a way that's kind of convoluted to reproduce - a Mac bundle file, when VS only supports static libraries. Bundles are common for Mac, and still supported by current Xcode, but requires a lot of extra files and intercepting to get VS to make them.
But it's doable; I'll just have to get the DarkEdif PreBuildTool to set up all the wrappers and such needed. That's my current project right now.
Working on a Mac via remote access is proving irritating, though. For some reason, drag and drop keeps sticking, refusing to release whatever is being held. This was reported years ago in 2011 as a Mac OS bug and still hasn't been fixed.
And Mac relies on mouse a lot more heavily than Windows; with Windows, I can tab-key around to everything. Mac has the "fun" of requiring mice in scenarios that don't really need it; for example, if you plug in a keyboard, it will lock the keyboard and ask you to press Next – with a mouse – so you can set up the keyboard.
SDL Joystick
SDL Joystick is pretty much done. I've added a amount of things:
- Updated internal SDL library to SDL 3.0.0
- Added Gamepad interface
- Added ports for Android, iOS, HTML5 and UWP (later Mac)
- Added rumble (vibration)
- Added accelerometer/gyroscope (controller tilt/movement detection)
- Added object properties for changing SDL behaviour
- Added 8/16/32-dir and angle conditions/expressions
- Added 360-movement X/Y intensity calculations
- Added stick/dpad changed direction conditions
- Added a full help file and example file
- Added PS4/PS5 controller touchpad
- Added controller battery power level
- Removed the Joystick ball A/C/E (SDL2 only, was removed in SDL3)
- Fixed Nintendo Switch Pro conflicting with Steam - SDL bug I helped fix
- Fixed Fusion built-in keyboard delay/conflict
- Updated to DarkEdif SDK v17
Necessary for iOS fixes, and was the reason I added the 32-dir wheel.
(Honestly, the wheel fixes shouldn't be necessary.) - In total, this update took around 214hrs, 53 mins.
SDL Joystick was trialled during an open beta thread on Discord here. I have mixed feelings about the beta; some users did help, but 90% just... lurked and didn't test or report anything at all, despite their use of SDL Joystick in their projects.
Still, those who did help will get the release version of the joystick for free, for all platforms. Those who didn't, won't.
Several folk wanted me to add more SDL features. For example, keyboard events stick between Fusion frames, SDL keyboard would fix that.
And audio support on Android is a bit borked – which is a fault of Android OS mostly, not Fusion – and using SDL audio would fix that. It would also give access to microphone, and allow live playing, saying call audio in multiplayer.
However, it would take weeks of work, as SDL audio is very low level (you have to manage the audio buffers yourself), and I have other project ideas to clear this year, so until money is fronted, SDL is going to be on a lower priority.
I've been good at predicting cross-platform issues before they happen, which is a mix of experience, checking every platform's differences in implementation when designing, and trying to envision myself using the features in every feasible app or game engine. If it seems plausible, even if it's unlikely, then I'll add code in preparation for it.
For example, if I was making a platforming extension, I could imagine making a platformer with double jump or triple jump or wall jump... but indefinite jumping sounds silly. But it could happen, so I'll write the extension code in a way it's not hard-coded to triple jumping max.
On a similar note about preparation, in case I get motivated to come back to SDL Joystick and add audio, video, file access etc – I'm renaming SDL Joystick to SDL Object. This will also help separate the "branches" of SDL, my variant versus PkR's.
I'm planning to sell the SDL Joystick once it becomes SDL Object, perhaps for $15 for all platforms. Of course, Patreon joiners can grab a single platform for $5.
But before SDL Object is out, I'm going to be getting the Mac DarkEdif port working. I like to finish projects off cleanly in a way I don't have to come back to them for bugfixes or extra ports, just to extend them. In SDL Object's case, if I released a Joystick update that supported audio, that wouldn't make sense, and renaming it later will break existing MFAs. Better to rename now, before people use all the fancy new features.
Income?
One of my clients has switched from paying me for on-call support, from PayPal to Patreon, so $460 of the $723 I'm now getting I was receiving already for non-Patreon work. I did encourage him not to do that, particularly with platform fees, but he did it anyway.
So, I'm currently on $263/mo. With 215 hours in SDL, over three months, that's a little bit over $3.66/hr... which is if I stopped right now, and with Mac SDK and other projects' hours ignored.
Please encourage others to subscribe, and thank you for making it $3 when it would've been nothing. 🥳
Cheers,
~Phi
PS: If anyone's having slowdown with Bluewing Server or other extensions of mine, due to Darkwire website going down recently – the power cord was knocked out of place – then just update the exts, from Darkwire, ClickStore, Manager or messaging me if it was a private ext.
Newer DarkEdif extensions won't do an update check during Fusion loading screen, and will run the check in background in Fusion editor, so a timeout shouldn't slow down your Fusion usage at all.