Friday, December 28, 2012

Even Valve can act shamefully

Via Hacker News I recently ran across a piece on the Electronic Frontier Foundation's site called First Sale Under Siege — If You Bought It, You Should Own It.

In the piece EFF explains the concept of "first sale":

…once you've acquired a lawfully-made CD or book or DVD, you can lend, sell, or give it away without having to get permission from the copyright owner. In simpler terms, "you bought it, you own it" (and because first sale also applies to gifts, "they gave it to you, you own it" is also true).

Publishers have always hated the first sale doctrine because it reduces their sales, but now with everything moving to digital formats they can act to prevent it. As EFF's piece explains, first sale is under siege because publishers are furiously working to abolish it.

Most gamers are aware of Valve's huge Steam Holiday Sale currently running through January 5th. Deep discounts are the major feature of this annual sale, commonly reaching 50% and often 75% or more.

In addition to buying a number of titles for myself, I also bought a number of gifts for my young relatives. I'd never used Steam for gifts before so I did some research on how it worked. In the process I came across this in the answer to What is a Steam Gift?

Also note that you may only gift new purchases—you may not transfer games you already own. That’d be like wrapping up and presenting the toaster you’ve used every morning for the past year.

Here we have a clear example of first sale being under siege. But more disappointing than Valve being the perpetrator is that the used toaster analogy is wrong and Valve knows it.

Of course real world items such as toasters show signs of wear as the result of being used. Toasters, in particular, readily show wear and accumulate crumbs and other dirt. Obviously a used toaster is less valuable than a new one of the same make and model.

Not only do digitally-distributed games not wear out, an infinite number of copies can be made of the original download. So the sentence should read "That’d be like wrapping up and presenting a clone of the toaster you have, in its original brand new state." But an accurate analogy wouldn't support Valve's argument.

If Valve permitted the gifting of used games it would incur costs both in processing the gift transaction and the bandwidth consumed by the recipient downloading the gift. Valve isn't concerned with recouping those costs, which are but a tiny fraction of the revenue received from a new sale. It wants to avoid the loss of income from a reduction of new sales.

Valve has been called out on this before; one instance is this November, 2011, thread on the Steam Users' Forums called Used toaster analogy is no good in this economic climate. As user puffincat points out, Valve could simply be honest about not wanting to suffer the lost sales.

In using an analogy that it knows to be inaccurate, Valve seeks to mislead its customers. This example shows that even a beloved company such as Valve is not above occasional shameful behavior.

[Update 12/28 15:03] Valve's broken analogy is not a mistake; it's broken for the purpose of shaping consumer behavior. Consider the other two ways Valve could have treated the analogy:
  1. It could have replaced the analogy with an honest admission that Valve and the other publishers think that their sales will be higher by prohibiting the gifting or resale of used games.
  2. It could have omitted the analogy, and prohibited gifting used games without any explanation.
The first option would likely cause some consumers to think of Valve and the other publishers as being greedy, which is not an image companies find useful to project. The second option would have little effect on consumer behavior. Instead Valve chose an inaccurate analogy regarding gifting used games:

That’d be like wrapping up and presenting the toaster you’ve used every morning for the past year.

Can you spot the subtle manipulation in this statement? It creates the idea of being someone so stingy that they'd give a used toaster as a gift. Most people will reject this idea since they don't wish to appear to be a cheapskate. This natural reaction to a concept most people find repellent serves to shape consumer behavior to Valve's benefit—gifting only new games.

There's a word that perfectly describes the inaccurate analogy:

propaganda, noun    Information, esp. of a biased or misleading nature, used to promote or publicize a particular political cause or point of view.

Thanks to the commenters on Reddit who caused me to think further about the analogy and the point I'm making with this piece.

Friday, December 21, 2012

Minecraft: The Lighter block from SDK's Mods

From the General Information spoiler in the topic for SDK's Mods on the Minecraft Forums:

The lighter block lights on fire when power is applied to it.

According to the Block and Item IDs spoiler, the Lighter currently has block ID 131, but it had block ID 112 when this Mod Compatibility List was published in January, 2011.

This video from March 12, 2011 shows Lighter blocks in use:

Minecraft- spider spawner trap with on/off switch

Mojang recently declared that plugins (mods) cannot have exclusive features, so it's no problem that other mods have blocks with similar functionality to the Lighter, such as the Hibachi in Better Than Wolves or RedPower 2's Igniter.

Mojang issued its statement so that it may freely implement functionality in Minecraft that is similar to that found in a mod. Indeed, Mojang has already done this with the Piston, Ender Chest, Anvil (Better Than Wolves has long had an anvil), and 3D Items.

[Updated Dec. 21, 2012 to add the Anvil and 3D items to the list of mod ideas that Mojang has incorporated into Minecraft.]

Thursday, December 20, 2012

Jeb's Minecraft API slides from Minecon 2012

At Minecon 2012 in November there was a session on The Future of the plugin API. The session opened with a presentation by Jens Bergensten (Jeb) which consisted of ten slides. Below are the text of the slides.

Slide 1
  • Minecraft Plugin API
  • Scope and Development
Slide 2
  • What is a Plugin?
  • It's a file package in your game folder
  • It has unique information that identifies it
  • It's loaded with your world
  • It's listed in server information
  • It adds or removes functionality
Slide 3
  • Where Do You Get Plugins?
  • Download from the web manually
  • Download from the Minecraft repository
Slide 4
  • How Do You Use Plugins?
  • Edit plugin settings per world
  • Upgrade plugin versions
  • Changing plugins may require world file conversion
Slide 5
  • Plugins in Multiplayer
  • Defined in property files
  • Connecting players must have either pre-installed the plugin, or will download it from the repository
Slide 6
  • Developing a Plugin
  • In Java, implementing API interfaces
  • Details still unclear!
