as of today, my little/big project called "FPL" - Final Platform Layer joins the handmade.network community officially! Banzai!!
For that i want to say thanks to the entire handmade.network team for giving me this opportunity. Thanks!
I want to start off the initial blog entry by introducing the project to new people - but keeping it very short.
So what is this project all about?
FPL is a single-header-file platform abstraction library written in C99 - targeting game/simulation/media development with the main goal of simplicity and handmade-ness. It is similar to SDL but differs in a lot of ways:
- It uses a small fixed memory footprint and handles memory very gracefully
- There are no other requirements than a C99 compiler and linking to either (kernel32.lib) or (libld.so)
- No data hiding, everything is accessible
- C-Runtime is optional
- It has a lightweight feature set (Single window, Graphics api initialization, Raw audio samples playback, Input handling, Multithreading, Path/File IO, Atomics etc.)
- It can be controlled by a configuration struct in very detail at startup
Initially the project started as a little replacement for GLUT in a project of mine (https://github.com/f1nalspace/nbodysimulation_experiment), where i had tons of trouble with different versions of GLUT and CRT linking madness.
Frustrated i started to write a replacement called "FAL" (Final Abstraction Layer) for it with a very small feature-set (inspired by handmade-hero). After a very short time it has grown to match a similar feature set as GLUT and worked great, but it had a terrible code-base.
So i rewrote it from scratch in C++ with a much more sane api and codebase in mind -> FPL was born.
It took me a few evenings of pure coding to match the previous feature level.
After i had something to show, i released it as open source and started a forum post here in the "Work-in-progress" and several other forums.
Since that i continuously work on that project to get it to a similar feature-set than SDL while it get transitioned a few times (C89 -> C++/98 -> C++/11 -> C99).
If you are interested you can read all the details in the original "Work-in-progress" thread.
And of course you are invited to check out the project: https://fpl.handmade.network/