Egoboo: The Cute Way to Dungeon Role Playby Howard Wen
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."
Return to the Linux DevCenter.