Slide 7
  • Publishing a Plugin
  • "Publishing" means "putting in central repository"
  • Administration page on
  • Upload updates and changelogs
  • Not possible to remove updates, so do your own snapshots and pre-releases! =)
Slide 8
  • Making Money?
  • Not via the repository or the game
  • Your own site or via YouTube etc, as it is now
  • Minecraft plugins are not exclusive (read Jeb's comments)
Slide 9
  • Development Plan
  • First step is to make Minecraft flexible
  • Enable Plugin loading
  • Do the rest of the API...
  • Step by step, make vanilla a plugin
Slide 10
  • Movie Time!
You'll have to watch the presentation to see the short video that was shown.

Following Jeb's talk there was a Q&A session with questions handled by the entire panel of Jeb, Nathan Adams (Dinnerbone), Warren Loo (EvilSeph), and Erik Broes (Grum).

Wednesday, December 19, 2012

Minecraft: The excommunication of [person4]

[Note: Names are disguised here but are present in the linked material, using the same scheme as in Minecraft harasser says he'll continue abuse.]

[person4] was a well-known member of the [mod A] forums and used to interact frequently and warmly with [person1]. Lately [person4] had started doing Let's Plays, and in the process of building her YouTube presence had apparently started drifting away.

Posted on the [mod A] forum by [person1] on Sun Dec 16, 2012 2:35 pm:

[person4]: She is no longer welcome in these forums for reasons both within and outside of this debate. I will say though that she made an appearance in that 7 hour Stream promoting [mod B], which was the point at which her not being welcome, became a ban. I personally am not aware of the extent of her involvement or position on [mod B], but the extent of her connection with the [API A] community (including her close association with [mod B] supporters like [person3]), and thus [mod B] has become significant enough that I am no longer comfortable with her presence here.

Posted on another forum by [person4] on Monday at 5:52 PM:

I will publicly say here what I say to my live stream when this topic comes up. This entire series of events and drama has been painful for me, for a variety of reasons. Because of that, I have no further comment, and I do not wish to discuss it.

I'm sad for [person4] because all the months of camaraderie and loyalty meant nothing to [person1]—because she was in the wrong place at the wrong time and thus showed up in the wrong video stream, she was cast aside.

I'm also sad since I had hoped that [person4] might help bridge the rift in the Minecraft modding community.

I find this deplorable.

Sunday, December 16, 2012

Minecraft harasser says he'll continue abuse

While updating my blog today I ran across a comment that caused me to start searching. This is what I found.

(Note: names have been disguised here but are present in the linked material, same with expletives.)

From an IRC chat log:

<[person3]> besides, to be honest, i dont think your in a position to moan about this after your mission to 'Destroy [person2]'
<[person1]> mission "[person2] is a c***" was retaliation [person3], not initiation

and from a subsequent IRC chat log:

[23:22] <[person3]> you said it was your intent to literally destroy [person2]
[23:22] <[person3]> your words
[23:24] <[person1]> will I f*** with [person2] as much as possible within *my own moral boundaries*?
[23:24] <[person1]> absof***inglutely

This is a crystal clear declaration by the harasser that he will continue the abuse despite Mojang's statement on Minecraft modder conduct at Minecon last month. Note that the target of the abuse is female.

This campaign of destruction is why I wrote the above-linked item about Mojang addressing misconduct as well as a couple of earlier pieces here and here. It's been apparent to me for over a year, and I've been considering calling for a formalized Minecraft modder code of conduct since last spring when several incidents took place. (Repeated code of conduct violations were why a professional League of Legends player was banned for bad behavior.)

[I previously covered these quotes in a comment an earlier item.]
[Updated with a sentence clarifying target's gender, and updated again to censor the expletives.]
[Updated again with additional material from the second chat log.]

Riot Games bans League of Legends player for bad behavior

Riot Games has banned a professional League of Legends player for "persistent toxic behavior."

Here is the post from the League of Legends Community forums:

Hi Summoners,

Today I’ve got some tough news to share with you. We take sportsmanship and player behavior very seriously, and we fundamentally believe that pro players should not be exempt from scrutiny over their behavior. In fact, we believe pros have an additional opportunity to act as positive role models for the entire community.

The decision to impact someone’s career is not one we make lightly, which is why this is tough news to deliver. Unfortunately, our Tribunal recently was forced to permanently ban a pro player as a response to his persistent toxic behavior, and after closely reviewing the individual’s case and history, the Riot eSports team has issued a ruling that follows this post.

We fully understand that there are other pro players who behave poorly from time to time, and we do not condone any unsportsmanlike behavior. It’s important to note how severe and consistent the behavior of this particular individual was, as is outlined in the ruling. No other professional players in NA approach this individual’s harassment score – that said, we monitor all pro player behavior actively and we will continue to make that clear to all pro teams, and will take necessary action should any other players demonstrate unacceptable behavior in the future.

Promoting good sportsmanship and improving player behavior is a mission that’s extremely important to Riot, and this ruling is a reflection of our commitment.

The next post in the thread, which is the ruling, states:

He has a persistent record of in-game harassment, verbal abuse, offensive language and negative attitude.

This follows up ArenaNet's move in August to suspend Guild Wars 2 players for bad behavior. At the time the consensus was that taking this action immediately after the game's launch was effective in setting the tone for good player behavior.

Game companies will take action against a harassing and abusive player regardless of the player's prominence. They do this because allowing a game community to become toxic reflects poorly on the game, and by driving players away can affect the company's bottom line.

As Riot Games stated, prominent members in a game's community (modders or professional players) are not exempt, and may even be subject to more scrutiny due to the fact that they serve as role models.

Wednesday, November 28, 2012

Mojang addresses copying and Minecraft modder conduct

Finally, almost a year after I posted A statement on Minecraft mods copying features from each other, Mojang has publicly addressed the issue. Speaking in front of a large audience at this year's Minecon panel on The future of the plugin API, Jens Bergensten (Jeb) said the following during his presentation:

The next thing is more complicated. And that is you can't say that just because you've made a plugin with a certain feature, you have exclusive rights to that idea.

For example, if you've seen the pistons mod, we decided to contact Hippoplatimus who made the original piston mod and he helped us implementing it. And he has credits for that in the Minecraft end text. However, if you make a plugin with a feature like that and we may already have our own plans for a similar feature you may not claim exclusivity for that feature. And the same goes for other plugin makers.

So I'm sure we're going to have some Internet drama. So be nice to one another. That's the best tip I have.

There are so many developers that do mods now that it's very difficult to protect ideas. The copyright laws are still in place, obviously, so if you have drawn a texture or made a model or something like that, that belongs to you and you have the copyrights of that. So people may not just freely steal the work you have done.

(Jeb's statement starts at 11:24 in the linked video; any transcription errors are mine.)

The associated bullet point on the slide says "Minecraft Plugins are not exclusive." But the bullet points in Jeb's comment are really these:

  • No features are exclusive to any plugin
  • Plugin authors (and users) should act professionally

The first point, about disallowing exclusive features, echoes my statement on Minecraft mods copying features from each other. Controversy has continued since I published the statement, to the detriment of the modding community. Thus Mojang has finally been forced to speak out on the issue.

The second point might bewilder anyone who hasn't been closely following Minecraft's modding community. This is Jeb's "Internet drama" statement where he directs people to "be nice to one another." Although this statement is forward looking, anticipating future drama, the whole topic of copying and conduct is being addressed due to things that have already taken place.

In the past year there have been several instances when one modder attacked another in a manner reminiscent of bullying. These attacks have been egregiously unprofessional. You've never read about a blood feud between, for example, professional game developers such as Will Wright and Sid Meier. They've never raided each other's forum threads, IRC channels, or YouTube comments, or through their insults and disparagement of the other's reputation, incited their fan bases to attack the other on their behalf. These things have all taken place in the Minecraft modder community.

Despite working for competing companies, professional game developers get along because the gaming industry is not a zero-sum game. Gamers buy and play multiple games and take pride in owning huge libraries of titles. Accomplishments by one designer don't diminish the others. Game Developers conferences and other professional gatherings are happy times where developers get to meet their peers, reconnect with old friends, and make new ones.

Defenses based on claims that developing a plugin is merely a hobby and thus not subject to the bounds of professionalism are no excuse for bad behavior. It may be a hobby for the modder, but it's a business for Mojang. Minecraft's player demographics include a huge number of children and young teens who are readily influenced by the behavior of leading modders. Mojang wouldn't want a think of the children-type scandal to arise in the Minecraft community. The more prominent a modder is the more they can expect to have any bad behavior noticed.

[Updated Dec. 16, 2012, new text follows.]
[Updated Dec. 19, 2012, see Marc Watson's comment for why none of what I say below is likely to happen.]
[Updated Jan. 3, 2012 again as a result of Marc Watson's comment.]

Should Mojang decide to deal with bad behavior it might follow the current practice of other game companies. For example, Riot Games banned a professional League of Legends player and ArenaNet in August suspended many Guild Wars 2 players; you can read about both incidents at the link.

I don't know how Riot Games's rulings work; League of Legends players are named and shamed for every violation if all the rulings are public. In the case linked at the top of the article, the banned player is very publicly named and shamed (both real name and in-game handle) in the ruling since it is the second post in the thread.

Dealing with bad behavior is not the responsibility of a game developer, which might explain Jeb's apparent unease while addressing it. Bad behavior is typically handled by a game's community manager or a software company's developer relations person.

I don't know if Marc Watson's Customer Support position encompasses the community manager role, or whether Mojang would need to hire one. Mojang has waited far too long to address the bad behavior, which has been allowed to fester. Long running grudges and feuds are best prevented early with quick action.

[End Update.]

(See also A statement on Minecraft mods copying features from each other.)

Friday, November 23, 2012

Google weighs in on how gamers use search

I didn't know it when I posted Measuring MMO popularity with Google Trends, but Google had earlier issued a white paper and blog post on how gamers use search. Both the blog post and white paper are in support of Google's ad business and aim to convince game publishers to advertise with Google.

The blog entry, How the digital era has changed video game launches, summarizes the white paper.

The white paper itself, Understanding the Modern Gamer, has the details and is based on an analysis of "…video game searches…for the top 20 selling games of 2010 and 2011."

Quoting various bits:
Game searches included title keywords, such as ‘Elder Scrolls V’, along with all relevant game title keyword variations, such as ‘Gears of War 3 trailer’, ‘Battlefield 3 website’, ‘Batman Arkham City review’, and more.
Search data analysis is representative of gamer behavior for 2 reasons: (1) millions of gamers use search engines, providing us with an unparalleled data set and, (2) gamers are incredibly savvy Internet users whose searches reveal an extraordinarily high level of intention.
Desktop engagement patterns closely align with game unit sales trends (.92 correlation)…
In 2011, desktop searches per gamer grew 20% y/y. Additionally, desktop search volume for marquee titles increased 29% y/y, outpacing the 8% growth y/y in console gamers online.
Our data reveals a .92 correlation (on a scale of -1 to 1,1 signifies perfect correlation) between clicks during the 10 month game launch cycle and game units sold during the first 4 months post-release…
More importantly, our data demonstrates that 84% of sales can be predicted by all clicks during the 10 month launch cycle. We used the regression coefficient from our analysis to create a predictive model and found that if a game accrues 250,000 clicks in the 10 months around launch, it will likely sell between 2 and 4 million units in the first four months after release.
Although user click data is a powerful predictor of game unit sales, we readily acknowledge that other factors – such as game quality, TV investment, online display investment, social buzz, and more – must be incorporated into our analysis to create a predictive model that is even more accurate and reliable.
There is a quantifiable link between what people search for and what they buy that enables us to predict game sales.

Note that the study may involve console games only.

At the time when a person conducts a search, that game has the person's attention. This is more true than for Xfire or Raptr which merely measure when a program is running, not what the owner of the computer is doing.

Xfire and Raptr are not measuring attention. As Wilhelm Arcturus reports, they will report a game in use when a computer is left unattended with a game launcher open. Even if the game itself is running, the player may be on a bio break, macroing, or using some other AFK-based exploit where the game is running without the player present.

Google Trends statistics reflect people physically present at their computers actively typing the name of the game into the search box. That's a significant level of engagement with a game, even if they aren't actually playing at the time of the search.

Google Trends does have some issues that may result in it undercounting mature games. As a game matures, everyone becomes familiar with it. Once it's old news the number of people searching for it by name to get general information will fall.

Well after release games may retain high numbers of engaged players conducting searches, but these searches focus on details of the game. Such searches include highly targeted game-specific terms but often not the name of the game as discoverable by us using Google Trends, although Google itself could tie such searches back to games using its data. (See also Tobold's commenter Oscar's comment about "functional" searches.)

Discovery of game-world information for mature games may also move off Google to game-specific database sites, build configurators, or forums, depending on the extent of the game community's ecosystem.

Despite these shortcomings, I think Google Trends is much better suited than Xfire or Raptr to measuring the popularity of a game, due to Google's huge demographic advantage.

SOE president John Smedley validates the use of Google Trends to measure game popularity

In the throes of the recent launch of PlanetSide 2, SOE president John Smedley has been quite active on Twitter. Tonight (or actually last night) he tweeted this:

Happy to see this

His tweet links to a Google Trends plot much like this one:

The difference being that his plot shows the most recent 90 days, while the above shows an absolute time range of September through November. Both plots are similar now but the above plot won't change after the end of the month. [Update: He tweeted on November 22nd when the most recent data for Google Trends was from the 21st. November 21st is the point where the blue line for Planetside 2 briefly crosses the red line for League of Legends.]

When I first blogged about Measuring MMO popularity with Google Trends a bunch of MMO bloggers were pretty critical. Smedley could have cited Xfire or Raptr, but his tweet is a nice validation of Google Trends from the president of a prominent MMO company.

Wednesday, October 3, 2012

Measuring MMO popularity with Google Trends

Tobold had a bet going that with the release of the Mists of Pandaria expansion, World of Warcraft would retake the top spot on The Nosy Gamer's rankings of the top twelve MMORPGs. Guild Wars 2 had held the top spot since its release last month.

Nosy Gamer's rankings are based on data from Xfire and and thus reflect its fairly hard core demographic, so with this week's rankings out showing WoW indeed beating GW2, Tobold gets to crow about being right.

But since games are now played by people far outside the narrow demographic of hard core gamers measured by Xfire, I'd like to call attention to another source of data which can be used to measure a game's popularity—Google Trends.

Below I'll show that the Google Trends dataset reveals WoW's long-term decline despite the four expansions released over the years. It also shows that while a few western MMOs have spiked above WoW's popularity for a short time, only one asian MMO has been able to sustain it. There are a few western games that are more popular than WoW but they're not MMOs.

Tuesday, September 11, 2012

Wannabe crafting monopolists hating on Guild Wars 2

I've been playing and enjoying Guild Wars 2. One of the differences between GW2 and other games is the universal Trading Post, which is an auction house that spans all the servers.

Because spanning all the servers allows the Trading Post to provide a very efficient market, it's been subject to some heavy criticism from MMO bloggers.

While not criticizing the Trading Post, Spinks notes that:

...raw materials (particularly metal, cloth, and leather) typically sell for more than the finished pieces.

How is this new? This was always the case with WoW items crafted from trainer recipes. The issue is the crafting system, not the TP. (I don't mean to imply that Spinks is a wannabe monopolist; I just wanted to point out that selling crafted items below cost is not new with GW2).

Tobold weighs in with a piece titled Crafting regrets in which he says:

I think Guild Wars 2 is extremely bad for making money from crafting, because the auction house spans all servers. There is no opportunity for arbitrage in such a large economy. [my emphasis]

And later:

There simply doesn't appear to be a point to crafting in Guild Wars 2. Are the any "bind on pickup" recipes like in World of Warcraft? If not, I'll just buy everything for cheap on the AH. [my emphasis]

Arbitrage—that's something Wall Streeters do. I've done it to earn gold in MMOs, but I've always felt a bit dirty doing it. I think it's excellent that the efficiency of the Trading Post reduces the opportunity for arbitrage.

I read Tobold's post a few days ago but had forgotten it by the time I read and commented on Elder Game's The Case Against Auction Houses. I'm reproducing my comment here in full since it serves as an excellent rebuttal to Tobold's desire for monopolies via bind-on-pickup recipes. On Elder Game I wrote:

I love crafting, particularly to make items for my main and alts.

Sure, it's nice to be able to sell at a profit, but not if it involves monopolies. What the crafters who whine about profit are really saying is "I want a monopoly." Personally, I wouldn't cater to the wannabe 1-percenters, but hey, it's your game.

In-game shops use geography to achieve local monopolies (perhaps shared with a few others). Not all locations are as good as others, so how would the game decide which players get to have shops in the prime locations of the crowded main city?

The problem isn't with the AH, the problem is with crafting systems. WoW limited the supply of crafted items by making some ingredients rare, but mostly by making recipes random rare drops; anyone lucky enough to get a Pattern: Rich Purple Silk Shirt can make a bundle, either by selling it outright or as a tailor making the shirts.

Worst were the bind-on-pickup recipes that dropped in endgame instances so that non-raiders had no hope of ever acquiring them. As someone more interested in crafting than raiding it was one of the things about WoW I hated most.

The issue is how to limit the supply of crafted items in a fair and equitable manner without resorting to using the random number generator to award monopolies to 1-percenters.

As I see it the problem is with designs that make it possible to create items in the blink of an eye. Why do so many games allow one to "lovingly handcraft" a valuable item in the time it takes to click a mouse? Craftsmanship implies labor over a period of time.

One game I've seen which implemented a crafting bottleneck well was Fallen Earth, where crafting takes real time whether you're playing or logged off. Making crafting use real time limits the supply without resorting to randomness or monopolies. Yes, it's still open to exploitation, or at least mass production, through the use of alts and additional accounts, but the idea of making item creation take real time seems like a good mechanic.

It leaves unsolved the issue of how to provide a sink for all the commodities left unused by a time-throttled crafting mechanic.

There are other ways to improve the profitability of crafting instead of implementing recipe monopolies or making the Trading Post less efficient:

First, others in the thread brought up the old idea of real wear and tear so that items don't last forever but wear out and require replacement.

Second, eliminate gear as quest rewards, and do away with 99 percent of all item drops from mobs so that they only drop salvage items or vendor junk. A useable item of any quality dropping from a mob should be a rare thing. Make the majority of gear in the game player-crafted, except for a handful of items.

The ancient trope of phat lewtz drops carried down from the pencil and paper days of Dungeons and Dragons hurts crafting more than any Auction House. Early D&D's focus on combat at the expense of crafting has persisted in RPGs for years and continues in MMOs.

For the first couple of years of its existence, Minecraft had it right in that mobs only dropped raw materials. I was very disappointed when an update cause mobs to sometimes drop weapons and armor, possibly enchanted.

As I see it, Guild Wars 2's changes to crafting and commerce aren't the problem—the real problem is that the changes didn't go far enough.

Wednesday, May 30, 2012

Soren Johnson on Minecraft in the cloud

One can’t help wonder what Mojang could do with a cloud-based version of Minecraft, seamlessly updated, playable from any device or browser, that connects every world end-to-end.
-Soren Johnson in GD Column 20: The Coming Storm
Originally published in the Feb 2012 issue of Game Developer magazine, he posted it to his blog today.

Beyond the mention of Minecraft it's an interesting discussion of cloud gaming that I highly recommend.

Saturday, April 28, 2012

6502 emulator in Minecraft runs Forth

Notch's new game 0x10c and its virtual 16-bit computer, the DCPU-16, have made news recently. Somewhat eclipsed by Notch's project is the 6502 emulator now available for Minecraft as part of Prerelease 5 of the mod RedPower 2 by Eloraam.

Eloraam calls it the 65EL02, because "it supports all the 6502, 65C02, and part of the 65C816 instruction set" as well as "a set of completely new instructions and two addressing modes."

The emulated CPU comes with 8K RAM, with up to seven additional 8K RAM Modules installable on Backplanes that must be placed on blocks behind the CPU.

Additional components are Monitors, floppy Disk Drives, and IO Expanders, all of which may be located at a distance from the CPU as long as they're connected by Ribbon Cable blocks.

A minimal installation consists of a CPU, Disk Drive, and Monitor. Up to 256 devices (just the Monitors, Disk Drives, and IO Expanders thus far) are supported by Redbus over the ribbon cables.

RedPower 2's 65EL02 computer system in Minecraft. Shown are a CPU with three 8K RAM Modules, a Monitor on the left, and a floppy Disk Drive adjacent on the right. Further right a Ribbon Cable connects to an IO Expander interfaced to a Bundled Cable that carries 16 redstone signals. (Click to enlarge.)

The portion of Eloraam's addon with the computer is known as RedPower Control due to its intended use for industrial process control. Among other things the computer can control in Minecraft are automated mining machines built with RedPower's newly-introduced Frames, which are movable scaffold blocks used to build moving gantries, booms, and cranes.

Eloraam has put an incredible amount of work into RedPower Control and the other parts of Prerelease 5, and it shows. Her textures, while remaining at Minecraft's low resolution, are very attractive and make RedPower's items pleasant to look at in-game.

A example is the front panel displayed when you right-click the 65EL02 CPU block:

The front panel of the 65EL02 CPU. Yes, the toggle switches really work! (Click to enlarge.)

The front panel recalls the look of Digital Equipment Corporation (DEC) hardware really well. The rocker switches, in particular, are great renditions of those on the front panel of PDP-11/35s and /40s. When I complimented her on the appearance of the front panel, Eloraam described the effort it took:

The rocker switches took hours to draw. They were so hard that I ended up resorting to tracing the rough contours and illumination from the one good front-on picture of a PDP-11/35 I could find on Google. Even then, it wasn't a copy-paste job. The exemplar gave me a good map of where the speculars and shadows fall, but it was also a grainy JPEG with a myriad of photographic imperfections, as well as having the wrong aspect ratio. So once I put down the basic outline and marked out how the speculars fall, I tossed the exemplar and drew everything myself.

I must admit I found working on such a large canvas daunting. I'm an engineer, this art stuff is all new to me. I've developed a knack for 16x16 through lots of practice (RedPower has something like 500 sprites now, and I drew them all), but this was something else entirely.

Since the 65EL02 is an 8-bit CPU, Eloraam didn't have as many options for programming environments as we have on today's 64-bit computers. While it's possible to program the 65EL02 in assembly language, for general use she chose to implement a Forth interpreter. Less well-known than BASIC, Forth is far more powerful while retaining a tiny footprint and being easy to understand.

The output of the Forth WORDS command. (Click to enlarge.)

Note the sophistication of the scheduler built into the 6502 emulation as described in this reply by Eloraam to a question about infinite loops:

Infinite loops are fine. RP Control is carefully designed so that you won't screw up your world even if you crash the virtual computer. It's actually not especially hard to crash the virtual computer, since the whole OS is loaded into its RAM and you can easily write to that RAM. Still, since the computer is fully virtualized, it won't hurt your world or even cause a slowdown.

The one thing to note is that you should always use at least one TICK or some TICKS in a loop if you're just waiting for things in the world to change. The computer will run a lot faster if you're not constantly wasting CPU cycles. The CPU only gives you a small number of cycles each tick, but it saves them up (to a certain limit), so if you don't waste them, your CPU can run a lot of code at once when you need it. TICK (and TICKS) calls a special instruction in the CPU which saves up any unused cycles, so it's your friend.

Further technical information about RedPower Control's 65EL02 is available on Eloraam's blog RP Control Internals, and on the RedPower wiki's page for RedPower Control.

For those that prefer video, YouTuber direwolf20 has a video introduction and basic tutorial for RedPower 2's new computer system:

It's interesting to note that Notch considered the 6502 before switching to a custom 16-bit CPU, even going as far as writing a working 6502 emulator. Just two days after getting his emulator running, Notch tweeted:

Starting to dislike the 6502 idea. Spending heaps of cpu cycles to emulate not being able to multiply. Reconsidering custom CPU again.

It appears that Notch intends his virtual CPU to be a major part of his new game and thus decided that the 6502 would be too limited due to being eight bits. Judging by the enthusiastic reaction to the DCPU-16 it appears he made the right choice.

Eloraam took another path by augmenting the 6502 with 65C02 and some 65C816 instructions and implementing MUL and DIV. The goal for the 65EL02 is much lower than for the DCPU-16. While capable of cool things, the 65EL02 seems intended to be a workhorse for carrying out the business of industrial process control in Minecraft.

Much of the excitement about the DCPU-16 has been anticipatory, although this will change soon when Notch releases the DCPU-16 emulator and then the first playable release of 0x10c. On the other hand RedPower's 65EL02 is available now and fully usable in its intended environment.

Let the 65EL02 hacking begin!

Update: This article was linked on Hack a Day, Slashdot, and engadget.

Monday, April 23, 2012

Escalator in Minecraft using RedPower 2 Frames

Eloraam recently unveiled prerelease 5 of her RedPower 2 mod for Minecraft. One of the long-anticipated features in PR5 is Frames, which are movable scaffolding blocks that have had fans drooling since last fall.

On my list of possible things to build with Frames was an escalator. I'm pleased to show that RedPower 2 Frames indeed make it possible to construct an escalator in Minecraft.

Escalator using Frames from RedPower 2 (click to enlarge)

A still picture really doesn't do it justice, one needs to see it in action:

One fly in the ointment: Frames don't move the player horizontally, so you have to hold the Forward key during the horizontal movements.

This escalator somewhat misuses Frames and Frame Motors. In normal projects where Frames are used to construct mobile gantries or booms, the ratio of Frames to Frame Motors might be on the order of 30 to 1. Here it's roughly two Frame Motors for every Frame.

The design turns out to be quite simple. Because the Frame Motors for each direction of escalator travel are in the same plane and are adjacent both horizontally and vertically, no additional wiring is needed for power beyond the the single Blue Alloy Wire providing it at the base. Like all blulectric devices, Frame Motors conduct blutricity to their neighbors.

A Red Alloy Wire on the back of each set of Frame Motors supplies the timing signal to synchronize all the motors. The signal is from a Timer set to an interval of one second. I'm not sure how inefficient it is in terms of blulectric power consumption to activate all the Frame Motors for each move when only half are needed, but it's much simpler to wire.

This escalator just represents the tip of the iceberg. Frames are an incredibly flexible building block that can be used in a countless number of ways in building things that move.

And Frames are just one of the new things that arrived with prerelease 5. When you combine Frames with Control's emulated 6502 CPU, the liquid handling provided by pumps, and the parts added to Logic, the result is a set of components that will keep RedPower 2 players busy for a long time.

Edit: Thanks to Eloraam and others on the Minecraft Forums who answered questions, and to direwolf20 for his YouTube tutorial showing the basics of frames.

Saturday, March 24, 2012

Minecraft: The meaning of Mojang's hiring of the Bukkit team

As promised a couple of weeks ago when I reported that Mojang hires the Bukkit devs for its Minecraft team, here are my thoughts on its meaning.

First, in-game mod selection and download is an important strategic direction for Mojang as made clear by this sentence in Mojang's announcement:

In addition to the bukkit members, Daniel Kaplan (@kappische) will join to handle the project lead to coordinate Minecraft’s broader goals.

Second, it was a brilliant hire in a couple of ways.

1. As volunteers the Bukkit team could have done anything; while most people modding Minecraft have chosen to do the fun thing and implement new game features, the Bukkit devs instead chose to dig in and do API infrastructure work.

Their experience and self-selected API focus makes them the best people for the job.

2. Bukkit's About Us page includes this:

This advantage is further extended by our design choice to keep in the mind the possibility of 3rd party Minecraft servers needing a modding and plugin interface. That being said, when any 3rd party developed Minecraft server becomes stable, Bukkit will be there to allow our collection of plugins to work with them too through a new interface, without any work required for the plugin author to make it compatible.

"Third party Minecraft servers", now there's a phrase to strike terror in Mojang's heart. The arrival of third party Minecraft server software would begin to wrest control of Minecraft from Mojang in the same way that PC compatibles took control of the PC from IBM in the 1980s. Good for customers, not so much for IBM and Mojang.

While open source software can't be killed, projects can be robbed of momentum, in this case by hiring the staff and focusing their efforts elsewhere. So this is a good move for Mojang as it probably delays somewhat the arrival of viable third party servers. The Bukkit devs weren't working on third party servers, but they were clearly sympathetic in anticipating their arrival; in Mojang's employ they will be less so.

Third, it means that the official Mojang mod API is still months away. Instead of delivering an API solution in March, Mojang is just starting its design. So don't look for anything before summer. And considering the server and client work necessary to support in-game mod selection and download, a late summer or fall timeframe is likely more realistic.

Fourth, and this is not new, it means that ModLoader, ModLoaderMP, AudioMod, Forge, Bukkit, and several other small APIs are all dead once the official mod API arrives. This is a good thing; these mods would never have existed in the first place had Mojang fully supported modding from the outset. If Mojang stands to benefit from the Minecraft platform, then it, not the community, should do the work to implement and support that platform.

Fifth, Spout refuses to die and is attempting to exploit Bukkit's imminent demise by encouraging people to switch over to it. Spout needs to do this now because it will be a very tough sell to get people to switch to its launcher once the new official client arrives with in-game mod selection and download. Not to mention that Spout will be interfering with Mojang's strategic goals.

Sixth, since Mojang is just getting the design process underway, few details have been worked out at this point and there are still many unanswered questions.

Seventh, since Mojang will be hosting the download files once in-game mod selection is available, any incidental revenue associated with downloads currently earned by modders from URL shorteners like will disappear. It remains to be seen how Mojang might replace that revenue stream for modders.

Eighth, once in-game mod selection is available, presence in the client's list of downloadable mods will be all-important. Absence from the in-game mod list will render a mod invisible to the great majority of Minecraft users. It's not clear if Mojang will have an approval process for mods, or whether all mods will be accepted. I think it's likely that the arrival of the first offensively tasteless mod in the mod list will cause Mojang to initiate an approval process to protect Minecraft's family-friendly orientation.

In-game mod download will also give Mojang an effective incentive with which to shape the behavior of modders. It will have a carrot in the form of featuring a mod, and a stick in the form of removing a mod from the list. Thus, should Mojang develop a Code of Conduct for modders, it won't be toothless.

Ninth, modpacks will die. The convenience of modpacks won't be needed once in-game mod selection and download arrives. Many modders will be quite happy to see the demise of modpacks and may help it along by revoking permission to include their mod.

Finally, this move further complicates Curse's strange relationship with Mojang. I had wondered about Curse Client support for Minecraft mods, but after nothing was announced at Minecon it seemed that this wasn't in the cards. When Curse signed the Bukkit team it began to support server mods, and today lists for download 2,475 Server Mods and 48 Client Mods. Jens has stated that in the future single player Minecraft will function by connecting to a local server, thus unifying the current split between single and multiplayer mods. Thus it appears that Mojang will reclaim server mod hosting once it implements the mod support in the client.

[Updated to add the ninth thought about modpacks.]

Wednesday, February 29, 2012

WoW developer Blizzard Entertainment to lay off 600

As reported by Develop (Blizzard to axe 600 jobs) and Gamasutra (Blizzard cuts 600 employees in organizational shift):

Blizzard Entertainment will lay off around 600 employees -- around 90 percent of which will come from its non-development departments -- after completing a review of its "current organizational needs."

According to Gamasutra's numbers, that cuts Blizzard's workforce from roughly 5600 to around 5000.

Even though it's mostly overhead, that's still 60 developers. Gamasutra reports:

Blizzard says its World of Warcraft team will not be impacted, nor will its development and publishing schedules for upcoming releases like Diablo III, StarCraft II: Heart of the Swarm, Blizzard DOTA, and its Mists of Pandaria expansion for World of Warcraft.

Not mentioned as exempt from the cuts were the in-development Titan MMO project or the online gaming service.

Although it's not mentioned, World of Warcraft's falling subscription numbers must be a factor.

This is the surest sign yet that WoW has peaked and, while still a powerhouse, has entered a period of decline.

Mojang hires the Bukkit devs for its Minecraft team

And just like that, with one swift move Mojang more than doubles the size of the team working on Minecraft:

Today we can announce that the four main developers of bukkit – a community-based Minecraft server implementation – have joined ranks with Mojang to bring you the same flexibility and versatility to the official Minecraft server. The four, Warren Loo (@evilseph), Erik Broes (@_grum), Nathan Adams (@dinnerbone) and Nathan Gilbert (@tahgtahv), will work on improving both the server and the client to offer better official support for larger servers and server modifications.

The plan is to build a fresh server API, and then extend it to support client-side modding (in one way or another). We will try to make it easy for bukkit users to convert if they wish to do so, but backwards compatibility is not guaranteed. We will, however, help bukkit to be compatible with 1.2, to avoid having a long gap while you wait for the official Minecraft server to catch up.

Many of you may ask why we decided to work with bukkit instead of other Minecraft teams, such as Spout or Forge. The reason is that we want more than just modding, and these guys have always had server admins in mind when developing their additions to the game. We hope that this will help the quality of Minecraft multi-player to improve, both for large and private family servers, while still being able to add fun stuff for the bigger audience.

In addition to the bukkit members, Daniel Kaplan (@kappische) will join to handle the project lead to coordinate Minecraft’s broader goals. I (@jeb_) will remain as lead developer and game designer for Minecraft.

From the announcement on

I am extremely pleased and proud to announce that, as of today, the Bukkit team has joined Mojang. When discussing the possibility of a modding API publicly, Mojang was concerned that they would be unable to provide the community with a suitable and powerful enough solution and we honestly feel that our experience building Bukkit will help them do so. Thanks to our work with Bukkit, we have a years worth of experience, failures and lessons to help us develop a proper modding API and intend to do whatever it takes to produce one that satisfies the needs of the community. Now that we have an opportunity to design the official Minecraft API, we intend to make it a suitable replacement for Bukkit, if not a significantly better one, while will remain a community for modders for the foreseeable future.

This is a good move; I'll have an analysis in a later post.

Tuesday, January 3, 2012

Minecraft: Sorting and smelting system using RedPower 2

Since building the Compact cobble generator I've been expanding my base. This article describes the sorting and automatic smelting system I built using RedPower 2.

The system uses seven sorting machines in series all sharing a common delivery tube. The use of a single delivery tube saves tubing and space in exchange for limiting your sort to fifteen categories (sixteen if you included unmatched items). While I used seven sorting machines, this system could be expanded to any number of sorters which would allow the sorting of hundreds of different items.

Photo 1: Seven sorting machines fed from the alchemical chest on the left (click to enlarge)

Of course you could use any number of sorters all using separate delivery tubes, but I wanted to see what could be done with an array of sorters using just a single delivery tube.

Overview diagram (click to enlarge)

  • A chest serves as the main input to the row of sorting machines.
  • The sorters assign color tags to the items which travel to the storage chests.
  • Items which traverse all 7 sorters without getting matched end up in an exceptions chest.
  • Ores which require smelting are sorted to the furnace feed chest.
  • 8 blulectric furnaces arranged in parallel make short work of smelting tasks.
  • Ingots from the furnaces are returned to the sorters, bypassing the input chest.
  • Also bypassing the input chest are the harvests from the sugar cane farm, a cactus farm, and a low-output passive tree farm.

An alchemical chest from the Equivalent Exchange mod serves as the input chest (see photo 1).

A filter pulls the items from the chest. Because the filter's inventory is empty, it will pull all the stacks from the input chest. (If you want single items pulled, use a transposer.)

Output from the filter enters the first sorting machine. It's powered with a blue alloy wire, and passes the power along to the adjacent sorters.

Since the sorting machines are all in-line and receive items already traveling through the tubes, they don't require a redstone signal to activate.

Configuration for the second sorter in the chain (click to enlarge)

The sorting machines are set to mode 5 and so sort everything they receive, and assign a color to items that don't match. This system uses pink for unmatched items.

Sorted items emerge from the sorters with a color tag. They go up and take the common delivery tube to their destinations. Unsorted items enter the next sorter in the chain.

To understand how this arrangement of sorters works it's useful to review two basics about tubes in RedPower 2:

  1. Routing in RedPower tubes selects the closest valid destination.
  2. Color tags keep wrong-colored items out.

After the first sorter, the inputs to the subsequent sorters in the chain are colored pink. All items emerging from these sorting machines want take the shortest path and enter the next sorter in the chain, but the pink input tubes keep everything out except the unsorted items. Thus the sorted items are forced up into the common delivery tube on top of the sorters.

Photo 2: The transposer near the last sorter (click to enlarge)

The last sorting machine in the chain sends its unmatched output to a chest (see photo 2). Note that the chest is further away than the route back to the last sorter's input, so unmatched items will loop through the last sorter unless special measures are taken. An in-line transposer causes the route to the chest to be seen as the shortest path for pink-tagged items. (If you have extra colors, you can eliminate the transposer by replacing the pink tag with an unused color.)

Photo 3: A filter pulls a few unsorted items (click to enlarge)

A filter grabs a few specific unsorted items for storage in a separate chest (see photo 3).

Currently the sorting machines still have many unused columns available for sorting additional items. Besides the default color of pink, this system currently has 13 colors assigned, for a total of 14. That leaves two colors for expansion.

Note that sorting machines in mode 5 without any items in their configuration columns don't think they have anything to do, and won't assign the default color. In other words, an empty sorting machine won't do anything. When you are testing the handling of unsorted items, make sure you put at least 1 item into each sorting machine, even if you don't assign it a color. [Update: This has been fixed in RedPower 2 Prerelease 4c.]

Photo 4: The common delivery tube connects to the storage chests (click to enlarge)

The common delivery tube leads from the sorting machines to the storage chests (see photo 4).

The two alchemical chests are not connected to the sorting tubes. The first stores the RedPower 2 supplies for color tagging the tubes.

The second is for tools storage, and uses an Equivalent Exchange mod item called the Talisman of Repair to keep things in good condition.

Here's the current assignment of storage chests:

Yellow: metal ingots
Light blue: redstone, glowstone, and covalence dust
Brown: wood products

White: RedPower rocks (marble and basalt)
Gray: stone, stone brick, and clay

Green: plant harvests
Lime: creature drops

Light gray: glass and RedPower microblocks
Blue: RedPower wiring and logic items
Orange: pistons and RedPower machines and tubes.

Cyan: diamonds and other valuables
Black: coal and flint

Photo 5: The red tube ends at the furnace feed (click to enlarge)

The red tube leads to the furnace feed chest (see photo 5).

A filter pulls items from the chest in stacks of 4 to send to the furnaces.

Stacks of 4 take 20 seconds to smelt, so the timer for the filter is set to 2.5 seconds, which is 20 seconds divided by 8 furnaces. I haven't done timing tests to optimize the timer setting. An optimum configuration would locate the filter adajcent to the first split in the tubes to minimize travel latency.

Photo 6: The 8-way Blulectric Furnace system (click to enlarge)

The feed tubes lead to the center of each furnace cluster; equal path lengths yield even distribution (see photo 6).

Return tubes go under the floor and lead to a retriever. An empty inventory causes it to pull any item from the furnace outputs. Equal length tubes ensure that the retriever pulls evenly, and it's on a fast timer.

Prior to prerelease 4 a transposer would have been needed for each furnace to gather the output, but a single retriever can pull the smelting results from all the furnaces.

Blulectric furnaces take input on the left side and make output available on the right, so each cluster has the furnaces rotated so that left faces in towards the feed and right faces out for the return.

The two furnace clusters could have been located closer together but I wanted to be able to walk between them.

A bank of 18 battery boxes powers the furnaces. Three blue alloy wires in the floor provide power to different sections of the two furnace clusters. Since the wires are rated for 100 amps, and each furnace pulls about 10 amps, there is no danger of overloading the power feeds.

Photo 7: Not quite enough solar panels for the job (click to enlarge)

The battery boxes are charged by an array of 22 solar panels, which is only half of the 40 panels that I should have to run the furnaces (see photo 7).

[Edit: I thanked them on the forum, but I'd like to express my gratitude to Minecraft Forum users Kyyshrrk, TheEnlightened, and Eloraam for clearing up my confusion about the way that color tags influence tube routing.]