Skip navigation

Monthly Archives: August 2008

W00t, first post!

This blog is a place for me to rant, carry on, and generally talk about various things that amuse me.

Speakin’ of cool stuff, I’ve been hacking away at one of my older projects these past two days. It’s called “Player” (hah, I fail at creativity) and it’s basically an attempt to make a 3D online “world” demo. Nothing too ambitious, just the client/server basics– essentially a 3D chat room.

Anyways, I’m pretty much done with the major implementation: a user can login with a unique username, run around the terrain, and speak with other players. I neglected to implement 3d navigation (server-side, the world is just a 2D grid), pathfinding, fighting, leveling up, and all the other accoutrements for the sake of this being a demo but I’m still pretty happy with the result.

Technology used:

  • 3D Engine: Ogre3D
  • GUI: Hikari (my own Flash embedding layer)
  • Text Overlays: Canvas (my own super-efficient 2D rendering layer)
  • Networking: RakNet
  • Input: OIS

I recently replaced BetaGUI with Hikari because it seemed like a fun idea. It worked out pretty well methinks– I learned a new technology (Flash), squashed some bugs, and gave the demo a little style. It’s nothing compared to what Eeenmachine has put together for ZeroGear, but it’s something nonetheless.

Also, I felt like using Canvas– my super-fast 2D rendering layer for Ogre3D– for something and decided to use it to render the player titles/messages. I devised a little system that automatically updates the screen-space position of a title based on the position of its Ogre::MovableObject (in this case, the ninja-actors). The titles are totally anti-aliased/hinted/shadowed and scale through multiple font-sizes based on the distance the object is from the camera. As for performance, it’s excellent: the glyphs are pre-rendered at runtime, packed into a texture atlas, and the geometry (each glyph quad) is pooled.

I know there’s a bunch of users who are eager to start a MMO but have no idea where to start and so ultimately, I’m gonna clean up the code and release “Player” as an example project for the Ogre3D community. I’m also considering writing a series of tutorials on getting started with Ogre3D from scratch (without the Example framework or any other crutch). Hopefully my efforts will give someone a poke in the right direction.