Heavy Rain

So, Sony released a little game for the PS3 yesterday called Heavy Rain. Having already played the demo, I ran out and nabbed a copy. I got home, popped it in. I thought I would play for a little while, just to see the intro, you know?

A very short while later, I heard this: “Hey, you know it’s almost 1 in the morning, right?"

It seemed strange that a character in the game sounded so much like my wife. Also, my character had just looked at her watch, and it was way after 1. And there wasn’t anyone else in the room.

“Did you hear me?"

The surround sound on this game is great, too. It sounds like that voice is coming from right behind me. I turn my character around, but don’t see anything. Kinda creepy.

Then it dawns on me, and I press Start, and turn around.

This is the effect Heavy Rain has on me. The story in this game is that gripping, compelling. It propels you forward naturally, the pacing keeping you engaged without overwhelming. This game has the highest production quality of any game I can recall playing. I’ve seen the phrase interactive movie thrown around here and there over the years, but Heavy Rain turns that on its head; it is not a movie; it is doing things with storytelling that a movie can’t do, for a number of reasons. It’s not a visual novel either, because it is far more than a series of cinematic sequences with decision points. Rather, we have something entirely new here, and it is an ambitious and compelling idea.

I have been known to opine that a great piece of art is one that plays to the strengths of its medium. A great novel uses the written word to convey something that can only be conveyed with writing. Certain combinations of words have great effect on the reader, in a way that the same scene in a movie might miss entirely. Literature has the advantage of narration; a voice that can drive the story in ways that are unique to the form, and great stories capitalize on this.

A great movie, on the other hand, uses the fact that it is a visual medium to convey powerful emotional content that would feel flat in writing. Lighting, facial expression, and tone of voice can be evocative in a movie like they never could in writing. Plays have their own framework, and they are at their best when they exploit this fact. Ditto music, painting, and other artistic forms.

Heavy Rain is the first game that I have encountered that takes this approach with a video game. It is treating the game as a work of art, and not simply an entertaining way to kill time. Sure, other games have stories and beautifully rendered scenery. They have characters that portray emotion, sometimes. But Heavy Rain uses the canvas of video games to tell a story in a unique way; you couldn’t copy this story to movie or novel form without losing, or at least changing, something important.

Traditional games, even ones with great stories, are hampered by a number of problems. One is the tendency for this pattern to emerge:

1. Plot (cutscene, dialogue tree, etc)
2. Gameplay (random battles, shooting bad guys)
3. Goto 1.

In Heavy Rain, the plot and gameplay are intertwined inextricably, and the gameplay doesn’t devolve into the usual video game tropes of, well, killing Bad Guys. It’s more nuanced than that, and you observe a story unfolding in which your actions have real consequences, both minor and major, and in both the short and long term.

It’s been obvious to me for a long time that video games could potentially be art, evoke a broad range of real human emotion in the player, and deal with deep themes without resorting to ham-fisted tropes or dulling the emotional experience with tons of unrelated gameplay between evocative scenes. Heavy Rain is the first time I’ve seen this potential realized.

Bulding bridges in the metaverse

If/once you “get it”, Second Life is pretty cool. It can be a lot of different things, and its potential has barely even been scratched. Sure, the tools are cumbersome, but they are getting better. And some of Linden Lab’s policies suck, but that will just drive people to OSGrid, eventually.

Anyway, there are people in Second Life that I like being able to communicate with. However, when I’m at work, it’s a lot of trouble to create an SSH tunnel home, then forward a text-only client like ommviewer-light just so I can log in and see who is online.

So, as I always do, I went way overboard and created a system that can relay chat between an IRC channel (or channels) and any location (or locations) inside Second Life (or any other grid that supports LSL). It can also check the online status of users and send them one-way IMs. I call the entire system slrelay, and you can get it here.

It requires a few things to work: a running webserver is absolutely necessary. If you want the IRC features, then you also need an IRC network of your choice and a machine that can execute perl scripts. I have my IRC bot connected to irc.slashnet.org.

slrelay has a number of possible uses. You could use it to relay chat between key locations on a large landmass (say, an area that spans 3 or 4 sims). It could relay chat between Second Life and another metaverse grid like OSGrid. It can be used as a simple IRC tool to check who is online very quickly. Or it can do all of these things at once.

