Using custom Game Launchers with RPG Maker

Help spread the word!Share on FacebookShare on TumblrTweet about this on TwitterShare on Google+Share on LinkedInShare on RedditFlattr the author

customGameLauncher1 In this article I show how a custom launcher could be created for RPG Maker, with a very simple DRM implementation that forces users to use your launcher.

Background

Game launchers are basically applications that players will (hopefully) use to start your game. They are used in a variety of ways before the game is launched, such as

  • performing version update checks
  • performing data integrity checks
  • providing a way to start the game
  • DRM Some game executables do not run unless it is launched by the launcher, for example.

A simple launcher

Since all we are doing is executing an application (namely, game.exe), we can use any programming language that we want to build our launcher. I have chosen to use Java. This is one of the simplest launchers you can possibly have:

public class RMLauncher {
    public static void main(String[] args) throws Exception {
        String[] cmds = {"Game.exe", "CUSTOM_LAUNCHER"};
        Runtime.getRuntime().exec(cmds).waitFor();
    }
}

To run the launcher, simply place it in the same folder as Game.exe and then run the launcher. This assumes you have Java installed. Note a few things:

  • The launcher will continue to wait until the game closes
  • The launcher executes the game application with some command-line arguments The launcher doesn’t actually have to wait; if you want to have your launcher do something in the background, however, that might be useful.

DRM

With a game launcher From above, we see that we can pass in command-line arguments to affect some start-up logic. In particular, we can implement a simple DRM using this technique. We use a script called

Command-line Args Loader which will allow us to actually read command-line arguments (by default, RM doesn’t provide them to you). Now we introduce an extra little check in our scripts

if !ARGV.include?("CUSTOM_LAUNCHER")
  msgbox("This game can only be launched through the game launcher!")
  exit
end

What this does is check if you have the string “CUSTOM_LAUNCHER” in the arguments, and if it is not there, then it will inform the user why the game does not work and then close the game. In this case, it simply tells the user to use the game launcher.

Working Demo

You can download a demo version of my game launcher project here. Simply unpack it and try to run Game.exe, and then run the launcher. You will need to have Java installed on your system but it usually is.

Moving forward

I have discussed how a game launcher can be written, and how command-line arguments can be passed to the game via the launcher, and finally how those arguments can be used by the game. I have also shown how you can require your game launcher to be used to start your game, and consequently apply DRM to the launcher itself (rather than the game). Now you should have all of the things necessary to build your own beautiful game launchers.

Spread the Word

If you liked the post and feel that others could benefit from it, consider tweeting it or sharing it on whichever social media channels that you use. You can also follow @HimeWorks on Twitter or like my Facebook page to get the latest updates or suggest topics that you would like to read about.

Help spread the word!Share on FacebookShare on TumblrTweet about this on TwitterShare on Google+Share on LinkedInShare on RedditFlattr the author

You may also like...

17 Responses

  1. Tadeu says:

    I’ve done a simple game laucher to change the windows resolution and open the game here: https://github.com/Tudumanu/fullscreenAPP

  2. Daisy says:

    What about Check version ?? how i can make it check the version ? if there is an update how i can let it say download the latest update…

    • Hime says:

      This is just a proof of concept on how to launch RPG Maker with a custom launcher written as an external application. If you want to check for updates and download them you would need to write the code to perform HTTP requests to an API and then depending on the response, proceed with the download and update process.

  3. Matt says:

    The demo link is dead. Could you repost it please? I’m really trying to get this kind of thing to work for my game.

  4. Brandos says:

    Is it possible to have an .exe version of this instead of of a jar. file?

Leave a Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax