1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
# -*- 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.
- [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
- [ ] 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 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
- [ ] Autotools build files
|