Hello Arduboy frens,
I’d like to discuss an idea with you that I became very excited about, but lack the skill (knowledge of low level and Arduboy HW) to make it happen myself without a lot of effort, while someone skilled could bring it to existence in a day.
The idea is a minimal library for Arduboy, in the spirit of Unix and suckless philosophy, to offer extra performance as well as some other things.
@FManga has started this project for Pokitto (see here), but it’s not finished yet and I think there are many improvements still possible (i.e. it can be made more minimal).
What does it mean?
Well, a bare minimum library that’s extremely easy to use, contains only the initialization of HW plus a few functions (setPixel, buttonPressed, writeSound, …), is as small as possible, with minimum memory footprint, minimum compiled size, fast and simple compilation and so on. It should NOT contain things like drawing shapes, rendering text, button management, managing sprites and their formats, managing FPS, main loop etc.
It should be in a single header file if possible, written in C – it should run as C++ (i.e. be a C subset of C++) as well, but for a few functions C is enough and some people (like me) want to simply write in C.
As such a small and simple file it should ideally be public domain under CC0 as to be as simple to use as possible also legally, i.e. simply take it, copy paste it, edit it, hack it, improve it, without having to document the changes or write correct attributions, attach license text etc. Licenses like MIT are of course an option too, but they still have burdening requirements that are maybe appropriate with bigger SW, but not very good for a simple small file with a few functions.
Why?
This library wouldn’t replace the current library. It would only be an additional option for those who could benefit from it, i.e. people who want to optimize, have control, get the best performance out of Arduboy, tailor their functions (like shape rendering) to specifically fit their project, or keep it simple. Most developers would keep using the current library.
It would also be a simple interface that could be implemented on other platforms like native PC, emulators/simulator or browsers, so that the games would be more portable and potentially easier to develop and debug etc.
Anyone who has programmed for Arduboy knows it has very limited HW resources and so every byte counts if you’re trying to create a serious game. The official library offers comfort and safety but sacrifices some performance and control for it. The minimal library would be an option to willingly give up this comfort and get the performance back, save space and CPU cycles and allow complete control and optimization and as a result better games from the skilled people .
I think such a library is even more appropriate for Arduboy than Pokitto, because Arduboy in itself is a symbol of minimalism. It should have this extremely minimal library available.
What do you think? Is there anyone who could do this?