Archive

Archive for October, 2011

The appeal of Minecraft

October 20, 2011 Leave a comment

I’ve abortively begun to write a post trying to explain to the world (and secretly, myself) why I have spent so many hours playing Minecraft, each time devolving in to describing the emergent narrative of the game and deleting the draft because no one really cares about one randomly generated world. But someone else didn’t give up, and wrote an article that includes the best summary of the heart of Minecraft that I’ve ever read:

 I started on an island that was no more than 12 squares in total area. As far as my eye could see, there was nothing but ocean. I was stranded on few spaces of grass and soil amidst the endless, flickering blue. Not even a tree. It almost immediately began to rain.

With my bare hands, I dug down. Deep into the soil, then the rock, I spiraled my way down in the staircase pattern I had created on a dozen worlds before. Slowly the rain faded into the distance above me. Then it was gone completely. I was enveloped in darkness. Without wood, I couldn’t make torches. Without wood, I couldn’t make a pick. My progress was slow, and I was completely defenseless, a digital grub burrowing into the soil. I was doing it this way because I needed a change of pace, needed to give myself a challenge.

It was then that the zombies began to call out to me through the stone. Instead of avoiding them, I purposefully dug towards them. I knew that they would be in a pocket of open space, that maybe that open space would lead to a lava deposit more quickly than if I were to dig down myself literally by hand. Near the lava and its light I might gather a little time and space for safety, build a little room to hole up in, away from the dark and the cold rain.

The fight was long. I punched three zombies to death. With two hearts left, I did the only thing I could do: I feasted on their rotting flesh. I was sickened, but slowly I regained my health. I had to eat so much of it… so much dead, rotting corpse flesh. But it made me a kind of healthy, and my sickness faded, and my health was full.

Hours later, I broke through into an abandoned mineshaft. At last: wood! I hastily made a workbench and pick, then began to harvest stone, and iron, and coal. Up until that point, the only thing in my inventory had been gravel, dirt, and flint. Quickly I had a breastplate, a sword, an iron pick, dozens of torches, and several stacks of wood. I resolved to return to the surface with my riches, build a boat, and leave this forsaken island for good.

Because the island I started on was so small, digging straight up would have let in the sea and spelled my doom. I had to backtrack, up through the empty, dark spaces where the zombies and skeletons would have re-spawned. The tunnels were thick with them, and after more fights and meals of rotting corpse flesh, I could see the opening back towards my improvised staircase. It was then that a creeper got me. I corpse-ran back half a dozen times, but I had brought out too many monsters. There was no way back, and I deleted the world.

 

Minecraft is not a game with an end, not an experience with a goal. Deleting the world was not a move of admitting defeat, it was the end of that chapter of the procedurally-generated, personally-unique experience. Minecraft is a game about a journey, of incrementally building something better than what you had yesterday, and when that dream is lost, you wipe the slate clean and begin anew. It is an incredibly satisfying game of exploration where you have a thousand tiny goals: build a shelter, make fire, cook food, make weapons, survive.

But each experience is yours and yours alone.

Advertisements
Categories: Uncategorized

Inadvertently following the Unix Way

October 3, 2011 1 comment

I was able to rewrite Robert Berry’s B-Movie Title Generator today in ruby (thanks to the quasi-magical Sinatra web framework) because he, almost certainly unwittingly, followed the Unix Way. By way of a definition, Ted Dziuba recently gave a pretty good summary of the Unix Way in a recent, inflammatory, and otherwise unrelated essay:

A long time ago, the original neckbeards decided that it was a good idea to chain together small programs that each performed a specific task, and that the universal interface between them should be text.

If you develop on a Unix platform and you abide by this principle, the operating system will reward you with simplicity and prosperity. As an example, when web applications first began, the web application was just a program that printed text to standard output. The web server was responsible for taking incoming requests, executing this program, and returning the result to the requester. We called this CGI, and it was a good way to do business until the micro-optimizers sank their grubby meathooks into it.

In practice, the Unix Way looks something like this: you might use wget to fetch a webpage as it’s HTML source, pipe that to grep to use regexes to pull out the bits you care about, and then pipe that to cut to select only certain columns and pretty-print the data. Wget, grep, and cut are three separate, single-purpose programs that communicate by way of the universal language of streams of text.

So how did Bob accidentally flex his neckbeard and abide by the founding principles of our unix ancestors? Backing the Title Generator is a database that has one table that lists all the different types of creatures that the generator can spit out, and another table for all the places, and tags, and so on. You can actually get a full dump of the database as sweet, sweet plaintext.

I am positive that this page is a vestige, a sandbox test that was never removed. But because it stumbled on to the Path of Unix by making an easy export of the database available, anybody with half an hour and a decent grasp of regular expressions can extract the data from it and use it to fuel their own implementation of the B-Movie Title Generator. Which is exactly what I was able to do today. The source is also up on GitHub (check out bmovie.rb for all the magic).

Categories: Uncategorized