Showing posts with label WowAce. Show all posts
Showing posts with label WowAce. Show all posts

Tuesday, November 8, 2011

Will the Minecraft Forge API help resolve the current modding mess?

I thought of a small useful mod I want to implement, so I've been investigating current best practices when modding Minecraft.

Boy, what a mess.

The modding situation in Minecraft is quite chaotic at the moment.

In a January, 2011 interview with Gamasutra, Notch said:
High up on priority is a proper modding API that lets people who make mods plug into the game in a way that doesn't break when we update the game.
That never happened. Instead, in a series of three blog posts (post 1, post 2, post3) in April, Notch renounced the idea of an API, instead opting to someday require people to pay to become licensed Minecraft mod developers and download the full source code. In the meantime, Mojang would do nothing.

Due to a storm of protests, Notch quickly backed down on charging fees for mod development. But as promised, Mojang has announced nothing since then about modding. Thus the chaos.

The Wiki page on data values shows just one of the problems: block IDs are restricted to being 255 or below. That's right, it's 2011, RAM hasn't been an issue for years and yet something as important as the Block ID is restricted to a single byte!

Mods that implement new block types have to find an unused ID in this tiny space and hope that another mod or the next update of Minecraft doesn't claim it too. Indeed, the wiki's own pages provide an example of the problem; Minecraft block IDs end at 121 (End Stone), but IDs used by mods start at 98, probably because the wiki page is out of date and doesn't reflect the changed mod block IDs.

There are other IDs for items and sprites that can clash as well. But IDs are just the tip of the iceberg: in order to function, mods need to modify Minecraft's code, and these changes to the java classes can clash with other mods or Minecraft itself due to an update.

Providing an API to allow mods to hook into Minecraft game functions to prevent these clashes is the task that Notch and Mojang walked away from, and the proposed solution of allowing full source access to developers doesn't resolve it. Even with full source access it will still be possible for mods to step on each other's changes.

Full source access may even make the problem worse!

Currently, modders must process Minecraft's .jar file using something called Minecraft Coder Pack. MCP decompiles the java and replaces obfuscated class and variable names with sensible ones chosen by MCP staff members who reverse engineered the meaning of the code. But despite the heroic efforts of the MCP crew, source code that's been reconstituted through decompilation and deobfuscation is never as clear as the original.

Once Mojang allows access to the full source code, mod development will become easier since the actual source code is clearer and easier to work with, plus the tricky steps to invoke MCP's wizardry won't be needed. With this barrier to entry removed, the number of Minecraft mod developers should increase, and as it does the issue of them stepping on each other's toes will get worse.

Members of the Minecraft mod community have attempted to solve this problem themselves by writing their own APIs, but the efforts have been uncoordinated and several competing APIs exist.

In the midst of trying to figure out which community-sourced API had the most support and complete implementation, I came across an audio interview with FlowerChild of the impressive Better Than Wolves mod. I don't usually go for audio presentations such as lectures or podcasts due to the low rate of information transfer, but FlowerChild is a compelling speaker.

The interview is available both as a single long audio file and split up into several YouTube videos. While they all should be listened to by anyone interested in Minecraft modding, his explanation of the need for and merits of the open source Minecraft Forge API project directly answered my questions about the community-based APIs:

I must say that this is the best minecraft related interview I've seen for a long time. As a person who tracks minecraft moding community for a while, that was damn interesting. -miki537, commenting on the YouTube video.

I'm extremely grateful to FlowerChild for taking the time away from other things to be interviewed. He provides valuable insight into Minecraft modding—not just how to do it, but why things work that way. The metadata, as it were.

I had a chuckle when just after listening to FlowerChild's explanation of the monetary motives of some of the competing API developers to profit from downloads or donation buttons, I came across an API whose developer explained its existence by saying that it provided hooks unavailable when using Minecraft Forge. Rather than contribute to the Minecraft Forge project, this developer chose to remain solo. Sure enough, a donation button appears prominently on his download page, and he invokes his API in his plea for monetary support.

As FlowerChild said during the interview, each additional API to download increases the burden on users of Minecraft mods, as well as complicating the support issues for mod developers. Since naive users of mods have trouble installing mod files, the less they need to do it the better. By keeping his functionality out of Minecraft Forge, this API developer seeks to profit by increasing the burden on everyone else.

Back to the main topic: anyone modding Minecraft should use and contribute to Minecraft Forge. It represents the way forward to a future of Minecraft modding that best serves both users and mod developers. Nondevelopers can help too—mod users can preferentially choose mods that use Minecraft Forge, and request Forge support by mods that don't.

My hope is that Minecraft Forge can achieve the same level of success that the developer community for the WowAce library has done with addons for WoW.

Thursday, September 10, 2009

Return to WoW: First disappointment

WowAce Updater is gone. Bummer. My return to WoW starts on a down note and I haven't even logged in.

When I last played WoW I came to favor the WowAce mods. Unlike monolithic addon bundles such as Cosmos and CTMod, WowAce is a mix and match collection of addons. WowAce doesn't force an entire UI change on a player, instead you choose just the addons you want.

Another advantage of separate addons happens after patch days: a monolithic project often waits to release until all its components are updated, while individual addons allow you to install updates as they are released, so at least you have some functionality.

Back in the day, the WowAce Updater allowed one to pick the addons one wanted and it would install them while checking the dependencies to ensure you had the common libraries needed by the addons. It kept the addons up to date too, downloading new versions when needed. WowAce Updater simplified the whole issue of managing many individual addons down to just a few clicks. It was slick, and free.

And that was the problem. WowAce Updater (WAU) was so easy to use and good at its task that the bandwidth costs grew to exceed what the supporters of WowAce could afford. WowAce is a development community and repository, not a release site. So WAU was disabled and the Curse Client substituted instead.

Not only was WAU the better program, but the free version of Curse Client is both adware and crippleware. To even approach WAU's functionality with Curse Client one must be a Curse.com Premium member, at a base cost of $4.95/month. When I was actively playing Warhammer Online I used Curse Client for my addons. I went back recently to update them and first had to update Curse Client only to find that it no longer updates all addons with a single click. That feature has been moved behind the pay wall.

Finally I get to the point of this post: companies that leave in the hands of intermediaries aspects of a customer's experience that could easily be brought in-house. While outsourcing functionality often makes sense, the game industry has cases where the goals of game companies and their intermediaries aren't well aligned. Typically the intermediary's goal is to make a customer's experience worse before making it better.

Curse.com is making making the free Curse Client as bad as it can possibly get away with in order to maximize the contrast with the paid client. While this makes sense for Curse, it doesn't make sense for Blizzard. Blizzard would be well served to incorporate addon management functionality into its forthcoming improvements to Battle.net. This would provide support to all Blizzard's games and offer the best experience to customers at the lowest cost.

Game industry intermediaries whose revenue is derived from a two-tier scheme where bad service is free and good service requires a paid subscription have a problem: this isn't a viable long-term business model.