| The Enzyme World Creation Suite and 3D Game Engine |
| Milestone 3 to Milestone 4 |
In which the Indoor Level Editor graduates from neat toy to useful tool with the addition of level saves, textures, lights, and sub-object manipulation. |
| 1 |
User Settings Screen |
Clean up the User Settings Screen |
Remove test items such as fonts and edit boxes, fix the screen layout |
          |
100% |
| 2 |
Project Screen |
Indoor Level Editor Button interferance with the new project name input box |
fix interference |
          |
100% |
| 3 |
Indoor Level Editor Screen |
Alternate camera zoom |
Keyboard input to move camera forward and backward |
          |
100% |
| 4 |
Indoor Level Editor Screen |
Selection Order |
Current selection order is not working properly. Fix. |
          |
100% |
| 5 |
Indoor Level Editor Screen |
Depth Buffer |
Add a depth buffer such that solid blocks are drawn in the correct order |
          |
100% |
| 6 |
Project Screen |
Editor Buttons turned off if there is no currently active project loaded |
Shouldn't be able to enter an editor without a project |
          |
100% |
| 7 |
Project Screen |
Turn off all except active editor button |
When an editor button is pressed, all other buttons should be turned off |
          |
100% |
| 8 |
Project Screen |
Display indoor level list in selection box |
Upon selection of the level editor button, display a list of all existing levels for the current project |
          |
100% |
| 9 |
Project Screen |
Cancel option |
Upon selection of the level editor button, display cancel button to back out and re-enable the editor buttons |
          |
100% |
| 10 |
Project Screen |
New Level option |
Upon selection of the level editor button, display New Level to allow user to create a new level. |
          |
100% |
| 11 |
Project Screen |
New Level Name |
Upon selection of the level editor button and creation of a new level, allow the user to name the new level. Validate the new name |
          |
100% |
| 12 |
Project Screen |
Rename Level option |
Upon selection of the level editor button, display Rename button to allow the user to rename an existing level |
          |
100% |
| 13 |
File Handling |
Save Level List in Project File |
When creating a new level or renaming an existing one, update the project file to include new data |
          |
100% |
| 14 |
File Handling |
Load Level List |
When loading a project file, load the indoor level list |
          |
100% |
| 15 |
Indoor Level Editor Screen |
Display project and level name |
Show the project and level name at the top of the information boxes (next to the close button) |
          |
100% |
| 16 |
Indoor Level Editor Screen |
3D Camera Rotations |
Use Quaternions to rotate 3D camera (Yaw, Pitch, and Roll) while avoiding Gimbal Lock |
          |
100% |
| 17 |
Indoor Level Editor Screen |
Material Adjuster |
Upon an object selection, give the user an interface that allows them to adjust the material parameters for the object |
          |
100% |
| 18 |
Indoor Level Editor Screen |
Save Button |
Save the level button |
          |
100% |
| 19 |
File Handling |
Save level |
Upon save push, save the level geometry to file in player directory. Also save camera positions etc to file in project directory |
          |
100% |
| 20 |
Indoor Level Editor Screen |
Face Selection |
Allow user to select individual faces rather than an entire object |
          |
