Skip to content
Ingo Ruhnke edited this page Mar 22, 2015 · 3 revisions

This is a list of basic features we should either get from additional libraries or write small classes ourself.

Basics

  • Setting up Fullscreen/Windowed OpenGL Context, the mode should be switchable at runtime
  • Gathering Input from Keyboard/Joystick/Mouse
  • Allow input to be configurable
  • Demo recording/playback of input
  • Some structured file format parser/writer for config, map, tile- and sprite-definition files
  • Optionally support for a binary format, since loading large tilemaps from a structured text file is slow
  • Some way to store/retrieve translated strings (tinygettext)

Graphics

  • Loading images (png, jpeg would be a nice addition but is not mandatory) and creating opengl textures from them
  • A system that gathers all drawing commands, sorts them and maybe optimizes them for opengl
  • The drawing system should be statefull to allow translation and maybe scaling and rotating of following drawing commands. It should be possible to maintain a stack of such transformations.

Fonts

  • We need Fonts to display Text on screen
  • Fonts might be based on TTF for easier scaling/unicode support etc.
  • it should be possible to apply some effects to fonts, black-border, color gradients, glow, etc.
  • Fonts sholud be antialised

Sprites

  • Several Animations that can be switched. Animations are defined from a series of images. Speed of the animation or even single frames should be freely adjustable.
  • It should be possible to freely define the origin point of a sprite
  • Animation images can be extracted from bigger images (texture coordinate animation)
  • Support for reversing animations and mirroring/flipping the images will reduce the number of images needed.
  • We might have to extend sprites to support the 3 layer displaying of windstille
  • Sprites should be defined in datafiles, so that properties like framerate and such are easily changable
  • Sprites can come in the form of 2D (generated from pngs) and 3D sprites (generated from blender models)

Sound

  • A way to send sound to the soundcard.
  • Load wav and ogg files
  • Stream ogg files for background music
  • Mix several sound sources together
  • Positional audio (we could also build a fake solution with adjuts panning/volume)
  • Effects applied to sound streams (echo, reverb, etc)
Clone this wiki locally