MiME

Last updated on June 25, 2007 - 0:10

10 screenshots

Featured image
temp
temp
temp
temp
view all screenshots
Mike's Mini Engine (MiME) is a C++/OpenGL shader based 3D graphics/game engine that I have been working on for a couple of years now. Development on the engine has been relative slow up until now due to a number of factors (final year at university and the development of my website amongst other things). Recently I've been able to put a bit more time into the engine and its actually started to become something a bit more decent. The aim is to continue development on the engine and hopefully release a game built using it.

While designing/developing the engine I have been trying to keep a couple of key factors in mind:
Good software engineering practices - the engine should be modular with each component/subsystem performing a single task with no or minimal knowledge of other systems. It should also be extensible and easily reusable.
API/platform independence - design should be done such that the engine can be ported to different APIs and platforms with a minimal amount of additional effort.
Ease of use - the engine should be straightforward to use.

I believe that I have managed to stick with these principles pretty well so far. I will admit that I don't really have much knowledge of developing for other OSes/APIs but I have been trying to keep all the OS/API specific content contained to a few key classes along with defining a common interface which can be used internally. Well enough about the design of the engine, the following is a list of what the engine currently can do:

  • Light window wrapping
  • Pluggable sub-systems (render, input and sound) using dynamic link libraries
  • Input handling through DirectX8 or Windows
  • Rendering done through OpenGL and GLSL
  • Scene management through use of scenegraph
  • Full GLSL shader support
  • Dynamic lighting
  • Various types of texturing (1D, 2D, 3D, cube maps and render to texture)
  • Vertex Buffer Object (VBO) support
  • Texture and shader creation/loading managers
  • Internal model format to handle custom material information (both loading and saving to binary or ascii)
  • Bitmap fonts (including text alignment, wrapping and kerning)
  • Screenshot system
  • Internal memory management to facilitate finding memory leaks
  • XML system/error logging
  • Common math library
  • Common data structures library

The following is a list of things that I am planning on implementing in the near future:

  • Frustum culling
  • Scene loading through XML "scene" files
  • Billboard support
  • Model LOD support
  • Particle engine
  • Lightweight pluggable GUI system
  • COLLADA model support (I love this model format!)
  • Shadow mapping (projected textures)