Quantcast
Channel: GameDev.net
Viewing all articles
Browse latest Browse all 17825

FPL - a single header file platform abstraction library

$
0
0
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

Viewing all articles
Browse latest Browse all 17825

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>