::ABOUT::

Mosquito Ops is a free 3D OpenGL game for Mac OS X(10.4+, Universal Binary) and Windows PC. You play as a mosquito and must complete a various number of objectives, like sucking blood, or find all mosquito eggs.

The game was created by Oliver Hörbinger and Clemens Mautner Markhof as part of an university lecture within 12 weeks in 2007. It was our first OpenGL/C++ project and together we spent over 700hours to create our own game engine, the content and the logic.

Final words: have fun exploring and sucking blood!

::FEATURES::

  • Motion Blur, Softfocus Motion Blur, Blur FX
  • Reflection FX
  • Mosquito-Time Mode(bullet time)
  • WIDESCREEN SUPPORT
  • different cam modes
  • x-ray cam(if player is occluded)
  • Ingame Editor(create your own levels)
  • Wireframe Mode
  • complex transparency FX
  • various texture modes
  • 4 Mission campaign + 1 Demo level
  • 4 objective types
  • create your own 3D models(external editors), import them and use them in the ingame editor
  • different enemies, like humans, anti-mosquito plugs, lamps, and fans
  • MacOSX portable application. All prefs and files will be saved within the game's package. So you can drag and drop the game onto your USB stick or iPod's file directory and play it directly from there.
  • FREE DOWNLOAD
  • ... and more to discover...

::TIPS & TRICKS::

  • Humans or birds may hear or see you. So use the walk mode to sneak from behind. Get close, start flying and immediately go into mosquito time("F"-key).
  • May controls confuse you - read this Forum entry. It explains how to turn off some cam features.
  • To suck blood you just need to hit the enemy when you are in Mosquito-Time mode.
  • Anti-Mosquito plugs cause sickness so avoid them.
  • In your first mission there is a secret entry.
  • Press "F1" for a help menu.
  • Press "F2" to see your FPS.
  • If you have activated the FPS-meter a performance file(Perfomance.txt) will be generated in your game's directory. In MacOS X you need to do a right click on the game, select "show package content ", and then go to Contents/Resources. The perfomance file includes highest, lowest and average fps. To get correct results, deactivate the FPS-meter before you go back into the game's menu;
  • Press "1" for fullscreen mode.
  • If you are in fullscreen mode, your screen resolution will be used. If you want to play at a different fullscreen resolution you have to change it via your system screen settings.
  • If you create your own models, in e.g. MisfitModel 3D, make sure that you export the model in the MD2 format and that you add at least 1 animation frame. Further notice that you can only use one texture per model.
  • Before you can select your own model in the editor, you have to add it to the Data/Models/md2list.txt file manually. Same with your own textures, that need to be added to the Data/Textures/texlist.txt. In MacOS X you need to do a right click on the app and select "show package content " then open Contents/Resources to view the Data folder.
Screenshots

::TRAILER::

::DEV NOTES::

In this section you get a brief overview of what tools we have used, and how difficult cross platform developing was.

Tools & Libraries

Mosquito Ops uses a few external open source libraries, that made developing easier:

  • GLUT, which takes care about presenting OpenGL under your OS, keyboard and mouse interaction, and our menu interface
  • FreeImage, is a very powerful image lib, that is used to load textures
  • OpenAL, is used for 3D sound
  • ColDet, a simple but easy to use collision detection
  • GLEW, takes care about OpenGL extensions and related version conflicts. Only necessary for PC.

As editors we have used XCode 2.4(MacOS X) and Visual Editor 6.0(PC). Textures and the Mosquito Ops logo were created with Photoshop CS2. A few textures were downloaded from the web. For creating and animating our mosquito and other 3D models we have used the open source application MisfitModel 3D, available for both Mac and PC. Last but not least we have borrowed most interior 3D models from Google's SketchUp libraries and converted them to MD2 models with various converter tools, or downloaded ready MD2 models from around the web.

Crossplatform

Before taking this university class, we were warned, to develop cross platform. In the end it required only additionally 15 - 20 hours of programming and figuring the differences out. It's not that difficult, you only have to take care about the little-big endian issues, which need to be solved whenever you are handling byte data like 3D models, and images. Just swap the data, according to your system architecture, and that's it. All used external libs come platform independent, which was also a big help and saved us a lot of hassle. As trade off you can't use some nifty OS features, like Cocoa GUI(MacOS X), but for a 3D game that's probably not a big issue.

Known bugs

The game is by no mean perfect. There are a few known bugs, that sneaked into our 16000+ lines of code.

  • Memory leaks, that eventually crash the game.
  • MacOS X issue: sometimes a movement command doesn't stop, if you stop pressing the key. Pressing the same key again usually helps.
  • Glitches, tons of glitches. You may get stuck within walls, or can fly through doors. Use the reset key to reset your position.
  • You may encouter some perfomance hits, when viewing the entire scene. Optimizations could easily double or even triple the fps, but it should run fine on most machines as it is. Watch out for our next engine.
  • If you use occlusion query mode for the visibility check(default), reflections may appear broken. Try zCulling instead.
  • Many other bugs you will probably notice, so don't panic!

Afterthoughts

Personally, whenever I finish a project I would like to do it from scratch, because due the made and experienced errors, design faults and new knowledge, I think I could do it at least twice as good. Here are some insights I made during creating this game:

  • Use SDL instead of GLUT if you want improved user input and better screen resolution handling. GLUT is EOL and lacks some important features like mouse wheel support(hacks and extensions are available, but break platform independence). Also GLUT's game mode has some bugs. However for small projects GLUT is perfect and easy to use.
  • Using a GUI lib, will save you many hours.
  • Use C++ extension libs, like e.g. Boost, which allow multi-threading, and some essential features like reading directories.
  • Even if you think that a vector class will be enough, I suggest that you create an own matrix class.
  • Use design patterns like smart pointers, singletons, etc...

Beside these tips, I also would like to add, that any of our future games, will probably make use of shaders. OpenGL Shaders allow more beautiful and realistic graphics, that aren't possible with the fixed OpenGL pipeline. Mosquito Ops has built in support, but due hardware support issues on our team's PC, and the fact, that we were completely new to OpenGL we decided to use only the fixed pipeline and OpenGL extensions in the release version.

If you are also new to OpenGL, or just look out for a good reference I can strongly recommend the OpenGL Red Book and for programming shaders the OpenGL Orange Book. Also search the web for some really great dev resources.

::DOWNLOAD::

Ready to play? Download Mosquito Ops and enjoy being a tiny, mean and thirsty mosquito.

MACOS X DOWNLOAD v1.0
15063 Downloads

bloodstain

PC DOWNLOAD v1.0
74698 Downloads

bloodstain

System Requirements

MacOS X: game has been tested on a Powerbook 1.33Ghz, 768MB RAM, Nvidia GForce 5200 64MB with OSX 10.4.9 and runs well. Macbook 2Ghz, 1GB RAM, built in graphics may only run the demo level satisfying. Dedicated graphic card strongly recommended.

PC: game has been tested on a Sonoma Notebook 1.86Ghz with Windows XP SP2, 1GB RAM, ATI X300 mobility 64MB and runs excellent.

::LINKS::

::CREDITS::

Game created by
Oliver Hörbinger and Clemens Mautner Markhof

Website and logo by
Clemens Mautner Markhof

Logo font(Dirty Ego) by
Misprinted Type

THANKS TO
all CG2 tutors,

all people that helped us with OpenAL from the OpenAL mailing list,

Andre Krause for help with OpenAL and ogg streams, that unfortunaly didn't make it into the release version,

and last but not least our girlfriends for being extremely patiently with us!

CSS 2.1 HTML 4.01