Based on Zach Barth’s minimalist-game-framework these seem to be the minimum features needed to have a game framework to serve as a base for additional game specific features.

Core

  • Game loop with delta time tracking
  • Window creation and management (fullscreen toggle)
  • Fixed internal resolution with letterboxed scaling

Rendering

  • Primitive drawing (lines, empty/filled rectangles)
  • Texture drawing with:
    • Position, size, rotation, pivot, mirroring
    • Source rect selection
    • Blend modes & scaling modes
  • Resizable (nine-slice) texture drawing
  • Text rendering with caching (alignment & measurement)

Asset Loading

  • Load textures (BMP, GIF, JPEG, PNG, SVG, TGA, TIFF, WEBP)
  • Load resizable textures (with slice offsets)
  • Load fonts (TTF, FON) at specific point sizes
  • Load sounds (WAV, OGG)
  • Load music (WAV, OGG, MP3, FLAC)

Input

  • Mouse:
    • Position, motion, scroll wheel
    • Button down/held/up queries
    • Mode setting (visible, hidden, locked)
  • Keyboard:
    • Key down/held/up queries (with optional autorepeat)
    • Typed text input
  • Gamepad:
    • Connection detection
    • Sticks, triggers, and button down/held/up queries
    • Multiple player support

Audio

  • Play/stop sound effects (looping, fade in/out)
  • Play/stop music (looping, fade in/out)
  • Handle multiple sound channels

Math & Types

  • Vector2: 2D vector math (length, rotation, normalization, dot, cross, operators)
  • Bounds2: Axis-aligned rectangle (contains/overlaps checks)
  • Color: RGBA color struct with named constants and alpha adjustment