100% |
| 21 |
Indoor Level Editor Screen |
Face Movement |
Move a face along it's normal or perpendicular to it's normal (e.g. along it's plane) |
          |
100% |
| 22 |
Indoor Level Editor Screen |
Chord Selection |
Allow the user to select a chord (a line between two vertices) rather than an entire object |
          |
100% |
| 23 |
Indoor Level Editor Screen |
Chord Movement |
Move a chord (by moving it's two vertices). Be careful to check any vertices that share the same space on the same object and move them as well |
          |
100% |
| 24 |
Indoor Level Editor Screen |
Vertex Selection |
Allow the user to select individual vertices. Verts on the same object that share the same space should be counted at a single vertex |
          |
100% |
| 25 |
Indoor Level Editor Screen |
Vertex Movement |
Move a vertex. Be careful to check any vertices that share the same space on teh same object and move them as well |
          |
100% |
| 26 |
Indoor Level Editor Screen |
Object Triangulation |
Triangulate objects when created or when faces, chords or verts are changedTriangulate objects upon push of Triangulate button. |
          |
100% |
| 27 |
Indoor Level Editor Screen |
Vertex cache |
Precreate a vertex list after triangulating objects for better performance |
          |
100% |
| 28 |
File Handling |
Save vertex cache data |
When saving level, save the pre-cached triangulation data to player directory |
          |
100% |
| 29 |
Indoor Level Editor Screen |
New Chord Creation |
Allow user to create a new chord by selection of two vertices |
          |
0% |
| 30 |
Indoor Level Editor Screen |
New Vertex Creation |
Allow user to place new vertex on any existing chord |
          |
0% |
| 31 |
Indoor Level Editor Screen |
Texture Selection interface |
Upon selection of an object or face, show texture selector (large picture) |
          |
0% |
| 32 |
Indoor Level Editor Screen |
Used Texture Selection interface |
Show all textures that have been used for this level and allow them to be selected for the current object |
          |
0% |
| 33 |
Indoor Level Editor Screen |
Browse for new textures |
file browser for new textures, showing bitmaps |
          |
0% |
| 34 |
Indoor Level Editor Screen |
Assign texture to object or face |
Show the texture for the object or face in the build area |
          |
0% |
| 35 |
File Handling |
Save texture data |
object and face textures should be saved in the player directory |
          |
0% |
| 36 |
Indoor Level Editor Screen |
TU and TV adjuster |
Upon selection of a vertex, show texture position modifier interface and allow the point to be moved around |
          |
0% |
| 37 |
Indoor Level Editor Screen |
Light control |
Modify second side box to be a light control, move other controls out |
          |
0% |
| 38 |
Indoor Level Editor Screen |
Tab for selection of ambient light or point light control |
change interface box as appropriate |
          |
0% |
| 39 |
Indoor Level Editor Screen |
Ambient Light Color Control |
In addition to the master light control, add controls for individual colors (RGB) as well |
          |
0% |
| 40 |
File Handling |
Save ambient light data |
Save amibient light parameters in player file |
          |
0% |
| 41 |
Indoor Level Editor Screen |
Point light model |
create a model for point lights |
          |
0% |
| 42 |
Indoor Level Editor Screen |
Add a checkbox for show/hide point light models |
interface for displaying the point light model at position |
          |
0% |
| 43 |
Indoor Level Editor Screen |
Show point light models |
display the point light models, use appropriate material values |
          |
0% |
| 44 |
Indoor Level Editor Screen |
Point light selection box |
display a selectable list of all point lights |
          |
0% |
| 45 |
Indoor Level Editor Screen |
Add point light |
Add a point light at the current active camera location |
          |
0% |
| 46 |
Indoor Level Editor Screen |
Point light statistics |
Show location and material statistics for currently selected point light |
          |
0% |
| 47 |
Indoor Level Editor Screen |
Highlight selected point light |
In build area, if point light models are shown, highlight the currently selected light (wireframe box) |
          |
0% |
| 48 |
Indoor Level Editor Screen |
Point light deletion |
delete the currently selected light |
          |
0% |
| 49 |
Indoor Level Editor Screen |
Point light move |
Move the point light via drag |
          |
0% |
| 50 |
Indoor Level Editor Screen |
Point light sliders |
Add sliders for point light parameters (specular, intensity, color, etc). |
          |
0% |
| 51 |
Indoor Level Editor Screen |
Adjust point light statistics |
upon change of slider, change the statistis of the light |
          |
0% |
| 52 |
Indoor Level Editor Screen |
Point light material |
change the point light model material to reflect the positions of the sliders |
          |
0% |
| 53 |
File Handling |
Save Point light data |
Save the point light data in the player file |
          |
0% |
| 54 |
Misc |
Miscellaneous tweaks and minor bug fixing |
Whatever comes up |
          |
0% |
| --------------------------------------------------------------------------------------------------- |
| Milestone 2 to Milestone 3 |
In which the world gets its structure from the indoor level editor, which takes its first baby steps into the world. Also, we let the user know when something goes catastrophically wrong instead of keeping it a secret. |
| 1 |
Base Graphics |
Catch the window resize messages and rebuild graphics using the new resolution |
When the window is resized from its current size, rebuild the graphics to fit to the new resolution. Otherwise they get blurry as the resolution changes |
          |
100% |
| 2 |
User Interface |
Message Box Class |
Background, message text (text box class), okay button |
          |
100% |
| 3 |
User Interface |
Add a Message Box to the Directory Crawler Class |
For general use during directory and file operations |
          |
100% |
| 4 |
User Interface |
On file or directory error in Directory Crawler, display Message Box (modally) with relevant error message |
Invalid drive (e.g. CD drive with no CD in it), read error, and so on |
          |
100% |
| 5 |
Project Screen |
On opening of project file, validate the file |
Make sure we really opened an Enzyme project file |
          |
100% |
| 6 |
Project Screen |
Project File validation error |
If project file not validated, display Message Box with relevant error message |
          |
100% |
| 7 |
Project Screen |
Project file validation warning |
If project file is out of version synch with Enzyme current version, display Message Box and let the user know the file will be updated to current version |
          |
100% |
| 8 |
Project Screen |
Enable the Level Editor (Indoor) button on the Project Screen. |
Set up the button for use. Our first editor! |
          |
100% |
| 9 |
Indoor Level Editor Screen |
Basic setup of Level Editor (Indoor) screen |
Keyboard and mouse handling, escape back to Project Screen, background drawing (probably straight black(?), and so on |
          |
100% |
| 10 |
Indoor Level Editor Screen |
Divide screen into two sections |
One for building area and one for control panel (small strip along bottom and possibly right side). Keep building area as large as possible |
          |
100% |
| 11 |
Indoor Level Editor Screen |
Add Exit button |
Return to Project Screen |
          |
100% |
| 12 |
Indoor Level Editor Screen |
Add Text Box to Level Editor (Indoor) screen |
For display of hints, strip along bottom of screen (one line, we'll have to keep the hints very short) |
          |
100% |
| 13 |
Indoor Level Editor Screen |
Add two buttons for selection of 1 or 4 panel build area |
Exclusivity as per radio buttons, but we need an image |
          |
100% |
| 14 |
Indoor Level Editor Screen |
Add separatory lines for 4 panel build area. |
Center line meeting point in build area. 3-5 pixels thick. Remove on selection of 1 view build area |
          |
100% |
| 15 |
Indoor Level Editor Screen |
Cursor change when over the separatory lines |
Need left/right, up/down, or 4 arrow cursor. Use default window cursors for this |
          |
100% |
| 16 |
Indoor Level Editor Screen |
Move separatory lines upon drag |
Move the meeting point of the lines as appropriate. Limit to 1 pixel size for width and height of individual build areas |
          |
100% |
| 17 |
Indoor Level Editor Screen |
Set up four cameras |
One for each possible panel. Set to top, 3D, front, and right views (all wireframe) for now. Center on origin |
          |
100% |
| 18 |
Indoor Level Editor Screen |
Background color of build panels. |
Probably blue? |
          |
100% |
| 19 |
Indoor Level Editor Screen |
Selection of particular panel with a 4 panel build area upon mouse press |
Slightly changed background color |
          |
100% |
| 20 |
Indoor Level Editor Screen |
Draw grids in build panels |
Scale grids to current zoom level and remove grid lines that get too close together |
          |
100% |
| 21 |
Indoor Level Editor Screen |
Zoom in or out on mousewheel movement |
Move cameras along appropriate axis depending on the current view. Zoom the currently selected build panel. Panning with right mouse hold |
          |
100% |
| 22 |
Indoor Level Editor Screen |
Set up control section for each panel on the control panel. |
Four control sections. Turn off three of them when selecting one view build area |
          |
100% |
| 23 |
Indoor Level Editor Screen |
Highlight the control section for currently selected panel. |
White border? |
          |
100% |
| 24 |
Indoor Level Editor Screen |
Display Grid scale on control section (where 1 is full zoom in, x is full zoom out) |
Zoom: x |
          |
100% |
| 25 |
Indoor Level Editor Screen |
Set up view selection on control section |
Drop down box for selecting view type for that build area, types to include: top, bottom, right, left, front, back, 3D |
          |
100% |
| 26 |
Indoor Level Editor Screen |
Mark origin in build panels with red diamond wireframe |
Just what it says |
          |
100% |
| 27 |
Indoor Level Editor Screen |
Set up check boxes in control sections to turn off origin marker and grid in build panels. |
Two check boxes |
          |
100% |
| 28 |
Indoor Level Editor Screen |
Create a section on the control panel for an object palette. |
An area where the user will get to select what they are going to work with |
          |
100% |
| 29 |
Indoor Level Editor Screen |
Add Structural Block to object palette as a button |
This will be the first (and for now the only) button on the object palette. Set up as a push button with an image (box) and set to pushed |
          |
100% |
| 30 |
Indoor Level Editor Screen |
On Left Mouse Down in selected build area, snap to closest grid point |
The closest grid point AS SHOWN on the screen. Hidden grid points due to zoom are not considered. Hidden grid points due to having the grid off are considered as normal |
          |
100% |
| 31 |
Indoor Level Editor Screen |
Create a statistics area in the control panel |
This will show statistics about the currently selected object |
          |
100% |
| 32 |
Indoor Level Editor Screen |
Show current location and currently selected object type in statistics area |
X, Y, Z point (the origin point set to where a drag begins) and what it is (can only be a structural block for now) |
          |
100% |
| 33 |
Indoor Level Editor Screen |
On mouse drag, create a temporary structural block |
Show its statistics (location, width, height, etc) in the statistics panel. Default position and size for non-controllable dimension (e.g. height when creating a wall in the top view). Show as a wireframe in all views |
          |
100% |
| 34 |
Indoor Level Editor Screen |
On Left Mouse Up, validate the structural block (no 0 dimensions) |
If validated, assign a unique name to the block and make the block the selected object |
          |
100% |
| 35 |
Indoor Level Editor Screen |
Show all current structural blocks as wireframes in all views |
Now show all blocks created, not just the one BEING created |
          |
100% |
| 36 |
Indoor Level Editor Screen |
On shift-click, select closest wall to pick-ray |
If a wall is already selected and is in the pick-ray, select the next wall back. If there is no next wall back, select nothing. If there is no wall in the pick-ray, deselect all |
          |
100% |
| 37 |
Indoor Level Editor Screen |
Display statistics of currently selected wall |
Update the statistics display when a new object is selected |
          |
100% |
| 38 |
Indoor Level Editor Screen |
Highlight currently selected wall |
different wireframe color |
          |
100% |
| 39 |
Indoor Level Editor Screen |
Add a Delete button which deletes currently selected wall and sets selection to none |
Allow delete key to perform same function |
          |
100% |
| 40 |
Indoor Level Editor Screen |
Add deselect button to control panel to deselect all |
Allow Control-D as same function |
          |
100% |
| 41 |
Indoor Level Editor Screen |
On mouse drag, if a wall is selected and the drag starting point is over the selected wall, move it rather than creating a new wall |
Change the origin and update statistics display |
          |
100% |
| 42 |
User Interface |
Slider bar class |
Very similar to scrollbar class, Probably only need a slightly different graphic |
          |
100% |
| 43 |
Indoor Level Editor Screen |
Create a Caulk texture |
Bright pink with yellow striped border. Should be very easy to spot (on purpose!) if accidentally left in a level |
          |
100% |
| 44 |
Indoor Level Editor Screen |
Set all structural block textures to Caulk texture |
This will be the default. Caulk texture should never get transferred to the Player Directory |
          |
100% |
| 45 |
Indoor Level Editor Screen |
Add wireframe and texture mode buttons to control sections |
Exclusivity as per radio buttons, make these push buttons with images |
          |
100% |
| 46 |
Indoor Level Editor Screen |
Draw blocks as wireframe or textured depending on button used |
The texture will be Caulk. Levels will be very bright at this point! |
          |
100% |
| 47 |
Indoor Level Editor Screen |
Add ambient lighting slider bar to control panel and adjust ambient light based on input |
Textured views only, this should have no effect on wireframe views |
          |
100% |
| 48 |
Misc |
Miscellaneous tweaks and minor bug fixing |
Whatever comes up |
          |
100% |
| --------------------------------------------------------------------------------------------------- |
| Milestone 1 to Milestone 2 |
In which we put together the project screen, handle a couple more user interface classes, and fix a font issue |
| 1 |
Project Screen |
Project Screen Backgrround |
Set up and draw the screen background. Stub in all the mouse and keybaord handle routines |
          |
100% |
| 2 |
Project Screen |
Add Quit Button |
Put in a quit button, exit on press |
          |
100% |
| 3 |
User Interface |
Constant Text Size |
Text takes up different amounts of screen real estate depending on the screen resolution. Fix this so that the text always takes up the same space no matter what the resolution |
          |
100% |
| 4 |
Project Screen |
New Project Button |
Add button and stub to a directory crawler upon press |
          |
100% |
| 5 |
User Interface |
Directory Crawler Class |
Select directory or file (depending on flag setting), allow creation of new directory, select button, new directory button, cancel button |
          |
100% |
| 6 |
File Handling |
Engine File Copy |
Upon successful New project, create subdirectory structure and copy core engine files to selected directory. Create a project file. Disallow new project if a project file already exists in this directory |
          |
100% |
| 7 |
User Interface |
Progress bar class |
Text colors, titles, bar drawing, update of percent complete, total for completion, okay and cancel button |
          |
100% |
| 8 |
Project Screen |
Add progress bar for new project file copy |
Update progress bar, handle cancel, handle completion |
          |
100% |
| 9 |
Project Screen |
Save Project Button |
Add button and save project data upon press (not much to save at this stage). NO directory crawler |
          |
100% |
| 10 |
File Handling |
Project File |
Add entries to project file based on keywords. Write and Read file |
          |
100% |
| 11 |
Project Screen |
Load Project Button |
Add button. Enter directory crawler and read project file upon selection |
          |
100% |
| 12 |
Project Screen |
Add Editor Buttons |
Add buttons to enter sub-sections of the program. Level editor, Particle editor, Skin editor, Shader editor, Script editor, Model editor, Generator editor, Container editor, Item editor, NPC editor, Sound editor, Movie editor, Player editor, UI editor. Disable all buttons at this stage. |
          |
100% |
| 13 |
User Interface |
Text Box class |
Similar to an editor box, except read only and multiple lines. Auto break text between words |
          |
100% |
| 14 |
Project Screen |
Add Text Box to Project Screen |
Upon hover, give instructions / hints as appropriate |
          |
100% |
| 15 |
User Settings Screen |
Add Text Box to User Settings Screen |
Upon hover, give instructions / hints as appropriate |
          |
100% |
| 16 |
Project Screen |
Recent Projects list |
Add recent projects to file. Load file upon start |
          |
100% |
| 17 |
Project Screen |
Display Recent Projects on Project Screen. |
Allow selection of recent project or load of a non-listed project |
          |
100% |
| 18 |
Project Screen |
Auto Load most recent project |
Load the last project worked on when entering Project screen from User Settings Screen |
          |
100% |
| 19 |
Misc |
Miscellaneous tweaks and minor bug fixing |
Whatever comes up |
          |
100% |
| --------------------------------------------------------------------------------------------------- |
| Milestone 0 to Milestone 1 |
In which we set up basic windows, some initial file handling, Direct3D, DirectInput, fonts, and a lot of things to do with user interfaces |
| 1 |
Windows |
Basic Windows Initialization |
Master window registration and creation, message pump, standard window message handling, exit key (escape) functionality |
          |
100% |
| 2 |
User Interface |
Interface Manager Class |
Control instances of specific screen classes, channel screen dispaly control, handle global input, channel non-global input to specific screens, set initial screen to D3DSettingsSelectionScreen |
          |
100% |
| 3 |
Input |
Keyboard Input |
Direct Input Initialization, keyboard buffering, repeat key timer, use DI for exit key (escape) instead of windows message |
          |
100% |
| 4 |
Logging |
Error Logger |
Get DirectX error if appropriate, notify user if error is fatal, log to file, post a quit messsage if error is fatal |
          |
100% |
| 5 |
Input |
Mouse Input |
Use windows messaging to control mouse movement and button pressing, channel input to correct screen handler through interface manager class |
          |
100% |
| 6 |
Base Graphics |
Direct 3D Initialization |
Initialize Direct 3D, hardware enumeration |
          |
100% |
| 7 |
Base Graphics |
Texture Class |
Name, Width, height, UV coords |
          |
100% |
| 8 |
Base Graphics |
Texture Management Class |
Control of texture loading and unloading, reference count textures, return pointer to texture address |
          |
100% |
| 9 |
User Settings Screen |
D3DSettingsSelectionScreen Class |
Request background texture, display background texture, handle keyboard input (escape key to exit), stub for mouse input |
          |
100% |
| 10 |
User Interface |
FontManager Class |
Handle instances of fonts, handle text dispaly requests by chanelling to font class |
          |
100% |
| 11 |
User Interface |
Font Class |
Create font, destroy font, display text |
          |
100% |
| 12 |
User Interface |
StaticText Class |
Text, location, font name, display function (channeled to font manager) |
          |
100% |
| 13 |
User Settings Screen |
Add StaticText to D3DSettingsSelectionScreen |
As appropriate |
          |
100% |
| 14 |
User Interface |
Radiobutton Class |
Request three graphic textures (selected, unselected, disabled), arbitrary number of selections, default value, selection on graphic or text, font style |
          |
100% |
| 15 |
User Settings Screen |
Add radiobutton selection to D3DSettingsSelectionScreen (windowed or fullscreen) if supported by current adapter settings |
Request two graphic textures, arbitrary number of selections, default value, detection of click, selection on graphic or text, font style |
          |
100% |
| 16 |
User Interface |
Button Class |
Request up to four graphic textures (unpressed, pressed, disabled, hovering), text and font, detection of click |
          |
100% |
| 17 |
User Settings Screen |
Add two buttons to D3DSettingsSelectionScreen (Okay and Quit) |
exit on quit, use selected D3D settings and change interface to project screen on okay |
          |
100% |
| 18 |
Project Screen |
Project Screen program shutdown |
exit on escape key |
          |
100% |
| 19 |
User Interface |
Scroll bar class |
request graphic textures, horizontal or vertical, location of widget, default settings, click detect, widget movement |
          |
100% |
| 20 |
User Interface |
Selection Box class |
request graphic, fonts, members, list of member, highlight of selected member, scroll bar class |
          |
100% |
| 21 |
User Interface |
Edit Box class |
request graphic, font, text, click detect, cursor and cursor movement, control keys |
          |
100% |
| 22 |
User Interface |
Drop Down Selection Box class |
request graphics, default value, selection box on arrow click, selected member |
          |
100% |
| 23 |
User Settings Screen |
Add selection boxes to D3DSettingsSelectionScreen |
adapter, texture mode, screen settings, adjust possible options on changes |
          |
100% |
| 24 |
File Handling |
On Okay button press, write settings file |
send to file if and only if settings have changed from read file |
          |
100% |
| 25 |
File Handling |
Before entering D3DSettingsSelectionScreen, read settings file |
parse file, validate settings, default to basic settings if no file exists |
          |
100% |
| 26 |
Misc |
Miscellaneous tweaks and minor bug fixing |
Whatever comes up |
          |
100% |