Scratching the itch

I thought about titling this post “Eve and Vendetta in the THUNDERDOME”, but sanity prevailed. You win this round, sanity.

I played through the trial run of Eve Online. It worked without much complaint in wine. Let’s look at the things I think are cool about Eve Online, and the problems and realizations that came from the trial.


Okay, the star map. I could spend hours just playing with the gorram star map. Coloring systems by various data, playing with routes… the star map makes me feel like I’m in an Asimov novel. This hits my geek spot so very very hard.

The scale of the game is immense. 4500 star systems. Something to do in every one of them. It’s mind-boggling, and it’s easy to feel lost in the vast cloud of stars. Which is a good thing, for me.

The setting is really cool. The whole concept of capsuleers - transhumanist sociopaths, small gods reigning death on lesser humans - is really cool. The fact that you play as one is the surprising part. And NPCs even make reference to the fact that your ‘kind’ have a reputation for callousness. Very well executed.

In theory, I love the PvP/corporation/territorial battle aspects of Eve. Player-run corporations can control star systems. That’s amazing. In fact, it is the single coolest thing the game has to offer. If VO could find a way to implement sector/system sovereignty, it would be a better game (I believe this is being worked on).

Eve has a HUGE player base. There are human players in pretty much every system I pass through. However, while the player base is huge, I find myself rarely interacting with them. Which is fine, in that it is realistic enough; I have no real reason to talk to these pilots at this time. But it makes me realize that VO’s absence of a huge player base isn’t as much of a deal breaker as I thought.

I like that Eve’s economy is thoroughly player-driven. Vendetta feels contrived; sure, prices fluctuate as you move commodities from one port to another, but a station isn’t relying on players for a shipment of actual, usable goods, like weapons and ships. The economy in Eve is easily the most amazing thing I’ve ever seen in a video game. The fact that it works is almost unbelievable.

Eve has some graphical and performance issues, and it isn’t really any prettier than Vendetta Online on my hardware. This is annoying, because Eve looks and runs better in Windows. That’s a HUGE point in Vendetta’s favor; Linux compatibility is very important to me.

Combat in Eve can be boring at times. Theoretically it’s a more tactical approach, but PvE comes down to:


  1. Click enemy.

  2. Click “Lock”

  3. Press F1

  4. Wait until enemy is dead



You might need to toggle some shield hardeners or armor repair modules, or run away to repair/reload. But that’s about it for the entry-level PvE. Now, granted, PvP is another deal altogether, and I’m sure the combat in PvE gets more nuanced. The presence of tons of options (weapons, shields, add-ons, upgrades, ‘rigs’) is really cool, too, if a bit overwhelming.

In contrast, VO’s combat is immediate, twitch-based, and immensely rewarding. It is also a lot harder for me, but I relish the challenge. In my two-week trial of Eve, I didn’t lose a single ship. In Vendetta, blowing up happens every day. Of course, it isn’t as big a deal either.

Vendetta’s limited options with weapons and ships makes it easy to build a balanced, meaningful loadout. It also has a really good variety of different ship types (light/medium/heavy fighter, transport, bomber) without having an overwhelming number of options.


I think that, in the end, VO is more my style. It is better suited to casual play. It has a more open attitude (native Linux client, client plugins are encouraged, very open source-style release model). The public chat channel makes the game’s community very accessible; you can ask questions or just chat, and it makes the whole experience feel like hanging out on IRC (but with more explosions).

Eve Online has a lot of things that I want in a game, but it’s not quite casual-friendly enough for me. If Vendetta takes some cues from Eve in terms of the broader features, it will turn into a damned fine game. As it is, it’s enough fun to justify paying for it.

Vendetta redux, Eve Online, and the MMO bug

So, I’ve been playing Vendetta Online for a while now, and the shiny factor is starting to fade. My neophilia guarantees that I will like any sufficiently shiny thing for at least a couple weeks. However, the game underneath the shiny is lacking, and it may be lacking in too many ways for me to justify playing it.

