[FREE] Launchpad - A free, open-source UE4-compatible game launcher

Very simple - it’s just like any other C# program. Clone or download the repository, open it in your IDE of choice and hit compile. VS Community is a good choice, if you haven’t got one yet.

Quick update about Unix/OSX progress!

I’m happy to announce that the linux branch is getting real close to release, and with it comes a bunch of great changes to the launcher. The Windows backend has been completely restructured into a friendly alliance with the Unix backend. Essentially, all of the functionality has been moved into platform-independent handlers, thus delegating nothing but UI work to the platform-specific code. The end product is a more stable launcher and much cleaner code :slight_smile:

Launchpad now supports multiple platforms on the same server - distribute one launcher to your Windows, Linux and Mac customers, and they’ll all get the correct build from your server (provided it’s set up correctly, of course!). Now, this has brought on some pretty sweeping changes to the way the FTP folder structure is set up, which you as a game developer will need to change (case changes, more folders, less folders, you name it. Be prepare to recreate the entire structure. Sorry about that!). I’ll be setting up an example server with readonly access where you can see exactly how things are supposed to look - it’ll be providing a Linux and a Win64 build of the FPS template.

I’ve also created a quick-setup script which will install vsftpd, create or modify an existing user and create all the neccesary folders for Launchpad. It’s available here.

Additionally, Launchpad should now be nicer to non-UE4 games, and will download and launch games with their main executable in the root folder as well.

I can’t give you an ETA for the release, unfortunately, as I still have tons of bugs to chase down and many more stability issues that I need to resolve. I hope to release sometime next month, though :slight_smile: If you feel like helping out or checking out the still-unstable build, you can always clone or fork the linux branch ^.=.^

Woot! The Linux update has arrived! Launchpad is now fully cross-platform, is localized to 10 languages and runs ever so much more smoothly than before.

The main post has been updated with new information, and the old and horrid guide has been replaced with new documentation on GitHub. Check it out!

Awesome Stuff my friend! This has been pretty handy for passing working builds to my buddies for small play tests instead of relying on Dropbox or others :smiley:

I’m glad you like it! If you encounter any bugs, be sure to pass them along :slight_smile:

Hi. Very nice share. However when trying to launch launchpad.exe I recive this error: aa782692140b0d3559d9c5bdc5a8d7f429f95e68.jpeg

Could these be caused by the FTP not allowing annonymous access? I am unsure how to test this. Thanks in advance!

Edit: seem to get error with or without config file

Hey there! Have you installed the GTK# libs? They’re required for the application to work. Additionally, you need the .NET 4.5 runtime.

You can download GTK# here:Redirecting…

I’ll take a look as soon as I have time! I dont think I have GTK# libs, should have .net 4.5 runtime tho.
Btw. is there a way to have it download files from a http adress on the server? I am renting host space and only have one admin account for ftp access that I know of.
Cheers!

The launcher doesn’t do HTTP at the moment - you should be able to use it anyway and just allow anonymous downloading of files :slight_smile:

Thanks a million . I’m going to incorporate your system into our project for playtest builds. A couple of the testers said having an automatic updater would be useful to them. I’m glad we don’t have to reinvent the wheel!

I’m glad to hear you’ll be using it! If you run into any trouble, pop me a message.

Dude this is one of the best open source projects I’ve ever found, very great work! We’ll be using it for Ethereal Legends, for sure.

For reference, I’ve got this working via a Windows Azure ftp server.

Wonderful to hear! I’ve replied to your email as well :slight_smile:

Hi There,

when starting Launchpad i am asked whether i want to use the Launchpad folder with options Yes or No. If i click yes, a .update file gets created and nothing more is happening. If i click no, nothing more is happening. I fear thats not the intended behaviour?

Hello there!
I followed your tutorial and now I have this situation: after Launchpad created Config and I edited it, whenever I launch Launchpad, it crashes. I made a local ftp server (file zilla server) and here’s a log:


