Myth II versions 1.5 and 1.5.1 are two evolutionary, completely volunteer-based updates to the 7-year old real-time strategy title Myth II: Soulblighter, originally released by Bungie Studios on December 31, 1998. Thus, this is a somewhat unconventional postmortem, since it consists of a voluntary, fan-based update to a long-released title. However, we feel that the changes to the game are worth documenting and explaining in postmortem format, as a unique look into community attempts to expand an existing title - these updates were not trivial, as many months of work have gone into the changes contained within them.
When Microsoft acquired Bungie, the rights to the Myth series went to Take Two Interactive, who was holding a large percentage of Bungie's stock at the time. Take Two re-released the game and sold it for some time, as well as contracting MumboJumbo to make the sequel, Myth III: The Wolf Age. Eventually, Myth II was considered too old and was taken off the shelves, to make room for newer games.
However, the Myth community still remained, and a group known as MythDevelopers were able to get the proper rights to make updates to games in the Myth series. In a joint effort, MythDevelopers and Project Magma, both consisting entirely of volunteers, released Myth II version 1.4. While many good things came out of MythDevelopers, it decided to disband in December of 2003, leaving Project Magma to handle updates to Myth II and the other games in the Myth series.
Our efforts at Project Magma in bringing Myth II to version 1.5 began around January 2004, and its development continued until June 4, 2004, when we shipped Myth II 1.5. After this, we began work on Myth II version 1.5.1, which was meant to smoothen the rough edges of the Myth II 1.5 update, and we released that update, along with a new demo for Myth II, on March 28, 2005. Our core programming team for 1.5 and 1.5.1 consisted of three individuals, each from a different part of the world: the United States, Australia, and Canada. In addition to our core programming team, about half a dozen or more other very important contributors helped with various aspects of our updates, such as handling our website, doing promotional art, and creating installers, as well as the numerous beta testers and the Myth community who assisted in reporting bugs and providing us with feedback.
Myth II: Soulblighter, as updated extensively
by Project Magma.
The games in the Myth series, as you might or might not know, are and have always been cross-platform - that is, available for both Windows and the Mac. For this reason, this article will contain a lot of information concerning cross-platform development, both the good and the bad. Specifically, I will discuss what we had to do to ensure an excellent experience for the end-user regardless of the platform that Myth II was being played on, and what problems we encountered along the way.
Also, since my role in making the updates was programming, you can expect this article to be a little bit more on the technical side.
What Went Right
1. Migration from Myth II 1.4. One of the most important goals that we set for Myth II version 1.5 was to clean up the mistakes done in previous versions - including the previous major release of Myth II, version 1.4. Myth II 1.4 was a joint effort between us (Project Magma) and MythDevelopers (now defunct) in bringing support for new hardware and operating systems as well as new features to Myth II. A lot of good things came out of that update, but at the same time there were also some undesired aspects to it.
With the original release of Myth II, Bungie included excellent map-making and moding tools with the game, and this spurred hundreds if not thousands of third-party plugins that added new content to Myth II. Unfortunately, one of the downsides of the Myth II update version 1.4 was that it broke a number of these existing plugins, rendering them unplayable. While not all plugins were affected, since only a subset relied on the functionality that was changed in version 1.4, it was still a significant number and thus something needed to be done about it. In addition, Myth II version 1.4 added a new option - "vTFL gameplay" - which simulated the gameplay of the original Myth: The Fallen Lords within Myth II. However, the "vTFL gameplay" code was added without having access to the original Myth: TFL code that was being simulated - so it was not completely accurate, and even worse: some of those gameplay changes ended up slipping into regular Myth II - something that was not intended to happen.
With version 1.5, we wanted to revert the gameplay and plugin compatibility of the game to be very close to Myth II 1.3 - Bungie's last update, while still keeping most of the features that made 1.4 great. So we started with the virgin Myth II 1.3 codebase and added, selectively, features from 1.4 that we felt were worth keeping, while leaving the bad ones out, or recoding them in a better way. Since by that time, we were able to get access to original Myth: TFL code, the "vTFL gameplay" feature was completely redone using the actual code from Myth: TFL - and unlike 1.4's attempt - it was cleanly separated from regular Myth II gameplay, so that normal Myth II gameplay would be left unaltered.
In the end, this effort was very successful, as plugins that were unplayable with 1.4 now worked perfectly with Myth II 1.5, and the gameplay of Myth II 1.5 was very similar to that of Myth II 1.3 (differing only in the lack of some of the bugs that were present in Myth II 1.3).
2. The CoreLibrary. This actually started late during the Myth II 1.4 development cycle, but we continued to work on this with Myth II 1.5 and 1.5.1 and it is important enough to be mentioned here. We at Project Magma were, at the time, working on updates to all three games in the Myth series: Myth: The Fallen Lords, Myth II: Soulblighter, and Myth III: The Wolf Age. Since each of these codebases was an evolution of the previous game, there was a lot of code shared between them, and we needed a way to manage all of that code.
We came up with something we called the CoreLibrary, which contained all the code that was shared between the games. Making changes to files that make up the CoreLibrary would affect all three games, and this made us much more productive. Instead of fixing the exact same thing in three different codebases, often we were able to fix it in the CoreLibrary and have it remedied everywhere.
While the CoreLibrary contained a large portion of the code that made up the Myth games, it is important to note that not all code could be moved there, as lots of code was still specific to each game. We found that certain types of code were well suited to be in the CoreLibrary, and here is a list of the kind of code that we ended up putting there:
- file reading-code: both low-level file handling, and higher level handling of Myth "tag files"
- input handling code: to capture mouse and keyboard events
- networking code: which includes code that talks to Uber/OpenPlay (see later in this article) and metaserver client code (that allows gameplay on servers like http://playmyth.net/ and http://mariusnet.com/)
- audio and sound code
- graphical user-interface drawing code
- and other miscellaneous utility code
What is missing from the list, as you might have already noticed, is the actual gameplay code - which was specific to each game and thus could not be easily merged.
3. Public Beta releases. One thing we had a lot of success with in the development of Myth II versions 1.5 and 1.5.1 was with the way we handled our releases. We chose to go with a slightly different route than previous updates of Myth II, which had all only been tested privately with a small team of beta testers, before the final versions were released to the public.
Though we did have a small internal beta-testing team that would help us test our more-or-less weekly private builds, and our testers were very helpful, we also chose to release public betas to get feedback from a much larger number of Myth players. In preparation for this, we made significant changes to our website, adding new forums and projects sections, through which the public was able to submit bug reports and feature requests to the development team, and this proved very useful.
Before shipping the final version 1.5 of Myth II,
we released two public betas and also a final candidate version to the
public for testing. From this, we've received lots of feedback, both
positive - thanking us for many fixes and new features, as well as
negative - complaining about new and old bugs that were in the game.
All of this feedback, especially the "negative" ones, allowed us to do
much more with 1.5 than what was done with previous updates. Of course,
because of this, version 1.5 took longer than we expected to complete,
but the result was worthwhile. We were able to fix many of the bugs
that were reported to us from the public betas, and as a result we
shipped a much more solid update in the end. We liked this strategy so
much, that we did the same thing with version 1.5.1 (although this time
with a single public beta), and again we were not disappointed.
4. The Demo. Several weeks prior to the original Myth II release, Bungie Studios made available a demo version of the game. It came with two solo campaign levels, and one multiplayer level, and was playable over the net on a metaserver ran by Bungie that was configured specifically for Myth II demo players. With time, the demo metaserver was closed down, and the demo itself was forgotten as Myth II was an old game, and the demo did not receive any updates to run well under modern operating systems.
|The Version 1.5.1 demo's Windows installer which was made with the NSIS Installer Maker system.|
During the development of Myth II version 1.5, we discussed making a new demo that included all the features of all the previous updates that have been released for the full version of Myth II, as well as the features we were working on with version 1.5. However, we did not have a working copy of the code that was used to build the original Myth II demo, and thus we decided to use our 1.5 codebase as a starting point to make a new demo, adding appropriate changes. As we chose not to ship the new demo with 1.5, and instead waited to release it with Myth II 1.5.1, it also benefitted from the new features and bug fixes from that update.
Unlike the original demo, we made this version playable on all the same metaservers that the latest version of Myth II supported - through our server switcher (a feature we introduced in Myth II 1.5). Furthermore, while we still kept the new demo restricted to the same three levels that the original demo shipped with, we made it so demo players were able to join games hosted by players with the full version and vice versa. The only catch, of course, was that those games had to be played on the levels that are available to the demo, so that the full version of Myth II is still needed to get the most out of what Myth II has to offer (including being able to play thousands of 3rd party plugins).
As well as creating the new demo, we also made a promotional page, http://getmyth.com/ which introduces Myth II to new players, and allows them to download the updated demo. We released the new Myth II demo alongside Myth II version 1.5.1, and sent some press releases to a few gaming websites, as well as getting it included on a couple software CDs that came with some magazines. Overall, it was a successful effort, giving new players the ability to try Myth II in its current state without buying it, and bringing some fresh blood to the Myth II community.