The biggest problem, by a long shot, is the player base. 60 players seems to be the absolute upper bound at any given time, at least while I’ve been playing. This is abysmal for an MMOG; there are FPS games that support larger numbers of players at a time. I might even be happy with this player base, if they did anything other than hang out in Sedina B8 PvPing. It doesn’t really feel like an MMO at this point, it has the feeling of a social dogfighting game.

A lot of noobs seem to appear, play for a few weeks, and vanish. I can see why. The player base seems a little cliquish, though not overly much. But you get the feeling that Veterans will always be Veterans, reminiscing about the glory days, and noobs will always be noobs, struggling to make a few credits in the face of vastly more experienced and skilled pirates. Of course, that’s when you find pirates at all. I’ve flown across have the game’s universe trading and never been pirated. Like I said in my previous post, it’s a ghost galaxy.

The numerous buggy things and realism-breakers are a turn-off, too. Capships in convoys don’t carry any cargo, so they’re worthless to both escorts (who get a “share of the profits” for their pay) and pirates. The cargo is simply an unlimited stream of widgets moving back and forth across the universe, with no great purpose in life. The convoy missions don’t always work, either; I’ve had several simply fail to end, giving me nothing and forcing me to abort the mission.

There is not a lot of variety in missions. After playing through the few available mission trees, the missions are all one of a few boilerplate missions. Fly out, kill some stuff, you’re done. Take this here, bring that back. Mine for lots of foo, get paid. Nothing more elaborate than that, which is disappointing.

I’m not cancelling my subscription yet. I’m giving the game a little more time to impress me. But at the same time, I’m going to try out Eve Online. You see, the MMO bug has hit me, and now I want a large, persistent universe full of people that I can fight with, trade with, and just generally game alongside. The space theme is more appealing to me than fantasy MMOs have ever been (fantasy has been done to death, is what it comes down to).

As far as roleplaying backstory goes, the science in Eve is surprisingly non-squishy, with a lot of modern scifi concepts making an appearance: quantum entaglement-based FTL communication, consciousness hot-backups, etc. Sure, the spectre of “jumpgates” (replace with “wormholes” at leisure) makes an appearance, but I can accept some foils for the sake of the story.

While I love twitch-based gameplay, I am a lot better at tactical/strategic combat. I think on my feet pretty well, but my reflexes suck pretty hard. I would probably find the combat in Eve more enjoyable, as a result.

If you ignore the combat layer, Eve has a lot of awesome features that would make VO great: player-owned systems, player-run economics (the materials you trade actually seem to come from a player at some point), and player-designed ships. All of these could have an analogue in VO, and if features like these were present, I would probably enjoy VO a lot more.

Of course, there’s also Jumpgate: Evolution. It’ll be interesting to check that out when it launches. We’ll see.

Vendetta Online

I’ve recently discovered a game called Vendetta Online. This may be the MMORPG I have been waiting for: real-time skill-based combat, space flight, trading and mining, space flight, an interesting back story, space flight, and extensive moddability through custom skins, binds, and plugins. Oh, and it’s a space flight game.

I love space shooters. Put me in a cockpit and give me 3 dimensions of unfettered movement, and I may as well be in Valhalla. Combat is secondary; fighting in space is fun, but just the feeling of (pretending to) pilot through the stars, skirting around asteroids, and maneuvering into docking bays is intoxicating to me. The chance to do so with other people in a persistent world is something I can’t pass up.

The space flight in VO is a very solid balance of realism vs playability. Contrast Vega Strike, which focuses on realism to a fault. In Vega Strike, it often takes upwards of 15 seconds to maneuver your craft into position for each attack run on an enemy. Also, to disengage your engines you have to throttle all the way down, and to turn without having your engines engaged you have to press a special key.

Vendetta Online, on the other hand, operates in a more enjoyable way; you only apply thrust for as long as you keep pressing one of your thrusters. When you stop thrusting, you maintain your current velocity until you thrust again. This lets you reorient your ship without changing your vector, which is very useful for targeting objects, getting a visual on enemy craft, etc. It also feels very intuitive and realistic (whether it really is realistic or not is irrelevant, see below). Moreover, you can apply thrust in 6 directions; forward or backward along the 3 primary axes (relative to your ship’s current orientation). The game controls refer to left (+y), right (-y), up (+z), and down (-z) as strafing, while forward (+x) is accelerate and backward (-x) is decelerate.

