Game Deployment

When you're ready to deploy your game over the web, you should make it as easy as possible for people to download and install, with the goal that everyone who wants to play the game has an opportunity to do so. In other words, you want to avoid something like this scenario:

  1. The user clicks a link to download a zip file and waits for it to download.

  2. The user unzips the file and sees some jar files, some class files, some images, and a readme file. (This assumes the user knows how to unzip a file, which isn't always the case.)

  3. A user familiar with jar files might double-click the jar file, expecting it to run, but nothing happens. At this point, the way to run the game isn't immediately apparent, and many users will just give up.

  4. Some users will actually open the readme file, which says to type in this code to run the game:

    java -cp game.jar coolgame.MainClass

    However, many people will not even know what a command line is. Again, at this point, you've just lost more users.

  5. The user opens a command window but doesn't know to navigate to the folder where the zip file was expanded, so the command doesn't work.

This can be a frustrating nightmare—nobody wants to spend time downloading a game only to be unable to run it. And even the extra steps involved can be annoying for tech-savvy people. So, be sure to use a game-deployment technique that the most computer-illiterate people you know can handle and that requires the least amount of steps to perform. The more steps that are involved, the more problems people will have. Here are a few other ways to deploy a game:

  • Applets are incredibly easy because running an applet involves only navigating to a web page. However, this means the applet must be downloaded every time the person visits the page, and applets have many restrictions. Also, most browsers support only Java 1.1 applets.
  • Executable jar files save a lot of time, but sometimes it's not obvious that a jar file is executable.
  • Create your own installer, either as an executable jar file or a native executable.
  • Use an existing installation product such as InstallAnywhere (both free and commercial versions available).

Another thought to consider is that many people won't have the latest Java runtime on their machines, and they'll have to download it separately. Some installation products can optionally bundle a Java runtime with the installer, however. When considering installers, something to think about is that some people don't realize that they actually have to run an installer after they've downloaded it—they think whatever they downloaded is automatically installed and they don't have to do anything else. Or, they forget to run the installer. Wouldn't it be great if the download, installation, and execution were all automatic? In other words, the only steps involved would be something like this:

  1. The user clicks a link to download a file and waits for it to download.

  2. The game automatically installs and runs.

Well, good news—that's exactly what Java Web Start does.