Egoboo: The Cute Way to Dungeon Role Play

In the land of Bishopia, King Bishop has been kidnapped by evil forces. To
rescue him, you must traverse dungeons in search of the "Sporks of Power".
(Yes, these objects do look like the spoon/fork hybrid utensil.) This game
premise might sound, well, silly, but it's silly by design. The creators of Egoboo--brothers
Aaron and Ben Bishop--have aimed to make their game the most accessible and
cutest open source dungeon RPG.

Egoboo features real-time action and 3D graphics. As is standard in dungeon
adventures, game play consists of combat against monsters, spell-casting, and
exploring a variety of map levels. The world of Bishopia consists of seven
environments. You choose to play as one of eight hero characters, including an elf,
rogue, soldier, or wizard. While the game is nowhere near complete, Egoboo's current
form still has plenty of dungeon romping and monster-bashing. The game runs under
Linux, Windows, and Mac OS X.

Egoboo was originally developed by Aaron Bishop. Ben Bishop, his brother, a former
computer science professor at the University of Georgia, currently maintains the game.
Both brothers currently reside in Danville, Pennsylvania.

The motivation for the ongoing work of Egoboo has been the brothers' desire to make
a modern Roguelike game.
In terms of its design, the inspiration for its game play draws upon NetHack. The graphics exhibit a Japanime style;
specifically, the artistic look of Nintendo's Legend of Zelda series is
obvious.

Figure 1 -- a hero in distress

From the Classroom to Open Source

Egoboo development began in 1999. In its simpler form, it started as a Direct3D
Windows game Aaron did as an assignment for one of his college classes. Ben eventually
convinced his brother to release it as open source. They then rewrote Egoboo for
cross-platform portability by using SDL
and OpenGL. They also credit other open source
programmers specializing in graphics for contributing the help they needed to
accomplish this specific task. (When Aaron started Egoboo, his graphics card only
supported Direct3D.)

"Converting Direct3D to OpenGL was like getting teeth pulled," describes Ben. He
recalls this as the biggest challenge in Egoboo's development. "If anyone reading this
ever writes a graphic program, wrap the graphics API calls in macros!"

Ben points out that OpenGL itself was not the problem in this process: "OpenGL has
been a pleasure to work with. The original code from Direct3D was a complete mess.
There are still some lingering problems from the conversion, though, such as our flaky
support for particles. They don't rotate properly."

Aside from the OpenGL and SDL APIs, the rest of the codebase is original and was
written in C by the Bishop brothers. They did borrow the Quake II model format for
game characters, however, to avoid the work of writing their own modeling program from
scratch. An extra, obvious benefit is that this decision makes customizing Egoboo much
easier: the mod community is full of people who are familiar with creating Quake II
models.

"We are working with the Quake II model format to simplify the lives of character
developers," says Ben. "Users have been able to contribute new models, and I hope some
of these start making it into the game soon."

While the character models are done in Quake II format, Egoboo uses a separate
tool, developed for Egoboo, called Cartman, for map
generation. Other map-making tools for Egoboo are also available and in development,
including EgoMap, which adds random level
generation to the game.

As far as the game's AI, its scripting is specific to Egoboo. Ben, who wrote some
of the AI, feels this is unfortunate because it has probably hindered further
development by others who might want to help to improve it. It is possible for others
to study the existing AI scripts and documentation, but he admits it is not easy to
figure out. Some have suggested to the Egoboo developers that they use Lua for scripting the AI functions, but there
has been no significant progress on this idea. Ben says this may partly be because
support for the Lua language in egoboo "is not 'fully baked' as of now, from what I
know."

The Egoboo graphics engine itself is not limited to dungeon crawlers. Other kinds
of games can be built upon it. In fact, Ben says his brother has already developed
some of his own: "Aaron always seemed to get distracted and [would] code up new games
using the Egoboo engine. He had a simple real-time strategy test, as well as a bumper
car game."

Figure 2 -- a peaceful outdoor scene, unless you're a sheep

To those interested in modifying the Egoboo code to create an entirely different
type of game, Bishop warns that the learning curve for the engine is pretty steep. He
suggests that it might be best to start by contributing to the development of the
original dungeon crawl, a more likely way to gain better technical insight into the
engine's code.

Figure 3 -- a little lightning

A Much-Needed Fixing and Polishing

Before any new features can be added to Egoboo's game play, Ben says a couple of
existing technical issues need to be addressed, particularly with its graphics. As
mentioned above, particle graphics do not rotate in the OpenGL version of the game
like they do in the Direct3D original. Another partial feature is transparency.
Egoboo is also supposed to have a network play feature, but it's broken in its present
state. Fixing the particle graphics is easy, says Ben, but the network issue will be
tougher to resolve.

The networking challenge is typical for this type of game. "Being an action game,
network code timing is a big concern. In something like a real-time strategy, you
might not notice if your units take a half-second to start moving. On Egoboo, this is
not the case," says Ben. "Our main problem is that we haven't gotten around to porting
the network code from the original DirectX. I think it would be a pretty
straightforward job for a competent programmer with some spare time."

The Egoboo project could also use contributions of character and object models for
the game and definitely needs more level maps. While the game looks very good in its
current form, it does not have a polished feel of a commercial game, which Ben admits
and wants to see improved. He invites others to contribute to Egoboo's development;
outside submissions of any sort will encourage the release of more official updates to
the game:

"It takes some effort to put a new release out. So I'd like say what would get me
to do a new release: A new level, significant bug fixes (networking, particles, etc.),
and a good new [development] tool. If you want to get to work on the code, consider
setting up your own CVS. The code in Version 2.22 is current."

In the end, Ben is proudest not of the technical achievements that he, his brother,
and various volunteers have made to Egoboo, but, rather, the game's very place within
the overall open source gaming scene. "Good open source games are few and far
between," he says. "So I think Egoboo is contributing by enlarging the pool of
games."