Having the ability to thrust in any direction is useful and fun, but it isn’t very realistic (well, not with the ships looking the way they do; a ship that could do that would need thrusters all over the place). This is where the fun > realism design mentality comes into play, and frankly it makes for a very fun game. Another unrealistic design decision is the existence of a maximum velocity. Sure, you could make some sci-fi sounding arguments for it, but honestly it’s a balancing mechanic, plain and simple. And in my opinion, there’s nothing wrong with that.

The game world is vast; 30 systems with 64 sectors in each system (a system is a 16x16 grid of sectors). Each sector is “theoretically infinite” in size, although all of the interesting stuff is centered about the sector’s origin; after a few kilometers you find a whole lot of nothing that goes on forever. To get between sectors you can set a destination and ‘jump’ there. Likewise, to get between systems you go to special sectors that have wormhole areas, and you ‘jump’ while in one of these.

The game’s main RPG element (and I mean RPG-esque mechanics, not actual roleplaying) comes in the form of licenses. These are like a combination of level and skills in most MMOs. There are 5 licenses: combat, light & heavy weapons, trading, and mining. As you perform the eponymous activities, the skills increase. When they level up, you gain access to new ships, weapons, and missions. But the game remains primarily skill-based; in the hands of an incompetent pilot, the better ships aren’t that much better. I am afraid that I’m a testament to this fact.

The game isn’t perfect, though, and as long as I’m writing something like a review I’ll have to point out a few flaws. I hate to have to do this to you, Vendetta, but it’s for your own good. This will hurt me more than it hurts you.

The game world is big, like I said before. However, the player base is small. VO runs entirely in one instance, and you could easily fly across the galaxy and not meet another player. There are, on average, only 30 - 40 players online. This is alleviated a little by the fact that there is a cohesive world-wide chat, so communicating with the other players is easy.

I don’t know if there are more people on at other times of the day (I tend to play any time between 22:00 and 06:00 UTC) or if this is a low point for the year (more players during the summer?). Maybe the game is just old, and has lost most of its player base to attrition. At any rate, it feels like a ghost galaxy sometimes. I want to populate this world, to convince everyone I know to play and invade the VO universe en masse.

The other flaws in the game are fairly minor. You can only take one mission at a time, and many missions are automatically aborted (and thus failed) if you log out mid-mission. A network hiccup can destroy an hour of work (or more for mission trees that require you to start all the way over if you fail any mission in them).

In-system jumps and wormholes look the same. A more spectacular graphic for wormholes would be really cool, but on the other hand, the in-universe explanation for wormholes makes the modest special effects make enough sense.

There is also a stat called “grid” that weapons have but don’t explain. It refers to the total amount of power connected devices on your ship can use (i.e. the “power grid”). It’s kind of like a maximum voltage, and you can only use 20 grid per ship, although this is not explained anywhere. It’s not important until you get access to some pretty hefty ships, but it would be good to know about it, at least.

Other than these and similar minor nitpicks, the game is tons of fun and I foresee myself playing it for a long time. There is a free 8-hours-of-play-time trial available. My character’s name is Gjalfr. See you there.

Tutorial: Creating OpenSim terrain with Blender

This tutorial will explain how to create RAW terrain files for OpenSim and Second Life using Blender and the Gimp.

Before we begin


You will need the following software for this tutorial. All of this software is free and open source.

  • Blender, a professional 3d modelling tool. Blender is powerful but complex, and basic blender knowledge is assumed for this tutorial. Blender will be used to actually create the heightmap.

  • The Gimp, a powerful program for creating and editing raster (i.e. normal) image files. The Gimp will be used for splitting the heightmap into RAW terrain files that OpenSim can use.

  • gimpterrain, a plug-in for The Gimp that allows it to open and save RAW terrain files.

  • terrainerizer (optional), a bash script I created to automate splitting the heightmap into RAW files. Terrainerizer only works on Linux, and still requires The Gimp and gimpterrain to be installed. It also requires ImageMagick.


