Linux DevCenter    
 Published on Linux DevCenter (http://www.linuxdevcenter.com/)
 See this if you're having trouble printing code examples


Keeping the Myths Alive

by Howard Wen
06/10/2004

Some games inspire fans to create mods, add-ons, and other elements for their favorite game. It's all done in the spirit of extending the fun and longevity of the games. Certain fans of the Myth trilogy have taken this idea a step further: they have official access to the source code for the Myth games. Organized under the name MythDevelopers, this all-volunteer group of programmers, artists, and other talented people devote their time to improving and supporting further development of the Myth game series. Fans with original copies of any of the Myth games can download and apply patches or upgrades from the MythDevelopers team.

Created by Bungie Studios, the company also behind the Halo franchise, the Myth titles are real-time strategy games released for both the Macintosh and Windows platforms. (Bungie started as a Macintosh games developer, so Mac support was a priority throughout its early history.) The original Myth was renowned for its gameplay innovations in the real-time strategy genre, including its use of a 3D graphics landscape. Unfortunately, the technical quality of its sequels came up short -- bugs and other problems plagued them, especially the Mumbo-Jumbo-developed Myth III. Bungie never addressed many of these problems fully, as the studio focused on Halo after its acquisition by Microsoft. Nor did Mumbo Jumbo.

Like many Myth fans, Michael Bagnall, a 32-year-old programmer in Nashville, Tennessee, was excited when the third Myth title was released -- and then disappointed when he actually played it. Myth III was riddled with major bugs. Released at the same time as Windows XP, the game was prone to crashing on most PCs running the new Windows OS. A patch didn't fully solve the stability issues. Things were no better for the Mac version: "There were 'kernel panic' types of problems under Mac OS X, which were probably more related to the shaky state of OS X at the time Myth III was launched," Bagnall notes. Today, he leads the technical logistics and does his share of programming for the MythDevelopers team.

"From my point of view, they never got to finish it," says Paul Bucher, a MythDevelopers lead programmer and software developer from Bainbridge, Pennsylvania. He's the MythDevelopers programming lead on Myth I and Myth III, and the build engineer for Myth II.

Learning Lab TigerLinux/Unix System Administration Certification -- Would you like to polish your system administration skills online and receive credit from the University of Illinois? Learn how to administer Linux/Unix systems and gain real experience with a root access account. The four-course series covers the Unix file system, networking, Unix services, and scripting. It's all at the O'Reilly Learning Lab.

Why would Michael, Paul, and others like them care enough to volunteer their time and skills to fix the bugs in Myth III, and to improve the game and the first two Myth titles -- essentially, doing the work that the original developers and copyright holders should have done themselves?

"There is just something about the game itself. It has a compelling story, a truly unique game plan, and a multiplayer system that allows you to talk to other players and develop online friendships," Bagnall explains. "The appeal is having the ability to take something and make it better."

The 34-year-old Bucher puts his excuse simply: "I just can't get enough of playing the game."

Revising the Myths

MythDevelopers has worked on all three of the Myth games, updating and improving performance and stability for both the Macintosh and Windows platforms. Their main enhancements include:

In particular, Myth III required a massive code overhaul to run the PlayMyth.net server. Bucher spent weeks porting Myth III to work with the Bungie.net metaserver system that serves as a basis for PlayMyth.net. The developers have added the ability for the server to identify which Myth game that the player is using. Thus, PlayMyth.net allows players from all three Myth games to intermingle and chat with one another online.

All of Myth in 80GB

How the heck did these guys get their hands on the source code for the Myth games, anyhow? They simply asked -- they convinced Bungie and publisher Take 2 Interactive that they wanted to fix the bugs in Myth III and to develop a multiplayer environment for fellow Myth players.

"One of our original members initiated contact with Take 2 and got permission for some of our guys to have the code. Unfortunately, the code was older and we needed the up-to-date builds," says Bagnall. He asked Bill Heineman, one of the lead developers of Myth III, for help. That worked, and MythDevelopers then had access to the newer code. "Bill has been a huge advocate for us," says Bagnall.

The extent of MythDevelopers' access to the source code is, as Bucher describes, "All of it. I even have access to historical versions of the code."

Bungie's entire archive of Myth-related materials is available to MythDevelopers to study and use. This includes the source code, artwork, creative files (maps, 3D models, scripts, etc.), and documentation. This amounts to over 80GB of archives. "We're the only organization with access to the source code for all three Myth games," says Bagnall.

Furthermore, the MythDevelopers have no restrictions when it comes to their manipulation of the source code. "Take 2 has been very supportive and gracious with us in terms of development," says Bagnall. "We are able to move the games forward and make changes needed to get the games working as we think best."

Outside Development; In-House Rules

Though they had all of the code, the MythDevelopers team quickly discovered that it needed a lot of repair work. "The Myth III code we got couldn't even build a usable app," Bucher recalls. "We had to rewrite the Mac input routines before we could even make an app."

Having the source for BurgerLib, a proprietary development library created by Heineman, has been a big help. Heineman graciously let MythDevelopers use the source, so that they could maintain their own branch of BurgerLib and keep it up to date as it relates to the specific tasks of Myth III.

MythDevelopers also developed its own library, the Myth Core Library (MCL). This library provides networking, input routines, and other low-level functions needed by the three Myth games. Created by Bucher, it has enabled MythDevelopers to avoid having to license other libraries from outside of the development team. "Everything has been done in-house," says Bucher. "Because of our agreement with Take 2, we can't incorporate anything we can't give them the rights to, if they ask for the code back."

"When you're dealing with proprietary [code] owned by a big company, you need to avoid possible licensing issues," says Bagnall.

Making Myth Into the Game That It Should Be

MythDevelopers' current focus is on improving the map-making tools for the games. (Bungie provided tools for players to create new maps, units, and other elements in the games.) Most map makers in the Myth mod scene use Macs, but none of these tools run natively under Mac OS X, something that MythDevelopers wants to correct. "We really need to get the development tool in shape, so that fans and talented artists can create new worlds for the games," Bagnall says.

"Our next step is to identify the common code between the three games and pull it out into a library so that fixes can be shared among all three," says Bucher. "We already have several thousand lines of code in this library, and used it to build all of the most recent updates."

MythDevelopers plans to introduce improved graphics and code optimizations so that the games will run using fewer resources and under lower system requirements. One wish-list feature they would like to add to the engine is rolling-ball physics. First, they need someone with the math and programming skills to develop this. "We also have a big, big plan that we're not ready to announce yet -- but let's just say that there is going to be a lot of 'wow factor' associated with it!" Bagnall teases.

Since the release of Myth III, Bungie has taken a "wait and see" attitude over what, if anything, to do commercially with Myth in the future. In the meantime, MythDevelopers will continue the updates, improvements, and further development for the beloved Myth franchise, with the blessing of its copyright holders.

"They have been very supportive of us, so that we're able to make things better for Myth players everywhere," says Bagnall. "We've really been given the freedom to make the games the way they should be for the 21st century."

In Their Own Words

Joe Wilson is the webmaster, database developer, and primary user-services coordinator for the MythDevelopers' online multiplayer service for the Myth games, PlayMyth.net. He's 33 years old and lives in Baltimore, Maryland.

ORN: Are there any interesting things that you have learned from examining the Myth source code? What do you think of the quality of its architecture and design?

Paul: Some of the interesting things are the sheer amount of source code that was unchanged from Myth: The Fallen Lords to Myth III; the amount of dead code left in the code base from Marathon and other previous Bungie products that managed to survive all the way to Myth III. I've seen comments going back to Bungie's original product, Pathways in Darkness.

I have seen some very interesting function names and comments -- my favorite function being set_gayass_adjustment_for_lame_ass_popup_control_coded_by_the_antichrist, which is an actual function in Myth II. The Bungie people really had a great sense of humor, which you see not just in their games but also in the code.

As for architecture and design: I write well-designed business apps for my real job, so I find the source base to be a disaster. But for a source that has evolved for over 10 years and like eight or so games, I can't really knock it much. The base has also benefited from what Bungie learned doing some of their early games.

ORN: What major coding challenges have you faced thus far?

Michael: Some of our biggest challenges have come in reverse-engineering a large part of how the Myth engine works. When you're dealing with nearly 500 files of source code, you can quickly find yourself tracking bugs for hours just to find the spot where you need to make a fix, while the fix itself could be adding or changing one line of code.

Related Reading

AI for Game Developers
By David M. Bourg, Glenn Seemann

Getting the five-year-old Bungie.net metaserver networking system to work with the Myth III interface also proved to be a big challenge.

Paul: Restoring the ability to play on a Bungie metaserver in Myth III was the biggest. Myth III was playable on Bungie.net until its last month of development, when they wrote a whole new network gameplay system using GameSpy for the server. We decided early on that we wanted to keep that interface, so we had to rewrite a ton of stuff to get it playable on a metaserver again. PlayMyth.net is based on Bungie's metaserver code.

ORN: What kind of contributions could the MythDevelopers community use from volunteers?

Paul: We need some experienced C/C++ coders, especially people that are good with OpenGL.

Michael: We are always in need of folks who can do OpenGL and physics programming. We have one significant engine-related task related to rolling-ball physics that we really need some help with. Massive kudos and a community full of happy people await such a person!

A knowledge of models and 3D programming is always a plus. Additionally, we could really use some folks with good Windows programming skills. While we're working with both Mac and Windows versions, we think there could be more Windows stuff that could be done if someone more familiar with Windows would come forward.

Joe: Any skills that someone has, and who wants to volunteer, we'll be more than happy to discuss how they can contribute. Donations are accepted, as always.

ORN: What have you learned, as a programmer, from contributing to the MythDevelopers community?

Michael: For me, it's that you're never bored. There are always things that need to be done and tasks to be accomplished.

Paul: Not to change the way the game plays. People really like the game to play the same and not to have that experience changed.

Joe: There's always room for improvement, but just because you can do something doesn't mean you should.

Development of the game and tools is a lot easier than maintaining the relationship between the team and the community.

ORN: Do you still play the Myth games today? Any tips for fans -- especially tips that showcase the work the MythDevelopers community has done for the game?

Michael: Heck, yeah! Aside from testing, I still enjoy playing just like the next guy. The thing is, you'd think that having worked on the game, it would make me a better player. Sadly, that hasn't happened! I especially enjoy the original game, The Fallen Lords, since we only recently got it added to the stable of games we support on PlayMyth.net. If you've had any of your Myth games put away for a while and not played, I want to encourage you all to spend a few hours enjoying the updates we've contributed to make these games play better, faster, and more reliably on newer operating systems such as Macintosh OS X and Windows XP.

The show piece is the improvements made to Myth III. While there is still work to do, we are so proud of what we've been able to do to get Myth III performing and playing better. We wish everyone would go buy the game, download our patch, and get playing. Myth III is such an incredibly fun game to play now, and it's really gotten a bum rap. If you bought Myth III, get our patch, and get online and join us in the multiplayer fun!

The work done on Myth II is also incredible. The native support for Windows XP and Mac OS X has opened us up to new users that no longer have to worry about compatibility issues. The same applies to Myth: The Fallen Lords.

Joe: Over the last six years of Internet-playable games, I've played everything from first-person shooters to Diablo-style role-playing games. Myth keeps pulling me back in. It's been described by players as "digital crack." Several times, I've had college players ask me to disable their accounts during midterms and finals, so they could focus on them without the temptation to play Myth until 3 a.m.

ORN: What advice do you have for others who want to put together a volunteer effort, like what you guys did, to help fix and further develop a commercial game -- or other application -- that's no longer supported by its owner?

Paul: Speaking from a coding standpoint: be prepared to spend a lot of time -- and I mean a lot. Most worthwhile commercial apps have a huge code base, and it can take quite some time to just become familiar with the code base. Plus, don't expect some neatly organized code base with every function commented.

Michael: Persistence is the key. You have to keep pounding on doors and looking for the right people to talk to. These people have hundreds of programmers and developers wanting their attention every day. You'll be ahead of the game if you have your thoughts organized, have a team ready to go, and are able to present yourselves and your ideas. You'll also need to have an idea that they can say "yes" to. We offered to support the Myth games at no cost to the publisher. That is awfully hard to turn down. Whatever you do, don't give up.

Howard Wen is a freelance writer who has contributed frequently to O'Reilly Network and written for Salon.com, Playboy.com, and Wired, among others.


Return to the LinuxDevCenter.com.

Copyright © 2009 O'Reilly Media, Inc.