summaryrefslogtreecommitdiff
path: root/TODO.org
diff options
context:
space:
mode:
authorDavid Thompson <dthompson@member.fsf.org>2013-08-15 19:00:30 -0400
committerDavid Thompson <dthompson@member.fsf.org>2013-08-15 19:00:30 -0400
commitdd13ae3c500a9aa106d7af0cf0ac74b639df5dc1 (patch)
tree4f51724fcb7d0fcabc011b352fe8e60d9e211b71 /TODO.org
parentf5abf968e86cbd55f5a79f8b6826eac42f93ee9f (diff)
Rename TODO to TODO.org
Diffstat (limited to 'TODO.org')
-rw-r--r--TODO.org123
1 files changed, 123 insertions, 0 deletions
diff --git a/TODO.org b/TODO.org
new file mode 100644
index 0000000..6d9b935
--- /dev/null
+++ b/TODO.org
@@ -0,0 +1,123 @@
+* 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.
+
+ - [X] Keyboard
+ - [X] Mouse
+ - [X] Window (active, resize, quit)
+ - [ ] Joystick
+
+** DONE Sprites
+ Encapsulates an image and all of its transformations: position,
+ rotation, scale, color, etc.
+
+ - [X] Add support for texture regions
+ - [X] 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.
+
+ - [X] Add basic batching for non-scaled, non-rotated sprites
+ - [X] Add transformation logic for scaling and rotating
+ - [X] Add support for colors
+ - [ ] Add support for different blending modes
+
+** DONE Tilesets
+ Break an image up into many small pieces. Useful for creating maps.
+
+** DONE Animations
+ Create a data type to represent an animated sequence of textures
+ and/or texture regions.
+
+** 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.
+
+** DONE Scripting
+ Provide a way for users to easily script 2D games using coroutines
+ and a scheduler.
+
+** 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
+ - [ ] Fixed width bitmap font rendering
+ - [ ] Truetype font rendering via freetype
+
+** TODO Sound
+ Provide helpful wrappers around SDL sound 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.
+
+** TODO Asset Management
+ Provide a generic system for loading assets (images, sounds, fonts,
+ etc.) and storing them in a cache. Explore using weak keys so that
+ assets are removed from the cache when they are no longer
+ referenced.
+
+** TODO Actions
+ Provide a library of coroutines that perform commonly used
+ time-based actions such as linear interpolation. It would be nice
+ to have a way to make these easily composable as well.
+
+ - [ ] Linear interpolation (lerp)
+ - [ ] Move to/move by
+
+
+** TODO Combos
+ Provide an Emacs-like way of defining key combinations to that
+ multi-button input is easy for users.
+
+ - [ ] Basic sequences (press A then B)
+ - [ ] Simultaneous key presses (press A and B at the same time)
+ - [ ] Timeouts (combos fail if you don't enter them quick enough)
+
+** TODO 0.1 Release
+ An official 0.1 alpha release with basic, minimal functionality
+ will provide a good place for people other than me to try out
+ guile-2d and perhaps even start to hack on it.
+
+ - [ ] Finish sprite batches
+ - [ ] Basic font rendering
+
+ I don't know of any freetype bindings for Guile, so maybe basic
+ fixed-width bitmap font support will be all that is possible for
+ now.
+
+ - [ ] Resolve issues with FIGL
+
+ Can't have a broken dependency.
+
+ - [ ] Texinfo documentation
+ - [X] Autotools build files