Even a wannabe needs goals

In the first article, I described the basics of wannabe: a simple graphics engine.  I haven’t been letting it sit, I’ve added some small features to it and have been making plans.

On github: wannabe: Multiplatform low-resolution 3d engine. For losers, by losers.

Briefly, I’ve cleaned up a bunch of the internals of the code, and I’ve added a few nice new features: multiple grids in a UI, pixel text maps and frame animation.  When rolled together, I get to do this:

frame-animation

At this point in this little project, it’s time to come up with a plan.  Otherwise I’ll get easily distracted from getting anywhere and just work on interesting little things I think up.  And I’ll never have a nice topic for blog posts.

I have a number of goals to accomplish, so let’s enumerate.  I’ll make these into actual issues sooner or later.:

Better projections and rendering:

  • Existing isometric projection
    piso-sample

    • While it effectively conveys height, it isn’t really “isometric” in how it draws.  See next section.  Closest approximate projection seems to be a Cabinet Projection.
    • Allow for a custom depth value.  The existing single-pixel offset just doesn’t really match the width and height used, losing the cubeness that a voxel should to have.  A box that’s 10x10x10 looks more like it’s 10x10x2.  Also makes other projections pretty jarring.
    • Maybe support drawing sides.  Draw in a slightly different color.
    • Maybe allow the offsets to go in all 4 or even 8 directions, instead of just up and left?
  • Develop a real isometric projection
    • cubes drawn point-on with all sides equal length, like so (courtesy Wikipedia):
      Isometric cube
    • Obviously will take a bit more drawing effort.
  • To do both of the above, will probably need to clarify RenderType and Projection.  Or maybe this is just two new RenderTypes?  Could be, could be.  Right now RenderType is specific to Swing, though.  Could convert to an interface or something.

Grids (sets of Voxels):

  • These should definitely be organized by x and y for better filtering, there’s no need to have to loop through every voxel to find all of them in a Bounds.
  • Consider moving translations out of basic grids, so they don’t have to worry about them normally.  Whoever is composing the grids can apply the translations at the last minute.
  • When composing grids, it might be nice to have different cameras and rendering types for each.  Not sure here.  Is that better handled by the UI or something even higher?

Display /UI:

  • Need to disregard voxels behind the camera
  • Need to do hidden voxel removal.
  • 30 frames per second.  This is hardcoded to around 5fps now, we’ll have to run a very tight ship to get to this.  May never arrive without going to OpenGL.

There are some more things (color filters could be nice, to do things like shadows, for example), but these are the short- & medium-term goals I should aim for.

Wish me luck!

This entry was posted in Wannabe. Bookmark the permalink.

1 Response to Even a wannabe needs goals

  1. Pingback: Wannabe: making a Cabinet | MuddyHorse Farm and Tech

Leave a Reply

Your email address will not be published. Required fields are marked *