In addition to the above software, you will also need a blank RAW terrain file. You could download a terrain file from OpenSim and transform it into a blank one (replace the Height layer with #ffffff, replace the factor layer with #808080), or you could just use the one I’ve included with terrainerizer.

Create a heightmap


A good tutorial on creating a generic heightmap in Blender can be found here.

The tutorial above creates a heightmap that is 512x512 pixels. However, an OpenSim RAW terrain file is only 256x256 pixels. This means that the above tutorial will create terrain for 4 regions, arranged in a square. If you need terrain for a different number of regions, you can modify the above tutorial to create different sized heightmaps.

For example, suppose you want to create an oblong island that is 2 regions by 4 regions in size. To do that:

1. Create the plane, but instead of scaling it to 2x2 blender units, scale it to 2x4 blender units. To do this, you can use this command sequence in blender:

  • Right-click on the object to select it.

  • Change the mode to Edit mode.

  • Press ’s’, ‘y’, ‘2’, ‘return’.

  • Press ’s’, ‘x’, ‘4’, ‘return’.


Now you should have a plane that is oblong instead of perfectly square.

2. When you configure the render settings, you will need to use different values.

  • In the Scene settings (F10), SizeX and SizeY should be set to 256 * (number of regions). In our case, we have 2 regions in the Y dimension, and 4 regions in the X dimension. So, SizeX should be set to 1024, and SizeY should be set to 512.

  • In the camera settings, the scale needs to be adjusted to fit the plane precisely. In our example, the scale should be set to 8. To get it just right, select the camera, and press Numpad0 to switch to camera view. You should see two concentric rectangles composed of dashed lines. Now, press F9 to view the Editing options for the camera. Now, adjust the Scale value until the outer dashed rectangle encompasses your plane completely, without including anything outside the plane. If the dashed rectangle is not the same shape as your plane, then you still need to set SizeX and SizeY in the Render settings.




Creating RAW terrain files with the Gimp


Now that you have a heightmap file, you still need to turn it into terrain files that can be uploaded into OpenSim.

Enter Domino Marama, creator of gimpterrain, an import/export plug-in for the Gimp that can handle the OpenSim RAW terrain format. Download gimpterrain and install it into your gimp plug-ins directory.

Now, if you are running Linux, you can automate the rest of this section with my terrainerizer script. See below.

We also need the blank terrain file that I mentioned earlier.

Armed with these tools, we can open a terrain file in the gimp and combine it with a portion of our heightmap.


  1. Open your blank terrain file (blank.raw) and the heightmap in the Gimp.

  2. Using the Rectangle Select tool, select a 256x256 pixel section of the heightmap, starting in the upper-left corner.

  3. Click Edit -> Copy

  4. Select the terrain file and make sure the Height layer is selected.

  5. Click Edit -> Paste. You should see the section of the heightmap you copied appear as a floating layer.

  6. Click Layer -> Anchor Layer. The Height layer should now look like the copied portion of the heightmap.

  7. Click File -> Save As and save this file as a new file with the .raw extension.



Now, repeat this process for every 256x256 pixel section in your original heightmap.

Making it easier


Performing the steps in the previous section is very tedious, especially given how long it takes to save the terrain files. To make this easier, I have automated the process with the terrainerizer script.

If you are running Linux, simply put the terrainerizer script somewhere in your path. Edit it and specify the path to your blank.raw file, then run:

terrainerizer heightmap.png


Replace ‘heightmap.png’ with your heightmap file. Now let terrainerizer work. It will handle everything we did in the previous section automatically. It may take a while, depending on how large your heightmap is.

When it is finished, terrainerizer will leave several files in your current directory, named with this scheme:

heightmap-nxm.raw

Where ’n’ and ’m’ are numbers starting at 0 that represent the column and row for that terrain file. So, 0x0 is the top left region of your terrain, 0x1 is the next region (moving from top to bottom), and so on. Just upload these terrain files and you’re done!


Uploading the terrain files


Now that you have the terrain files, you can upload these files into OpenSim. There are two ways to do this.

1. From the OpenSim server console, you can simply:

change region RegionName
terrain load /path/to/terrain.raw


Repeat this for each of your regions.


2. From a viewer connected to OpenSim (assuming you are using Hippo or a similar viewer):


  • Move to the region you where you want to upload terrain.
  • Navigate to World -> Region/Estate -> Terrain

  • Click “Upload RAW Terrain…” and select the terrain file you created for this region.



[caption id=“attachment_190” align=“alignright” width=“300” caption=“The Upload Terrain menu in Hippo”]The Upload Terrain menu in Hippo[/caption]

Repeat these steps for each region where you want to upload terrain.


Edit: Apparently wordpress.com doesn’t allow arbitrary files any more, so I’ve moved terrainerizer to github. The links have been fixed above, or you can simply click here.

emacs 23, dbus, and libnotify

A new major version of emacs is out, and it includes dbus support. This is great, because it means we can do things like this:


(require ‘dbus)
(defun send-desktop-notification (summary body timeout)
“call notification-daemon method METHOD with ARGS over dbus”
(dbus-call-method
:session ; use the session (not system) bus
“org.freedesktop.Notifications” ; service name
“/org/freedesktop/Notifications” ; path name
“org.freedesktop.Notifications” “Notify” ; Method
“emacs”
0
“"
summary
body
‘(:array)
‘(:array :signature “{sv}”)
‘:int32 timeout))

(defun pw/compile-notify (buffer message)
(send-desktop-notification “emacs compile” message 0))

(setq compilation-finish-function ‘pw/compile-notify)


Add this to your .emacs file and you will receive a libnotify popup when M-x compile completes. It will even give you the exit message, so you know whether the compile was successful.

So now you can let that long compile run, and work on something else. emacs will let you know when the compile finishes.

As written above, the notifications will stay on your screen until you dismiss them (by clicking on them). If you would like them to vanish after a preset time limit, change the 0 in the call to send-desktop-notification. Set it to the number of milliseconds the popup should remain on the screen.

[caption id=“attachment_173” align=“alignright” width=“300” caption=“Screenshot of libnotify popup showing a compiler error”]Screenshot of libnotify popup showing a compiler error[/caption]

This is just the tip of the iceberg, of course. Any application that presents a dbus interface can be interacted with from emacs, which means that emacs can also integrate itself with the Linux desktop in other interesting ways.

so close, Netflix

I like Netflix. I think they’re a great service, reasonably priced, and they have completely replaced cable television for me. However, I have found one problem. According to Netflix:


If you are renting a series or seasons, we will ship the DVDs in order. That means:

* If there is a wait for a particular DVD in a series, will we wait until we ship you that DVD until we ship the next DVD in that series.


Which is great. If I add, say, Excel Saga to my queue, I can be certain that I will get disc 1 first, followed by disc 2 and 3. Under no circumstances will I have to worry about getting, say, disc 4 before disc 2. Right?

Well, in theory. In practice, some TV series (notably, Excel Saga) have discs missing completely. These discs go into your “Saved DVDs” list instead of your queue, and they aren’t considered to be discs with a “wait”. As a result, they get skipped over completely, and you get the next disc in the series that isn’t missing.

Why am I complaining here instead of directly to Netflix? Because Netflix doesn’t have any reasonable way that I can find to open a bug report or provide feedback. And I wanted to vent a little.

The Decentralized Metaverse

Several years ago I mused on the decentralization of Second Life, Linden Labs’ virtual world. Shortly after that post, I dropped out of the metaverse entirely for more than a year.

While I was off not paying attention, it seems that almost all of my predictions have come true. An open-source server for running a simulator and/or grid, OpenSim, has been created. OpenSim appears to have solved many of the problems, and implemented many of the predictions, of my post from 2006.

One “problem” that remains, though, is economy.

The problem I outlined in my original post was that without a robust permissions scheme, economy would break down. Looking back, this seems terribly unlike me. Even in 2006, I had a strong dislike for anything that reeked of Digital Rights Management (DRM) even for the me that wrote that post. The permissions scheme employed by Second Life, after all, is just a DRM scheme. Like all DRM, it attempts to keep the user from using the things they purchase the way they would like, and like all DRM it is ultimately futile.

Economy on a Closed Grid



On the Second Life grid, you use real money to purchase virtual goods, which might have any of a number of permissions associated with them (modify, copy, and transfer). This permissions scheme is enforced by the fact that Second Life’s grid is a walled garden; Linden Labs controls the asset server, so your data all exists in their hands. They safeguard it, preventing nefarious users from copying your creations.

Except, not really.

Like all DRM, this scheme just plain can’t work. It can’t. It violates information theory. It is mathematically impossible to give something to someone and then keep them from having it. This is a corollary to the Law of Cake. I will elaborate.

For the Second Life viewer (aka client software) to render the object, it needs a copy of the object. This copy is necessarily sufficient to reproduce the object. Since any viewer that can speak the protocol can connect to Second Life, all you have to do is create a viewer that copies the object data being sent to it.

In fact, exactly such a viewer has been written. Linden Labs responded to this viewer’s existence by appealing to their Terms of Service. Whenever a user is caught using CopyBot, they are banned from Second Life.

In other words, there is no technical solution, only a social/legal one. This is because DRM is fundamentally flawed; it is trying to achieve the impossible.

Even without CopyBot, you could just decode cached objects from the official viewer’s data cache. Programs have also been created which do this as well, although they are harder to use than the infamous CopyBot.

The point of all this is that the assumption that the Walled Garden protects your Intellectual Property is simply false. As with the rest of the Internet, piracy is a given. Anyone creating and distributing content on the web must start with that assumption.

Economy on an Open Grid



I haven’t explored OpenSim enough to determine whether it supports any sort of monetary transaction, but let us assume that it does. In other words, assume that you can, via direct credit card payments or via a virtual currency, purchase virtual goods. Even if you can’t do this yet, I have little doubt that OpenSim will support it eventually.

Now, let us further assume that I connect to OSGrid via a region that I run myself. This means that I control my own asset server, where my inventory resides. If I purchase an object with restrictive permissions on another region, a copy of that object will be transferred to my asset server, where I can simply log in via mysql and change the permissions. Now, I can create multiple copies of this object, or give a copy to someone else.

What I have done here is to defeat DRM, just like CopyBot. It’s considerably easier, and much harder to detect. However, in practice this is no less secure to the Intellectual Property owner than Second Life’s walled garden. It still requires a reasonable level of competence (running your own grid/sim) to exploit, so piracy is likely to be similar in rate. Of course, the open metaverse has no Terms of Service (although individual grids/regions within the metaverse may). But the technical merits are the same; when looking at the threat of piracy, the open grid has the same basic properties as the closed grid.

Of course, even without our own asset server, we could still use the same techniques to copy data that I described for the closed grid. CopyBot and copying assets out of cache work identically on an OpenSim grid.

Not a problem



Okay, so the economy “problem” isn’t really a problem, just a fact of life. In the words of the OpenSim folks:


[The existence of piracy] is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there.


I am not proposing that piracy is good in any way, merely describing how it is inevitable. You simply cannot restrict how users will use the things you buy. You can’t keep someone from copying digital data, if they are determined enough to do it. You can use restrictive terms of service and try to sue or press charges, but there will never be a technological solution.

So, to current and potential content creators shying away from the open grids: piracy is an unfortunate fact of life. It will happen. Start with that assumption, and work from there. If this means you don’t want to create digital content, I’m sure the creative community will miss you. If, however, you realize that some people will appreciate your work enough to pay for it, without worrying about the details, then you are in the company of some fine artists.

d20tools 0.3 is here

I’ve released a new version of d20tools. In addition to using a new, simpler file saving/loading scheme and better keyboard handling, the new feature is also a lot more stable. Other highlights include a more sensible entity/group management system, and the ability for any creature to be a henchman.

Get it here.

I’m lifting my moratorium on D&D 4e, as well. This means that d20tools will eventually support 4e creatures. However, this is a huge undertaking, and I have to decide how best to handle it. I’m leaning towards a system that will allow anyone to write system templates; then, any gaming system could be plugged in, theoretically. In practice, this is a lot of work for a single developer, so I wouldn’t anticipate this happening any time soon.