Monday, November 8, 2010

For completeness' sake...

In the interest of maintaining things in one place, I'm going to (partially) repost the stuff I had on Buzz.

Below is a screenshot of the engine as it was late last week. Shown are three features.

  1. Dynamic hierarchical and executable menu system with customizable actions
  2. Heightmaps based on *.tga files with associated texture images
  3. Dynamically loadable heightmaps and textures


Employing heightmaps and a menu system are nothing new to me (though the methods are currently improved and more stable) but I opted to throw in on-the-fly heightmap loading so I wouldn't have to a) recompile every time I wanted a new land, or b) edit a text file every time I wanted a new land.

As I stated in a post on Buzz, I'm having some difficulty working out the kinks of a particular feature. What I want to do is dynamically add objects to the world (in the form of primitives such as cubes, spheres, rectangles, cylinders). Adding them is easy. But I want to be able to adjust their locations and orientations via mouse gestures. In a previous iteration of the engine, I accomplished this through trig functions and doing rotational coordinate transformations by hand. It should suffice to say that that sucked. Trig functions are excessively computationally intense and bog down the engine.

Imagine my delight when it dawned on me that I could use OpenGL's built-in rotational transforms to achieve this! I've put it to good use thus far in general movement controls (wasd + mouselook) and want to do the same for object movement. Unfortunately, it's not working just yet. It's probably staring me in the face, but in the past two days I've spent inordinate amounts of time pouring over code and my brain is potentially fried (thus rendering problematic code invisible).

I'm eager to get that solved soon, because up next on my to-do list is something about which I am particularly excited. Behold, the glorious list:

  1. 3d engine template
  2. Menu system
  3. Heightmaps
  4. World objects
  5. Collision detection of objects
  6. Time
  7. Physical motion of objects
  8. External forces acting on objects
  9. Linking of objects
  10. Sound
  11. Network?
Sound is something that requires much expanding. There will be ties to events that trigger sound effects, background looping sounds (music? ambiance?) and I feel (from my limited research on the subject) that each will require different code design.

I have a question mark on # 7 because I'm not sure if I'm going to make it multiplayer. I have some excellent ideas on how to make it multiplayer, but network code is a completely foreign topic to me and I'm not sure how well I'd be able to implement it.

Before I cut this off, I just want to say that my blog title is TOTALLY clever.

Totally.

No comments:

Post a Comment