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.
- 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.
- 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.
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).
- Bang! Howdy - http://banghowdy.com/
- Displaying a Customized Loading Progress Indicator - http://download.oracle.com/javase/tutorial/deployment/webstart/customProgressIndicatorForAppln.html
- Getdown - http://code.google.com/p/getdown/
- Oddlabs - http://oddlabs.com/
- Pets Vs. Mosnters - http://www.petsvsmonsters.com/
- Puzzle Pirates - http://www.puzzlepirates.com/
- Spiral Knights - http://www.spiralknights.com/
- Sweet Robot - http://www.sweetrobot.com/
- Three Rings - http://www.threerings.net/
- Three Rings Code - http://www.threerings.net/code/
- Tribal Trouble 2 - http://www.tribaltrouble2.com/
UPDATE: added a new entry in the pros section about an update game feature by applying a patch