Shoutbox (Disabled)

Bootleg Launcher

Discussion in 'Unrelated Discussion' started by Dreae, Jul 10, 2015.

  1. Dreae

    Dreae New Member Team Amorous Supporter

    Messages:
    29
    Likes Received:
    8
    *Disclaimer: I am not affiliated with Team Amorous or anyone associated with Team Amorous. This launcher should not in anyway be considered official. That's why it's in Unrelated.*

    So because I'm excitable, and I've discovered a new technology I was eager to try, but mostly because I've got too much free time, I've written a little alternative to the official launcher using Electron (formerly atom-shell).

    Electron was developed by the folks at GitHub when they created Atom, and is a framework for interacting with the Chromium Content Module from Node.js. It essentially allows you to develop desktop applications that can utilize the full power of Node with a GUI developed in HTML/CSS and JavaScript, except with fewer of the headaches because there's only one browser involved. Plus, because it's all done with web technologies your app is instantly supported on any platform that supports Chromium/V8.

    I've written a little app that simply opens the Amorous launcher webpage in Electron's embedded Chromium instance, and starts a little Node.js web server to fulfill the functionality of the current launcher.

    [​IMG]

    Full source is available on GitHub: https://github.com/Dreae/launcher-electronic
    There's also a windows build under releases if you want to check it out: Download

    The downside is because you need to distribute it with essentially all of Chromium and Node it is quite large. The build for my 'small' launcher is ~50 times larger than the official launcher. Still smaller than installing .NET though :p
     
    Lennian and Connery like this.
  2. Dreae

    Dreae New Member Team Amorous Supporter

    Messages:
    29
    Likes Received:
    8
    Iteration 2, now with 100% more task automation

    I've reworked the launcher to use Electron's IPC instead of an HTTP server for communicating with the GUI, meaning it should cause less trouble with firewalls. Unfortunately this means I've had to create a whole new GUI to distribute with the app instead of just use the existing webpage. However, this does mean I can use a sexy borderless window :p

    I've also reworked it so that it downloads the game pieces concurrently, up to 3 at a time, which should speed things up for those with faster connections. I've also added better error handling, and the ability to easily retry failed updates.

    Screenshot:
    [​IMG]

    Again, source is available on GitHub: https://github.com/Dreae/launcher-electronic
    Windows builds available on the release: Download
     
    Lennian likes this.
  3. Lennian

    Lennian Dark Lord of Team Amorous Team Amorous

    Messages:
    2,203
    Likes Received:
    912
    I'm not a fan of the concurrent download option and in the next release of the launcher this will be disabled. As URL's will be signed for one bucket and buckets have an IP lock. I'm currently working on a new launcher which no longer requires the browser. Still cool tho :p
     
  4. Dreae

    Dreae New Member Team Amorous Supporter

    Messages:
    29
    Likes Received:
    8
    It was basically just an excuse to play with Electron, which is super awesome, by the way :p I'll definitely be looking for excuses to use it in the future.

    And are you just concerned with the concurrent download hitting the server too hard? Because it does significantly speed up the download, at least on my net.
     
  5. Lennian

    Lennian Dark Lord of Team Amorous Team Amorous

    Messages:
    2,203
    Likes Received:
    912
    Well, not right now, but on release-moments, yes. We up-scale on releases, and downscale when the load is gone.

    Up-scaling has no use if people workaround the loadbalancer.
     
  6. Dreae

    Dreae New Member Team Amorous Supporter

    Messages:
    29
    Likes Received:
    8
    Are the URLs returned by the API not going through the loadbalancer? They seem to be spread across the buckets. It wasn't my intention to work around it
     
  7. Lennian

    Lennian Dark Lord of Team Amorous Team Amorous

    Messages:
    2,203
    Likes Received:
    912
    The API is essentially the loadbalancer. Each bucket is a server that can accept some load. So when I tell the API there are 3 buckets running, the API will round-robin through them.
     

Share This Page