SAF

From Libregamewiki
Jump to navigation Jump to search
SAF
Saf logo.png
Latest release1.0
Release dateOctober 21st, 2021[1]
Code licenseCC0 [2] (public domain)
Media licenseCC0 [3] (public domain)
P. languageC
Contribute
SAF is a free engine. This means that the source code is available to be studied, modified, and distributed. Most projects look for help with testing, documentation, graphics, etc., as well.

SAF (SmallAbstractFish) is a greatly portable public domain minimalist game library for tiny and retro games, created by drummyfish. It can also be seen as a fantasy console of a sort. It is written purely in C language as a single header library, without any dependencies (other than those required by the specific platform the game is compiled for). SAF is based on the less is more, suckless philosphy. Its goal is to provide a way of simple joyful programming without friction and pain of dealing with huge frameworks, libraries and environments. It purposefully limits parameters such as resolution, number of colors or number of buttons, in order to keep programming simple and well portable. It also aims to provide a way for creating games that aren't tied to any hardware or software platform, games that can be played on any device powerful enough to run them and that won't die because of broken dependencies. Games written with SAF can currently be compiled for over 10 platforms including PC (with several possible backends such as SDL, SFML or X11), browser Javascript and open gaming consoles such as Arduboy and Pokitto.

SAF comes with a few example games, e.g. MicroTD. Anarch and Simon Tatham's Portable Puzzle Collection (partially) can also run under SAF.

Features[edit]

  • fixed resolution of 64 x 64 with 256 colors (332 palette) and framebuffer (double buffering)
  • fixed 25 FPS
  • 7 buttons (arrows, A, B, C)
  • built-in simple 4x4 ASCII bitmap font
  • very simple interface and library with essential functions (e.g. LUT sin/cos, line drawing etc.)
  • written in pure C99, depends on no libraries (not even stdlib), mostly works with only 8 bit integer values, so it is extremely friendly to porting to any platform
  • no build system, just include and compile
  • single header, self contained and well documented
  • 32 bytes of persistent storage (for save/load)
  • 4 sounds to play
  • some platforms allow automatic pixel art upscaling, time manipulation, demo recording (which allows e.g. creation of tool-assisted speedruns), CLI parameters, game controller support
  • many supported platforms (even very limited ones with monochromatic display and just kilobytes of RAM)
  • completely public domain, absolute legal freedom

Media[edit]

References[edit]

External links[edit]

repository