Hi,
i wanted to present you my recent project i am working on which is a platform abstraction library.
This library is designed to be simple, non-bloated, can be included however you want and do not require any thirdparty libraries at all.
It will simply abstract away all relevant platform specific things in a simple to use api.
The main focus is game or simulation development, so you get a window and a rendering context plus Memory/IO/Threading and more.
Why a single header platform abstract library these days?
- There is not a single one out there, which do not require a ton of DLL´s or Libs just for the library itself.
- I dont want C-Runtime linking madness anymore
- Most are bloated and are far beyond abstracting the platform
- Bad or no control how memory is being handled
- There is no good single header platform abstraction library out there
- I dont want to write platform specific code anymore, just once for each platform with a fixed set of features and thats it.
Mindset:
- Its fully C/89 compatible but with 100% C++ compability, so its much easier to get it compile and running on other platforms as well
- There is just a single header file you have to include and thats it
- Its full open source, so you can use and extend it however you want
- No data hiding in the code, you have control over everything
- Easy to use api
- Does not directly allocate any memory at all
- Uses just the built-in operating system functions/libraries and nothing else
- C-Runtime library is not required
- Works well with non platform-specific libraries as well (ImGUI, Box2D, etc.)
- Features can be compiled disabled as needed (Window, OpenGL, etc.)
- Low level only
- [Learning about low level operating system programming besides win32]
Features:
- Create/Handling a optional window
- Create a optional opengl rendering context on the window
- Memory allocation and deallocation
- Timing operations
- Threading
- File/Path IO
- Atomic operations
- Dynamic library loading (.dll / .so)
- Console out/in
Current state / Planned:
- Its not complete at all, buts its usable and works - so feedback is very appreciated
- Some API calls are weird, require more thinking or need to be simpler (fpl_ListFilesBegin, fpl_ListFilesNext, etc.)
- Only x86/x64 win32 platform for now
- Support for Direct2D/3D/Vulcan (Only to get it up and running)
- Audio output (DirectSound, ALSA)
- Good useful automated testing
- More Guides and Samples
- More Platforms (Linux/Unix, maybe Android not sure)
- More compiling out options (Some prefer the C++ standard template library or other libraries)
- Moving utility functions into its own library which have nothing todo with the platform (fpl_ExtractFileName, fpl_RemoveEmptyDirectory)
- Let the user allocate memory for storing platform input events as well
- "No C-Runtime" support is kind of wanky and require more thinking
Issues:
- Will not work with any other platform abstraction libraries, because all do magic stuff with entry points and such - so they gets in the way
Source:
https://github.com/f1nalspace/final_game_tech
Feedback/Comments:
I would like to know, what you think about, what is missing, how can i improve it, etc. All constructive non hating comments are welcome!
Greetings,
Final
↧