Atavism Game Launcher Build Kit for Windows

This solution is an attempt to provide the Atavism Development Community a working launcher to manage releases of their games. It is not intended to be the end-all say-all of game launchers, there are many other workable solutions out there, but none that are well documented and fewer still that have everything I was looking for in a launcher. Furthermore, many people often ask "How can I share my game with other people?". This is my attempt to provide those things to the community.

I'll start off with the known limitation before getting into features, as I know some of the features will raise questions that the limitations are the answer to.

Known Limitations::

  • Windows Only: The launcher is a Windows application - I do not plan to support additional platforms with the launcher at this time.
  • Semi-Customizable: While the launcher can be re-themed to match your game, the layout or sizing of various things is not configurable, you must maintain image sizes, etc. while theming the launcher.
  • Number of Buttons is Fixed: While you can change the text and target location of the first 4 buttons on the launcher, there is no way to add additional buttons.
  • No FTP support: The launcher uses http/https only to patch/install itself as well as the game it is meant to launch. You will need a web server set up with the ability to upload your files to. I do not plan to implement FTP any time soon.
  • No store advertisements yet: I plan to add a frame soon that will load a web page up for display. This will allow you to advertise in game items from your cash shop. I have no ETA for this feature at this time.
  • No Google Drive hosting support: You must be able to set up a file structure on your web server for this launcher solution to use - Google Drive is unreliable for allowing large numbers of downloads in a month's time frame, so this isn't something I'd recommend using to host your game client files anyway: I do not plan to support Google Drive at all.

Features:

  • Launcher-Only Installer: This allows you to give players a single downloadable installer that will install a launcher which will then install the latest published version of your game.
  • Patching: The launcher does hash based file validation on the current game and compares it to a master hash file list you host on your web server. If anything is different, the launcher knows it needs to patch the game and forces the user to do so before launching the application
  • Forces Players to Launch from the Launcher: The solution includes a unity package that will import a script as well as a customizable scene into your project. With this in place, the game then requires a hash based key that the launcher passes to it in order to launch. If the key is not passed players will be notified they must launch from the launcher, and if the wrong key is passed players will be notified that file validation has failed and they need to update their game from the launcher in order to play. In either case, the game will automatically close. If the correct key is passed, the validation scene will never be seen and quietly load the next scene in your project (which should be your login scene)
  • Allows devs to play from the editor: When launched from the editor, the launcher validation checks are skipped, allowing you to jump in and dev or troubleshoot issues as needed
  • Semi-Customizable: The launcher loads up the your company name as well as your game name, and all images used at runtime (buttons, border frames, icon, game logo, etc.), which can all be swapped out with your own images (the sizes must match). Text and progress bar color can be configured via a configuration file you host on your server, which is downloaded each time the launcher is run.
  • Self-Update: If you publish a new launcher package on your web server, the launcher will detect it at run time and force players to update before launching. The launcher includes an automated update process, so changing your launcher themes and configurations are very easy for you and smooth for your players.
  • Patch Notes: The launcher displays patch notes contained in a text file on your web server. I don't plan to change this as everyone has different websites, etc. and I need to keep this universal. You CAN however instead use this text file to display any other text or updates you'd like to your players.
  • EULA Display: End-User license agreement hosted in a text file on your web server is displayed at launcher installation as well as when selecting a path to install the game. Players must accept this to install.
  • No Coding Skills Required: The Launcher is configured entirely from easy to understand config files, and step-by-step documentation is provided to help you with any all tasks you need to perform with the launcher.
  • If there is interest, I will likely publish source code soon: Though you will need a fairly uncommon development environment to use it. I'd also like the opportunity for folks to use this and work out any initial bugs and have a chance to refactor some code prior to release, I created this whole in quite the rush in 2 days due to wanting to provide this quickly
  • Extensive logging: Informing your players when there is a problem and informing them of where to find logs to send you for troubleshooting

