# -*- org -*- * Things To Do ** DONE Game loop Provide a game loop structure that responds to input events, updates the game state, renders the scene. Use a fixed update timestep and cap the maximum FPS. ** TODO Input Provide hooks to respond to keyboard, mouse, and joystick events. Wrap SDL keycode, mouse button, etc. constants in our own enumeration. ** TODO Sprites Encapsulates an image and all of its transformations: position, rotation, scale, color, etc. - [X] Add support for texture regions - [ ] Add support for animations - [X] Use a sprite batch when drawing if one is currently bound ** TODO Sprite batches Efficiently render a large number of sprites. Only change OpenGL context when necessary. For example, don't change texture when rendering several sprites in a row that use the same one. - [ ] Add transformation logic for scaling and rotating. - [ ] Add support for colors - [ ] Add support for different blending modes. ** DONE Tilesets Break an image up into many small pieces. Useful for creating maps. ** TODO Animations Create a data type to represent an animated sequence of textures and/or texture regions. (make-animation frame-duration frames) ** TODO Tile maps - [ ] Create a generic tilemap module - [ ] Create a loader for Tiled .tmx map files. ** TODO Scene graph A tree structure that is traversed when rendering a game scene. The graph is composed of groups and nodes. Transformations are accumulated as the tree is walked. ** TODO Scripting Provide a way for users to easily script 2D games using coroutines (green threads) ** TODO Vectors and matrices Vectors and matrices are needed constantly for games. Provide an easy-to-use module that provides procedures for common vector/matrix math operations - [X] Vectors - [ ] Matrices ** TODO Fonts Use Freetype to provide font rendering procedures. ** TODO A* pathfinding A* is a commonly used pathfinding algorithm for games. Pathfinding is such a common task that it would be nice to provide users with a generic implementation. ** TODO Bounding box collision detection Most games need simple bounding box collision detection. Provide an efficient implementation that uses quad trees. ** TODO Particle systems Provide a highly configurible particle simulation system.