A launcher for the OpenGOAL Project to simplify usage and installation
Go to file
2023-03-14 23:40:44 +00:00
.github ci: resolve all issues in CI discovered during QA 2023-03-12 17:04:57 -04:00
.tauri release: update release metadata to latest 2023-03-12 22:13:35 +00:00
.vscode migrate: switch to Svelte 2022-04-14 19:49:13 -04:00
public migrate: switch to Svelte 2022-04-14 19:49:13 -04:00
scripts ci: resolve all issues in CI discovered during QA 2023-03-12 17:04:57 -04:00
src f/versions: handle old release naming and hide downloads with no URL (#118) 2023-03-14 19:38:22 -04:00
src-tauri release: bump to version - 2.0.1 2023-03-14 23:40:44 +00:00
third-party/glew_2.2.0 Fix linux glewinfo 2.2.0 binary (#61) 2022-11-09 20:52:37 -05:00
.gitignore deps: switch to yarn and update all our dependencies 2023-02-18 21:24:33 -05:00
.prettierignore release: a bunch of debugging, appimages fail on releases though 2022-04-20 00:51:37 -04:00
.prettierrc.json Fix a bunch of small things discovered when testing the latest release (#118) 2022-07-23 17:37:59 -04:00
index.html frontend: get off font-awesome icons directly 2023-02-16 02:08:44 -05:00
LICENSE add a license 2022-06-01 00:27:22 -04:00
package.json release: bump to version - 2.0.1 2023-03-14 23:40:44 +00:00
postcss.config.cjs UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
README.md f/sidebar: fix link to settings page with the general tab temporarily removed 2023-03-11 13:49:20 -05:00
svelte.config.js UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
tailwind.config.cjs UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
tsconfig.json Full pass of launcher code-base, fixing bugs and cleanup (#100) 2022-07-14 18:04:01 -04:00
tsconfig.node.json renamed files and updated config files accordingly 2022-05-30 10:20:24 -04:00
vite.config.ts deps: switch to yarn and update all our dependencies 2023-02-18 21:24:33 -05:00
yarn.lock build(deps-dev): bump @octokit/plugin-throttling from 3.7.0 to 5.0.1 (#114) 2023-03-13 18:07:07 -04:00

OpenGOAL Launcher

Our attempt at distributing the OpenGOAL releases in a cross-platform and easy to use and update way. It also is a place for features involving the games, such as texture pack or mod management.

The launcher uses the Tauri framework, if you are interested in our motivation for why see below.

Usage

See the documentation on our website for hopefully up to date instructions on how to use it.

Development

Tauri requires a valid Rust installation, as well as a valid NodeJS installation.

For installing Rust, it's recommended to follow the instructions here https://www.rust-lang.org/tools/install

Windows

scoop install nodejs
npm install -g yarn

Linux (Ubuntu 22.04)

sudo apt install libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev # tauri deps, see - https://tauri.app/v1/guides/getting-started/prerequisites#setting-up-linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # installs Node Version Manager (ubuntus package is woefully out of date)
source ~/.bashrc
nvm install lts/hydrogen # installs latest nodejs 18.X
npm install -g yarn

Building and Running

To build and run the application locally, all you have to do is run:

yarn install
yarn tauri dev

Code Overview

TODO

References

Why Tauri?

The gut reaction from many when looking at the launcher is ugh, another Electron app. This however is not the case. Tauri leverages typical HTML/CSS/JS for rendering the frontend -- but it does not do so by bundling Chromium. Instead it leverages the native WebView providers found on modern operating systems. This is also why the distribution is quite small (majority of the download size is for fonts/images/videos).

Here's a non-exhaustive list of all the benefits we get out of the box with Tauri that we'd have to build ourselves / straight-up not have available to us if we went with a non-electron GUI application framework.

  • A built-in updater with private key signing
  • Bundling scripts for MSI installers, AppImages, DMGs
  • Essentially no differences frontend-wise across all operating systems
  • No need to ship an interpreter (ie. PyQt)
  • Typical web UI workflows that many people are familiar with
  • The ability to painlessly write application logic in Rust
  • Plethora of frontend E2E testing frameworks -- most of these are non-existant or cost money for other frameworks like Qt