MoonEngine

Project goal

Create a platform independant abstraction layer with game-oriented services built-in, such as virtual filesystems(eg. Quake 3's PK3s), variables(eg. Quake 3's cvars), a console, timers, initialization of OpenGL, multiple audio streams, texture loading, etc.

This will be the base of GlDemo and CheapoDDR. Probably other things too.

Why?

I didn't find such a library. SDL doesn't give me enough.

Design ideas

The engine will probably put together libraries like DevIL, zlib, PortAudio, GLFW, libmpg123 and libvorbis.

Planned features

  • PORTABILITY!
  • Multiple timers
  • Virtual filesystem(with optional PK3-style(ZIP) filesystem containers)
  • Texture loading, from the virtual filesystem or memory maps(think mmap())
  • Quake 3 style commands
  • Quake 3 style cvars
  • Quake 3 style input->command binds(eg. bind w +forward)
  • Quake 3 style console
  • Initialization of an OpenGL window with parameters from the cvars
  • Multiple audio channels

Current progress

Paused. I'll wait until PortAudio v19 or v20 gets released(when they will implement latency querying). I'll also probably ditch the current design to use library functions instead.

Completed

  • Timer design
  • Filesystem design
  • Windows timer implementation

In progress

  • Basic filesystem implementation

Left to do

  • Audio subsystem design and implementation
  • Input subsystem design and implementation
  • Cvar subsystem design and implementation
  • Rendering subsystem design and implementation
Hosted by www.Geocities.ws

1