[Contact] [Contributions] [Downloads] [FAQ] [Forum] [Links] [Main] [News] [Project Page] [Status] [Website] [Wiki]

[Action] [Asteroids] [Audio] [Colorizer] [GUI] [Hierarchy] [Input] [Math] [Media] [Physics] [Plugin] [Timer] [Video/Modeler]

The Status Page

For all your status needs!

License: LGPL (license.txt)

    Welcome to the Deimos Project's Status page, where you can see how far along the project is and have a look at some of my current goals.

To Do List:
    My to do list for this project can be found here.  This will tell you what small changes are likely in the short-term future, such as the next couple of versions.

Current Status:
    Right now, The Demios Project is just a collection libraries and a few applications (the modeler) for game development.  They're getting better all the time and I'm working on a 3D Asteroids clone, but it's nowhere near complete; I'm hung up on some obscure physics programming (inertia tensors, email me if you know of a good web resource to explain this simply).
    The modeler is functional and produces beautiful models that can be textured AND painted.  Most modelers I've seen consider this the same thing (they use textures alone), but OpenGL is capable of both at the same time.
    In the table below, the % Complete column tells you how much work I have left to do on the library/application before the Asteroids clone will be complete enough for an initial Demo version.  Exceptions to this are noted.  The Remaining Tasks column tells you what I have left to do in my queue of tasks to work on before I'll consider the library/application totally complete; these lists just keep getting longer and longer as I have new ideas.  Each task is also marked with a [want] or [need] flag indicating if they are needed for the Asteroids demo.  Some are marked with [uncertain], indicating that I'm still mulling the idea through my head.
Component
% Complete
Remaining Tasks and Notes
Timer
100%
Add a way to force time to come in steps for real-time clocks [want]
Scheduler class (EventListener based?) [want]
Hierarchy
100%
As much as I HATE JDBC, I really should Implement a JDBCHierarchy class; others will want it [want]
Transaction support for SynchronizedHierarchy [uncertain]
Document everything [want]
API documentation touch-ups [want]
Audio
40%*
StreamSource should be URLSource or FileSource; give constructor a buffer size argument [uncertain]
StreamingSource would take an InputStream and run through it once (could be used for internet radio or something) [want]
DopplerFilter class [want]
Other possible filters [want]
Synthesize sfx at first run or during install [uncertain]
BufferManager, analogous to Modeler's TextureManager [want]
Video/Modeler
100%
Add variables for View properties to Context [want]
Dynamic Lighting (enable only those lights that make a contribution to the visible part of the scene; allows more than 8 lights) [want]
Add a LightBulb implementation of Visible (Simple Sphere with an emmisive color, attached to a Light object) [want]
Merge video classes from action library into modeler; make modeler require action library [want]
Add support for fog [want]
Add VolumetricFog class [want]
Combination View3D with a View2D overlay; could be called ViewOverlay [want]
Texture-based SplitScreenRenderer extension [uncertain]
Finish MotionBlurProcessor; may require building it as a View [want]
Post-processing View; this will make motion blurring possible for individual Views [want]
ViewOrtho class [want]
Plasma Fractal BufferedImage producer [want]
ModelCombiner class [want]
Public Texture class [want]
OpenGL user interface toolkit (new sub-project?) [want]
Java Swing on a Texture system [want]
Use GUI lib's GameWindow? [uncertain][want]
    Move GameWindow into modeler's lib? [uncertain]
Model Packer application (different jar file?) [want]
PreProcessor [want]
SkyBox [want]
StarField (texture based?) [want]
Picking support (needed for Colorizer) [want]
Document configuration file [want]
Clean up comments related to Drawable [want]
Other model formats for import and export [want]
Action
100%
Multi-Threading support; will require synchronization for alot of things [want]
Make Action class network ready [uncertain]
Add classes for building animated videos [want]
    Animated GIFs [want]
    Export video through JMF or FMJ [want]
Colorizer
N/A*
Model Packer as part of colorizer [uncertain]
Implement Picking [need]
Vertex Painter [want]
Segment Painter [want]
Coloration editor [want]
2D/3D Texture Painter, ala the Sims Creator; also allow texture coordinate assignment [want]
GUI
N/A**
HierarchyEditorPane, based on JTree [want]
    Plan A: Make Hierarchy implement the javax.swing.tree.MutableTreeNode interface.
    Plan B: Build a class called HierarchyTreeNode and use it to wrap a Hierarchy.
    Plan C: Make the TreeNode/Model/Whatever immutable, but listen for selection and provide a space to edit values in, directly affecting the Hierarchy and triggering a repaint.
