Getdown

Getdown is a deployment library like Java Web Start, which provides also an integrated update process for your game. It was started to replace Java Web Start based on the premise that using Java Web Start has a lot of downsides. Getdown is mainly designed to launch games in the desktop like Java Web Start does, aditionally, it creates an installation folder structure and a launch icon on your desktop if you want.

We've talked about it a bit on our deployment ways blog post, but now we are making a deeper article based on the experience from testing it a bit with one of our games.

Getdown library is used as a game's launcher, which updates your game by downloading all required specified resources before the game starts.

You could use the getdown applet to perform all download and installation process from a web browser or you could create a platform specific installer and, after the game's launcher is installed as a desktop application, derive to it the rest of the process.

It uses a text file named getdown.txt to configure all your application needed resources, natives, custom jvm parameters, etc, and a digest.txt file to check integrity of all downloaded resources before launching the game. If you deploy it as the getdown applet, then you need to sign the digest.txt file with the same certificate used to sign the getdown.jar in order to run the applet with privileges. Here is the getdown.txt of Puzzle Pirates as an example.

Pros

  • It uses a single file to configure the application in a similar fashion Java Web Start does with the JNLP file, with some extra options. This is good because it is independent from the deployment option used, you can use the installer or the browser applet and use the same configuration file.
  • Provides a way to specify platform specific resources to be downloaded only if you run the game on that platform.
  • The loading screen is customizable like the LWJGL Applet Loader. Java Web Start provides a way to customize loading screen but you need at least Java update 18 (haven't tried it yet).
  • It validates all dependencies using the signed digest file. This is very interesting because you only need to sign one file with all the resources digests, without having to sign each file.
  • It provides a way to update your game by downloading a patch and applying it in the client machine. It requires you work with versions to use that feature (docs about versions are not ready yet).
  • Open source project with good documentation.
  • It is being used by professional games.

Cons

  • It only uses RSA for the certificate private key, so if you already own another type of private key it will not work.
  • Doesn't handle pack200-gzip encoding and stuff. It doesn't even have a way to force to download a .pack.gz either, like the LWJGL Applet Loader does.
  • It is very slow for checking files to download info, like the LWJGL Applet Loader it is not using concurrent HTTP requests for that. Java Web Start and New Generation Plug-in Applets does and it starts faster.

Note: we don't know exactly how it is doing all the cache stuff, from the wiki page it seems like it doesn't use Java Web Start cache, but from the practice it seems it is using it. It seems to be a bug, for that reason we didn't want to comment the cache stuff in the pros/cons section.

The Getdown developers have a lot of other useful libraries for Games development, take a look at them at Three Rings code page. Some games using Getdown are Pets Vs. Monsters from Sweet Robot, Puzzle Pirates, Bang! Howdy, Spiral Knights from Three Rings and Tribal Trouble 2 from Oddlabs.

We have one game deployed using getdown to test it, however if you accepted our certificate before, it will ask to accept again as it is using a new one because the second cons we mentioned before. If you want to test it, click here.

Conclusion

The user experience when playing a game deployed using Getdown with a customized loading screen is really professional and it feels like you are playing a non Java Game (hate to say that, but we can't avoid bad Java preconceptions).

References

UPDATE: added a new entry in the pros section about an update game feature by applying a patch

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Tags: , ,

  • Gornova

    Seems to be a good system.. but at least here (http://www.gemserk.com/getdown/zombierockers-latest/applet.html) is too slow :(

    There is a way to build a system like flash? Just upload something on a server and play ? Maybe:

    1) javascript to detect if java is installed or not,
    2) applet to load jnpl
    3) play and go?

  • arielsan

    Yes, it is slow to load compared to Java Web Start because jar files are being download instead jar.pack.gz, that is a problem. On the other hand, as they implement a system to update your game based on download only a patch and then applying it, so after a game was download once, it should start a lot faster version to version.
    I think they aimed to big games (look at the game examples), with a lot of assets, in that case, pack200 stuff will be not so useful and as a user you can understand why it is too slow to start (it is downloading a lot of stuff).

    About the question, I think what we have here at gemserk is similar as what you say, look at this example: http://blog.gemserk.com/games/floating-islands/play/
    Using Javascript we detect if you have required java version, if you have then we show the screenshot with saying "click to play" and if you click it we replace the image with the applet (loading from a jnlp), else we show a message telling you to install required java and if you click, we send you to the java page.

    Hope it can be of help.

    Thanks for the comment

  • Glen

    I've used getdown to deploy an enterprise application on older Java 1.5 only macs where webstart is buggy. It's a great solution because I have complete control of the installation. While I still use webstart for PCs and the newer macs that support java 1.6, I wish I'd known about it before because Oracle/Sun seem to break webstart with every major release. I've come to realise that webstart is just not production quality and there are too many problems with it. If I could start again, I'd avoid webstart completely and provide a platform specific installer based around getdown.

  • Ariel Coppes

    We are using Java Web Start with no problems, but as you say, it requires the latest JRE in the client (impossible that all people have that) to be less buggy as possible. Sadly Java is not modular and Oracle/Sun don't make separated releases/jars for Java Web Start that you can attach to an old project if you want and have all the improvements and bug fixes they did.

    Getdown is a great solution indeed, it loads slow in some cases but when you have a big game and lot of assets the users don't even notice. At the developer's perspective, it lacks of some features the latest Java Web Start has, but on the other hand, if getdown developers make an improvement or bugfix, you can use it in your old game if you want, without requiring the user to do anything. More important, as you say, it is being used in some big games like Spiral Knights (and others), so it is tested on production environments, I don't know a professional game using Java Web Start.

  • Ariel Coppes

    Btw, Glen, thanks for your comment