||[Aug. 18th, 2008|04:22 am]
Spectre Gruedorf Challenge Blog
Behold: the official Spectre TODO before we get to 1.0. Jesse claims we're at about 0.5 right now, so that's not bad. But he may just be talking about SLED.|
This list, emphatically, does NOT include anything specific to Perseus/CF.
- Math class cleanup.
- Console rendering is slow as molasses. This should be fixed.
- Memory mgmt. class.
- BitDelta class
- More geometry classes and functions. (Sphere, Box, Plane?)
- Interface for exporting game object state and global object state to/from HD.
- Finish GameObj serialization across the network.
I think taking some ideas from Squeak here may be helpful. How atomic can we make the game state, and how atomic will Ruby let us make it?
The following need to be ported to the new importer interface:
- Maya .mb importer for models
- Maya .mb importer for animations
The following need to be written still:
- COLLADA plugin
- Move image loading to STB from SDL_Image. Possibly support both and then have an #ifdef.
- Revamp rendCamera class to suck less.
- rendCamera: scene render target?
- rendCamera: postprocess filter(s) need to be finished.
- Build renderer profiling system for tracking useful information (# of shaders/frame; presence of allocation of GL objects, # of triangles, amount of texture memory, etc.)
- Finish shadow map implementation.
- Finish VSM implementation.
- Finish various things related to dot product bump mapping.
- Lighting cleanup.
- GPU skinning for models.
- Skeletal animation: why are we still using matrices for deformation? Time to get quaternions in there.
- Fonts: need a pretty printer for hyperformatted text, paragraphs, centered rendering, etc. All of this exists in Dredmor and just needs to be moved to OpenGL.
- Port portal code to the new scene layer.
- Tri-stripping and local vertex cache optimization of everything that goes through the renderer. Seriously.
- Transparent materials. Ugh, barf.
- Decals should be first-class citizens.
- Do it.
- Finish editor.
- Add support for more forces
- Add support for sorting (optional)
- Merge John Ratcliff's convex hull generation stuff into the SLED model editor.
- Better triangle meshes for world physics.
The majority of work really, REALLY needs to be done on tools.
- Write better version of rubyObject wrapper class that handles inheritance properly.
- Export rendObject hierarchy to Ruby.
- GC mark/tag for renderable objects.
- Export some control over physics layer.
- Export UI hooks.
- Network events? (Questionable.)
- Better debugging facilities: SOME sort of debugging facilities, at least.
- Reload of broken Ruby code from the hard disk.
- Cleanup of interpreter. Figure out how this works, make it happen.
The bulk of the work is, STILL, SLED. I swear, it feels like all I do is work on the fucking level editor.
- SLED default plugins should be called first, before other game-specific plugins. Use a singleton-esque device here so that if you call a plugin init before the default plugin inits, the default plugin inits get called first.
- Texture cache. Either we manually import textures into the editor and maintain the cache that way, or we set up a thread to do monitoring of file changes, cacheing of thumbnail images, etc.
- GC for SLED textures.
- Move the good bits of the CF/Perseus terrain code into SLED terrain. Port tools. Remove any references to our weird oblique height system, allow for splits, get rid of the welder, and add SVT support as the second terrain painting option.
- Make decal system general purpose on SLED geometry.
- Display modes for viewport geometry.
- Undo stack and Jesse's 'fader' tool.
- Implement groups.
- Implement locking.
- Implement Select All/Select None/Invert Selection. (Q.: are these ever useful for things other than objects?)
- Brick hotloading. (Not implemented.)
- Texture hotloading. (Should work. Doesn't.)
- All JIT editing stuff.
- All those stupid little windows should be consistent, and should be converted to be floating/dockables.
- Grid views: should be able to toggle between "grid size is fixed" and "grid size is tied to zoom size"
- Brushes: fix CSG operations, write decent T-junction detection and merge algo.
- Brushes: knife, bandsaw
- Brushes: operations on vertices, edges (rotation, translation, scale, etc.)
- Brushes: lasso tool
- Brushes: texturing ops.?
- Brushes: spline extrusion
- Radio buttons
- Simple list
- Pop-up helper thingies. They have a name, I can't remember what they are.
- Fix tab selection order.
- Complete input box reworking: selection of text, cursors, and support for the various key-movement-shift-thing combinations.
- make it as good as I can with whatever time and energy I have left. (I don't have a good specific idea of what needs to be done here.)