No one needs to pay anything to use this, I did this to contribute something to the community. That being said, support/bug fixes will be offered as I am able - I do work full-time as well as have other things going on so this is an "as I can" sort of effort. If you would like to buy me a cup of coffee for my efforts it's much appreciated, my venmo is @Bahusafoo - but again, not necessary to send anything at all.

Change Notes: 
22.9.25.1 - Enhancement Release Introduced multithreading to the included validation scene (prevents "not responding" while launching game during client validation)
22.9.8.1 - Feature Release + Tweaking Timings Added Uninstaller (call from app directory or add/remove programs entry) Adjusted timing of "Updating the launcher is taking longer than expected" status from 7 to 10 seconds
22.8.27.4 - Compatibility Fix Changed Launcher.exe, Launcher-Installer.exe, Re-Launcher.exe to utilize .glconfig files instead of .config files. This fixes compatibility issues with many web hosts. Changed the launcher to download .gltmp extension files vs. original files. The Hash list generator now adds this extension to all files within the build when generating the hash validation list. This fixes compatibility issues with many web hosts.
22.3.30.7 - Bug Fix Corrected an issue introduced in 22.3.27.8 with total download size calculations affecting loading bar percentages.
22.3.27.8 - Enhancement - Added code to handle download progress via file sizes vs. just using the total number of files as before. This will prevent the launcher from looking "stuck" while downloading large files. - Added a new version of the file hash generation utility - this version is required for providing hash lists to this launcher version and newer - Added a log maintenance handler to archive logs after they grow to 2.5 MB in size. One archive log is kept at a time to allow issue tracing/support reviews if needed. - Added a Release Notes Text Color configuration parameter (reads from MainConfig), this allows you to set a separate text color in your release notes window text than the rest of the launcher.
22.1.19.1 - Fixed a bug introduced several versions ago which caused the client repair button to throw errors.
22.1.11.4 - Handled an additional scenario where downloads would fail, causing a loop of prompting the user to patch the game with no notification of failure. - Added more error handling and display of more intuitive progress/error statuses when something goes wrong. - Added initial implementation of language override support (details in documentation) - more changes are planned with this, but this is a start for those who need it.
22.1.9.8 - Corrected bug after switching to new download method in 22.1.9.6 where progress bar did not display game client download progress.
22.1.9.6 - Changed the method used for downloading Game Client files to BITS transfer, this handles large file downloads much better than the previous builds.
22.1.3.1 - Added handling for file downloads on systems without IE components, this fixed an issue on systems that were fresh installed with versions of Win10+ that had IE components disabled by default and never enabled.
21.12.20.3 - Enhancement/Bug Fix Added function to find and remove orphaned game client files, which was causing unity-side validation to fail after game updates in some cases.
21.12.17.1 Updated Validation Files Generator.exe to handle 32-bit builds (and provide a info about why you should switch to a 64-bit build in these cases)
21.12.16.7b - Bug Fix Accidentally packaged old unity side script which caused validation failure errors. Correct script has been packaged now. Also included logging info and client distribution info in documentation.
21.12.16.7 - Initial Release
Note: that all applications posted here are posted for use, both commercial and non-commercial, free of charge, and as such are provided as-is, without warranty of any kind whatsoever. visuaFUSION, FMSCUG or any other program listed here's author are not responsible for any damages or shortcomings that result from usage of any of these applications.
Error | visuaFUSION Systems Solutions Blog

Error message

  • Warning: Cannot modify header information - headers already sent by (output started at /mnt/home/visuafus/public_html/bahusa.net/includes/common.inc:2861) in drupal_send_headers() (line 1551 of /mnt/home/visuafus/public_html/bahusa.net/includes/bootstrap.inc).
  • Error: Call to undefined function mail() in DefaultMailSystem->mail() (line 79 of /mnt/home/visuafus/public_html/bahusa.net/modules/system/system.mail.inc).

Error

The website encountered an unexpected error. Please try again later.