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

What you are doing should be correct - create your updated files, generate a manifest and a checksum for that manifest, upload those to the server. Are you certain the launcher is downloading the files, and not just checking their integrity?

It says, downloading. But I don’t get it. If I make a new update and I generated manifest files for it. I basically replace old manifest files with new ones on ftp and also update my /bin/game files?
So an “old” player will be able to update then. But if a new player wants to download game, won’t he download only updated files?

Interesting idea, but those wondering about comparability you should know that mono is similar to Wine for nix. The user must have mono installed for this to work. That is, unless the launcher bundles mono with it.

To launch a game with logon credentials I imagine you would have to pass parameters as you open the game. Or perhaps you could expose data in the launcher and have the game find/call that data. I don’t know a whole lot about security though so I couldn’t tell you if it would be safer to pass logon credentials as a parameter or to expose functions in the launcher.

I haven’t looked at your launcher but here’s an idea I used to manage updates with a previous program I wrote.

Let’s say game was version 1.0 and latest was 3.0.

A log would be kept providing which files would be needed to go from each version to the next.

EG:
1.0 -> 2.0: game.exe, windowmode.dll, antihack.dll
2.0 -> 3.0: game.exe, windowmode.dll

The updater would then compile a list of the needed files over the versions and download the latest ones. I also had the ability to remove files per version as well add lines that didn’t exist to for example update configurations without erasing an entire config.
In addition there was the Repair option which would replace all files with defaults. The system itself was actually very minimal but highly effective. I’d share the code (C#) but my concept was for a smaller project where only a few files changed at a time, and was not ideal for larger projects.

Mono really isn’t like Wine. Wine is a compatibility layer that reroutes and translates Windows API calls to Unix API calls, while Mono is an implementation of .NET and its virtual machine. Just as much as a Linux user would need to install Mono, so would a Windows user need to install the .NET runtime :stuck_out_tongue:

As for logins, you’d preferrably do end-to-end encryptions with a login token that’s passed around. I’ve played with the idea, but it’s a little out of scope for this launcher.

If you recreate your manifest and update it on the server, a player with an old version will only download the files that have changed or been added. A new player will download the entire thing, as all files for your game should be listed in the manifest.

What’s happening internally is that the launcher is going through the files listed in the manifest, checking if they’re there, then downloading them if they aren’t. If it is there, it checks the local file’s checksum against the checksum and size in the manifest. If they differ, the file is downloaded from the server and replaces the file on disk.

Yes, but I was just stating the designer would still have to bundle it with their launcher or depend on the user having it installed. A C# project doesn’t just work out the box on multi-platforms,

This doesn’t seem to open without setting up the server/ftp, which I’m sure is intentional, but is there a way to disable that and have it open so I can view GUI changes before worrying about setting up any ftp? I’m going through the code from the source, but I was hoping maybe you/someone could point the exact locations to ease the process.

Also, I’m pretty sure I know the answer, but is there a way to make this work with web hosting ftp by chance, where the files are just stored there and it pulls them?

Heya, sorry for the late reply.

You should be able to start up the launcher without having an FTP server - are you certain you’ve installed all of the required libraries? GTK, dotNet etc.
As for web hosting FTP, I’m not entirely certain what you mean. You ought to be able to use a web-facing FTP server just fine.

Life has been hectic sorry for my late response.

I’m not good with all the lingo, so the instructions weren’t clear to me if you can just use something like Godaddy web hosting to hold the game files and stuff, instead of a server where you can access windows/linux and all that. Just plain Jane web hosting, will that work as well?

As for the libraries, where is this noted in the install? I did “Game Developer Quickstart” but didn’t notice extra required libraries noted to have.

I do see it for distribution on windows however, is that also required to see or open it at all?

Prrrrrrrobably. You would need something that supports the FTP protocol, but if the web server can handle that, sure! Just plain HTTP will most likely not work.

That’s what I was thinking, I’ll just set up a server on my PC as I’ll have to do it eventually anyways for testing and a load of other things.

I answered the other question myself, because it was kind of a dumb question, as obviously you need the distribution for windows setup to run it. :slight_smile:

Thanks!

Is it possible to run the LaunchpadUtilities tool with command line arguments? This would be really handy as it could be made a part of a CI Build systems automated deployment functionality.

No, but it should be fairly simple to implement. The source is available if you want to do it - I’ll look into it, but no guarantees :slight_smile:

Done. You’ll have to build it from source, but it’s up on github.

Use -b to put the tool into batch mode, and -d <directory> to select the directory. You can also omit the directory to use the working directory instead.

Wow thanks a lot for the quick replies and implementing this so quickly! Your efforts are greatly appreciated! I’m really looking forward to using this as a delivery method for the team I of people I’m working with, we have devs on all platforms so being able to build and deploy to all platforms is important to us. Thank again!

No problem :slight_smile:

I’ve done a little testing and have a question/suggestion and also seeing a bug or two.

There appears to be two bugs in the current Update Function. Unlike the Repair function it is replacing (downloading) all the files in the manifest whether they are different or not. The repair function will only replace files that are missing are different size/hash. Also the update function doesn’t seem to finish properly, at the last file the status goes “Idle” but the last file downloaded from the manifest remains listed above that and the primary button stays a grey’d out “Updating”. You have to close the launcher and restart it to be able to attempt to launch again. I’m guessing that Update should act much like Repair in that it only updates the files that don’t match manifest.

As for my questions…

  • Is the only way to trigger the Repair mode having the application fail to start? Is it possible the launcher could think the game is working/ok but really its crashing, and the user would like to be able to try a repair? I thought I saw in a screenshot there was a “verify install” button over the Primary one, but I’ve not seen this, has this been removed or changed or only appear under a certain case?
  • Does the manifest get checked (or fetched and then checked) every time the launcher starts, or just when the GameVersion doesn’t not equal the servers version? It appears only when GameVersion changes but I’m not 100% certain.

As for the suggestion…

  • Something I think would be useful is having one more level of directory nesting based on the Game listed in the configuration, that way one ftp server could provide the binaries for a teams multiple game projects simply by modifying that field. (/srv/ftp/game/<GameName>/<platform>/…) as example.

Great work, it was very straight forward to get setup and even with the update issues its going to be a great benefit to pushing out test builds.

im having an issue with the launcher. All files seem to be working until i think the large .pak file
The pak file is around 2 gigs, here is what is displayed:
error.jpg

up till this point the downloader was getting all the files perfectly. leaving this on all night did not resolve the issue (incase it was just a display thing) any ideas?
it may have just timed out when the computer went to sleep?
Love the software!

Thanks for the bug reports, guys! I noticed I was doing some dumbs with the events and that the entry comparision wasn’t quite working - it’s fixed now :slight_smile: You should get an update pushed to your launchers on your next startup if you have official updates turned on. If not, download a new copy from the forum post!