(000057)30.09.2015 22:09:36 PM - (not logged in) (127.0.0.1)> Connected on port 21, sending welcome message...
(000057)30.09.2015 22:09:36 PM - (not logged in) (127.0.0.1)> 220 ...
(000057)30.09.2015 22:09:36 PM - (not logged in) (127.0.0.1)> USER anonymous
(000057)30.09.2015 22:09:36 PM - (not logged in) (127.0.0.1)> 331 Password required for anonymous
(000057)30.09.2015 22:09:36 PM - (not logged in) (127.0.0.1)> PASS *********
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 230 Logged on
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> OPTS utf8 on
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 202 UTF8 mode is always enabled. No need to send this command.
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> PWD
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 257 "/" is current directory.
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> TYPE I
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 200 Type set to I
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> PASV
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,211,69)
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> NLST
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 150 Opening data channel for directory listing of "/"
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> 226 Successfully transferred "/"
(000057)30.09.2015 22:09:36 PM - anonymous (127.0.0.1)> disconnected.
(000058)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> Connected on port 21, sending welcome message...
(000058)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> 220 ...
(000059)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> Connected on port 21, sending welcome message...
(000059)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> 220 ...
(000059)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> USER anonymous
(000059)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> 331 Password required for anonymous
(000058)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> USER anonymous
(000058)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> 331 Password required for anonymous
(000059)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> PASS *********
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 230 Logged on
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> OPTS utf8 on
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 202 UTF8 mode is always enabled. No need to send this command.
(000058)30.09.2015 22:09:37 PM - (not logged in) (127.0.0.1)> PASS *********
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 230 Logged on
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> OPTS utf8 on
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 202 UTF8 mode is always enabled. No need to send this command.
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> PWD
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 257 "/" is current directory.
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> TYPE I
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 200 Type set to I
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> PWD
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 257 "/" is current directory.
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> TYPE I
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 200 Type set to I
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> PASV
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,233,94)
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> RETR launcher/changelog.html
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 150 Opening data channel for file download from server of "/launcher/changelog.html"
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> PASV
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 227 Entering Passive Mode (127,0,0,1,213,121)
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 226 Successfully transferred "/launcher/changelog.html"
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> RETR launcher/LauncherVersion.txt
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 550 File not found
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> QUIT
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> 221 Goodbye
(000059)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> disconnected.
(000058)30.09.2015 22:09:37 PM - anonymous (127.0.0.1)> disconnected.

I don’t really get what did I do wrong. Any help, please?

It looks like you’re missing the file launcher/LauncherVersion.txt on the FTP server - check that it’s there and that it has the correct access permissions :slight_smile: If not, could you try compiling from source and checking which specific line the crash happens at?

Sounds like it’s crashing on startup - have you installed the required GTK libraries and set up your config?

Hello, .
First things first. Yes, I have this file in my FTP. And it’s set to XXX because every file in ftp folder is set to 777.
Here’s my config:




[Local]
LauncherVersion = 0.1.0
GameName = Ares
SystemTarget = Win64
GUID = 2bcdb74f-9706-49ca-9869-7f7a858658fa

[Remote]
FTPUsername = anonymous
FTPPassword = anonymous
FTPUrl = ftp://127.0.0.1

[Launchpad]
bOfficialUpdates = true



Solved!
I recreated LauncherVersion file and uploaded it. Many thanks anyway!

I’m sorry for double posting. But can you please elaborate a little bit more about how exactly can I roll out updates?
I’ll explain what I’ve done and I want to do.
Let’s say I have a Main Game Build (MGB). I’ve generated manifest files and I’ve put my game into /Win64/bin/. So in total I have this:

/Win64/bin/
/Win64/LauncherManifest.txt
/Win64/LauncherManifest.checksum
/Win64/.provides

Win64/bin/Engine
Win64/bin/Gamename
Win64/bin/Gameversion.txt
Win64/bin/Gamename.exe

=====================
I opened my launcher and downloaded all the files. Game can be launched, etc.

Then I made an update. I have a new game build with some new files in it. In Win64/bin/Gameversion.txt I change version of my build to higher. But what do I do with my new update build? Because if I’ll generate launchermanifest files and update them on my ftp along with my game build, launcher will simply re-download entire build.