StopWatchPanel [want]
Math
100%
Figure out a reasonable hash code for Matrix3 and Matrix4 [want]
Fixed point support (probably not going to happen; slowmath) [uncertain]
BigDecimal support (may have to settle for using Java 5 features, such as MathContext; slowmath) [uncertain]
Methods to produce arbitrary precision values for PI and e (slowmath) [uncertain]
Input
65%
Flight control systems (robot package) [need]
Replace Condition with Hierarchy? [uncertain]
Remote Input system, using JInput [want]
Thin Client system? [want]
Testing with odd controllers, especially a head tracker [want]
Asteroids
1%
Damage system (for asteroids and ships) [need]
Prepare a separate installer-based release when the game is functional [need]
Web Start installer/loader [want]
Random Asteroid Generator (requires plasma fractal generator) [want]
Inertia damper system (real men don't need interia dampers!  I'll explain later, hehe) [want]
Plugin
100%*
Add support for native libs [uncertain]
    Native lib inside jar system; unpacked as needed, deleted on exit [uncertain]
        Create wrappers for all libraries [uncertain]
Installer system [uncertain]
    Filesets for each platform
Physics
70%
Multi-Threading; allows fully using newer multi-core processors [want]
Rotational Physics [need]
Physical interface holds references to more than one PhysicalObject? (Would simplify particle systems) [uncertain]
Pluggable collision detection parts:
    Hollow Sphere? [uncertain]
        Allows filling with smaller stuff - hrm?
    Triangle-Triangle [want]
    Triangle-Sphere [want]
    Plane-Plane [want]
    Plane-Sphere [want]
    Plane-Triangle [want]
Pluggable collision handling [need]
    CollisionHandler interface [need]
        Tags for objects ala SphereCollisionTag [need]
    JoinCollision; objects become one [uncertain]
    DestroyCollision; objects vanish [uncertain]
Octree optimization for collision detection [want]
Attractive/repulsive forces
    SimpleGravity where objects fall down (-z direction), like people would expect [want]
    Magnetism [want]
    Polar Magnetism [want]
    Electomagnetism [want]
Media
30%*
getComponent() method in VideoPlayer; if null, this means there is no Java Component and the video plays in it's own window; if the component isn't added to anything, then it will still do this [want]
Support video color parameters [want]
JMFPlayer [want]
VLCPlayer [want]
*    Indicates the library is not required for the first version of the Demo and the percentage is a measure of general goal completeness.
**  The GUI sub-project gets features added as-needed and therefore has no major goals associated with it.  I can't make a proper estimate as to how complete it is because I have no idea if I'm even going to add anything else.

Need to do Priority List (minimum for VERY simple asteroids demo):
Simple physics with objects
    Rotational physics is required
    The only required forces will be engine and control thruster output
        I'm going to throw in gravity anyway (asteroids will have microgravity); it's just so easy to do and is already done
Flight control system
Damage system
    Anything striking ship destroys it
    Anything striking asteroid splits or destroys it
    Investigate simultaneous collisions and the slide-through bug (when a light object hits two heavier ones and slides inside them (may be caused by faulty collision detection, Z fighting at the OpenGL level or even be a matter of perspective).  The file scenes/Bounce2.java will demonstrate this bug.
    Fix the resting collision bug; scenes/Resting.java demonstrated this bug.

Want to do Priority List:
    Radar system (so you can see them coming!)
    Proximity alarm system (tone-based; changes in tone indicate distance to nearest object)
        Attached to Radar system?
        Generate tone with audio library's synthesis tools; a simple tone like this shouldn't take too much processor time
            Pre-generate multiple versions with various settings instead?
        Can also pre-generate tone and alter pitch with OpenAL; sound quality will be lower
        Continuous tone (pitch changes as needed)
        Buzzing tone?
        1/2 to 1/4 second interval tone (pitch changes as needed)
        Variable interval tone (constant pitch, interval changes)
        Up-down tone of the old Atari; speed varies according to danger level (Would this get me sued?)
    Damage to systems could cause white noise and/or other sounds to replace default system sounds
        Random sparks of static?
    Fix SphereCollisionDetector to base it on acceleration, instead of change in position
    Fix theoretical "infinite collision" bug as a bouncing object gets closer and closer to another object

Future Plans (Broad Scope):
    Interactive fiction system.  Act-based, like a play.  Perhaps chapter-based, like a book (this has the advantage of not confusing Action, Actor and Act).  This metaphor is consistent with the Action library.  I could even call them Pages instead of Acts or Chapters...

Asteroids Ideas
    Folded space cube; asteroids come from outside.  Letting them pile up gets you killed.
    Teleporter.

Main Game Ideas
    Extra screens used for status displays.  Extra computers can be used for these via a simple thin client (applet/application) or through VNC (I've used a Java VNC library that would work nicely).  My Pepper Pad could be used like a central console display.
    Control displays should be displayable using Java2D or OpenGL, but they need not look the same.
    Secondary screens could also be used for alternate views (rear view mirror anyone?).
    Use alternate configurations for 16:9 modes; never assume the screen is 4:3.
    Primary - Normal game stuff, scene, HUD, etc.
    Secondary - Directly connected screens; alternate views, useful for side and rear-view mirrors.
    Networked - Status displays.

Version Road Map (Rough Milestones):
    Next Version?: Rotation controlled camera for modeler and/or physics simulator, based on mouse dragging.  Start work on the colorizer, picking and model packer.  Add a Creative Commons license stamp to the web pages.
    Add the ability to lock objects in place (treat like infinite mass?).
    Version 1.0: Working 3D asteroids clone with most of the trimmings, including physics, randomly generated asteroids, cockpit HUD (includes targeting system), radar, simple sound, starfield backgrounds, inertia dampers (useless, feeble garbage!), etc.  Game play will be very similiar to full game, but only includes fighter vs. asteroid combat.
    Version 1.1: Add UFOs.
    Version 1.2: Add multiplayer support (multiple players on same machine).  Show your friends how useless inertia dampers are!  Like I keep saying, "Real men don't need inertia dampers!"
    Version 1.3: Add networking support (multiple players on multiple machines).
    Version 1.5: Realistic damage system: armor and hull rated in joules of energy they can absorb.  Armor absorbs damage without affecting systems.  Hull absorbs damage, but systems are affected, too.  Give asteroids hull ratings that determine when they split and/or are destroyed.  This system should be extendable to any kind of game where things can be damaged.  All objects should be damageable in any game where things are damageable.  How much energy an object absorbs in a collision is determined by it's coefficient of restitution.  Allow switching back to the original damage system if desired.
    Version 1.6: Shield mechanics; similiar to 1.5's armor and hull system, only shields can regenerate and take damage before armor and hull, plus they make pretty auras around ships when they're hit.  I may include other types of shields as well; fiction is full of many different varieties.  Shields may alter an object's coefficient of restitution; absorbing some energy and the rest becomes motion.
    Version 2.0: Working demo version of the full game with complete interactive fiction system.  Mission parameters may be set by the simulation, or by the player, depending on mode of play.  Recordings for pilot voices (my voice and others if I can find people; perhaps my friends will help).  Music in OGG format (custom music?)
    Version 2.5: Addition of planets with smooth transitions to atmospheric flight.
    Version 3.0: Branch out into supporting other types of games/mini-games.  Adventure games, first-person-shooters and 2D scrollers come to mind (but all still very 3D-based; I'm not drawing any sprites).  Update the game to include the ability to walk around inside the ship and on alien planets.  Update game to include ground combat; most likely as a FPS.  Deus Ex-style talking scenes would be cool.
    Version ?.?: Artificial life experiment; requires writing a processor emulator of some kind.

Development System:
    For those who are curious, here's what I've been developing this on:
Component
Notes
AMD Athlon 1000
Processor
768 MB SDRAM
Not enough; it's never enough
MSI kt??? Motherboard (I don't remember exactly what it is)
Creative Labs Audigy Gamer Sound Card (The original Audigy; very nice sound hardware)
Creative Labs Inspire 5.1 5200
Speakers (Designed to go with my soundcard); Currently fried and I need a replacement
RCA RT2300BK
Surround sound receiver and speaker system (stereo connection only)
Ubuntu Linux
Primary operating system; Ubuntu rocks!
Win98SE
Secondary operating system, for testing only
Other Linux Distros
Third/Fourth/Etc operating system (booting from live CD and/or GRUB, depending on what I need at the moment)
Java
Sun JDK 1.6.0_03
Sun JDK 1.5.0_13-b05
Sun JDK 1.5.0_06 (Windows)
Sun JDK 1.4.2_06 (testing)
Apache Ant version 1.7.0
Java build system
Jext v5.0 b05.00.00.00 Super-powerful Java programmer's editor

Hosting for this project generously provided by:
SourceForge.net Logo