Final Platform Layer is a Single-Header-File cross-platform C development library designed to abstract the underlying platform to a very simple and easy-to-use low-level API - providing low-level access to (Window, Video, Audio, Keyboard, Mouse, Gamepad, Files, Threads, Memory, Hardware, etc.).

The main focus is game/media/simulation development, so the default settings will create a window, set up an OpenGL rendering context, and initialize audio playback on any platform.

It is written in C99 for simplicity and best portability but is C++ compatible as well.

FPL supports the platforms Windows/Linux/Unix for the architectures x86/x64.

It is licensed under the MIT-License. This license allows you to use FPL freely in any software.

What makes it different from other platform abstraction libraries, such as SDL/SFML/etc. ?:

  • FPL is designed to require bare minimum linking to the OS (kernel32.lib / libld.so) only.
  • It does not require any dependencies or build-systems to get it running.
  • It has a lightweight feature set
  • No data hiding -> everything is accessible
  • It uses a fixed and small memory footprint and handles memory very gracefully.
  • It can be controlled by a configuration structure in very detail at startup.
  • You decide how to integrate it; not the library.

How do i get started?

You download the latest release from the Github page: https://github.com/f1nalspace/final_game_tech/blob/master/final_platform_layer.h

Drop it into your C/C++ project and use it in any place you want.

Define FPL_IMPLEMENTATION in at least one translation unit before including the header file.

For more details, you can check out the official website: https://libfpl.org

Recent Activity

I am back in business! And i have a new release in my backpack ;-)

Today i released version 0.9.8 of libFPL (libfpl.org)

The major changes was:
- Added useful functions for multithreading
- Added support for changing the default window background color
- Added support for preventing the screensaver for kicking-in
- Several Bugfixes for several platforms
- Several Bugfixes for several audio backends
- Several Improvements for platforms
- Renamed tons of functions to match naming scheme

Blog comment: Car Crash
Blog comment: Car Crash
Simon Anciaux
New blog post: Car Crash
New blog post: Summer pause
New blog post: New Release 0.9.7-beta
New blog post: New Release 0.9.6
New blog post: 0.9.5-beta
New forum thread: Window closing being weird
Blog comment: Current state