Contact Us      Site Map      Search
Home Documentation

Page Contents

Help and Tutorials

Lessons Learned

Acknowledgments for the Game Engine Formerly Known as UGENE

Developer Documentation

Help and Tutorials

In the future, this section will contain advice, hints, and tutorials that will help you play UGENE's games. If something is missing or hard to understand, please let us know and we'll probably post something useful here. In the meantime, if you need help please contact us and let us know what you need.

Lessons Learned

If you want to make a computer game, borrow the engine.

The UGENE project started out as an attempt to create a computer game. Every game needs an engine (a game engine deals with issues like loading graphics, playing music, etc.), and we learned the hard way that creating a game engine is a project on its own. Thus, we got side-tracked and started creating a game engine instead--but that's boring if what you really want to do is create a game. Thus, we implore you to please learn from our mistake. If you're a hobbyist game-maker, don't create your own game engine as it's a total waste of your time. That time is much better spent creating your game. Hence, take somebody else's game engine and use that to create the game of your dreams.

For those of you that would like to look for ready-made game engines there are many excellent engines out there, including:

There is also a veritable cornucopia of 3D graphics engines out there. One of the coolest I've seen is OGRE, which is also hosted on SourceForge.

You may have noticed that UGENE's programmers have switched from programming with C++ to using Java and AspectJ. This is because Java has such a large set of libraries to choose from that it is effectively a game engine on its own. AspectJ is a really neat technology that brings Aspect-Oriented Programming (AOP) to Java, making it even better.

Communication Is Key

Here's another important lesson I've learned the hard way while working on UGENE.

It's generally true for any team project that good communication is key to the project's success. However, for an open-source project where team-members are typically volunteers that work independently over the Internet, this is an even bigger issue. Teams should consider organizing occasional get-togethers in order to help create a team atmosphere--both work-related and fun-related get-togethers. If there are team-members in the same city, then LAN-parties and group work sessions are a great idea. Even if everyone lives in separate cities, instant messengers, wikis and message boards can really help foster a team spirit and better communication. A community has good communication by default.

The main idea is that everyone on the team should know what's going on in the project, without needing to ask, "What's going on?" all the time. When team members get together, they inevitably end up talking about the project and how things are going. This way you don't need to waste valuable work time filling people in on the project's status, and people feel like they're part of something dynamic.

Acknowledgments for the Game Engine Formerly Known as UGENE

The UGENE project started off as a game engine project, and we would like to take the time to thank everyone that made a contribution (knowingly or unknowingly) to the engine. If you don't want your name to appear here, or if you've been forgotten, please Contact Us and let us know.

We would like to thank:

Team Leaders

Programming Team

Additional Programmers

Jeff Molofee, Maxwell Sayles and Peter Puck for the Win32 "base code" that they created and that became the basis for our first prototype of the game engine.

Soubhi Canbarieh, for the MATH_VECTOR class, which was used by the CAMERA we made.

Website Creators

The creator of, for setting up an invaluable OpenGL tutorial website. Several of the UGENE team members used it extensively to learn OpenGL.

Library Developers

Developer Documentation

Some of our documentation will only be of interest to programmers, and UGENE's developers in particular. These are contained in a separate Developer section.