4. Graphics

4.1.1 Game View

The main game view will be 3d and drawn using OpenGL. The OpenTK toolkit will provide managed OpenGL bindings and window management. The graphics system will make use of Shader Level 3 and OpenGL 2.0. This will mean that the minimum video hardware will be a Nvidia Geforce 6000 series,  an ATI Radeon X1000 series, or Intel GMA X3000 card.

4.1.1.1 Window/Graphics Setup

Window and graphics setup options will all take place on the game’s main “launcher” form before the 3d view is initialized. Any changes to the view will require the player to disconnect from a game server and change the settings before reconnecting. This may seem a little harsh but it is simpler to implement, and prevents players from using these controls to induce lag. Graphics setup will be a one/rare time action that players do on first run/hardware change.

4.1.1.2 World Rendering

The Game system will render the world using a portal traversal system, starting from the cell the camera is in. Should the camera ever go outside all cells, it will be up to the application to decide what to draw. Editors should draw all cells, the game should draw from the last cell.

This style of rendering system will allow multiple cells to occupy the same 3d space, but not be shown as overlapping if the visibility system does not walk into the cell via a portal connected to the current viewset. Special portals can also be made that change the rendering position of any items viewed through it. This these 2 features will allow the use of 5d space and “portals in space” types of rendering (see marathon, and quake style portals)

The graphics system will use a basic materials system that will allow a color and texture for each face. Future releases may add more surface options. Transparent faces will be sorted and drawn after opaque ones. All world faces will support static light maps and the world will use fixed lights. Dynamic lighting effects will be handled via projected textures or shaders.

4.1.2 UI

The game window UI will be drawn with OpenGL in orthographic mode (possibly in perspective if the math can be worked out ). The UI will be loaded From an XML (or lua) definition. It will specify the location of various pre-made control components and containers. This will allow the end user to fully customize the final UI for the game.

Main UI elements will be;

  • Chat Window with tabs
  • Scoreboard
  • Player Status
  • Sensor View
  • Weapon Slots
  • Accessory Slots