Coder Social home page Coder Social logo

veloren / airshipper Goto Github PK

View Code? Open in Web Editor NEW
254.0 7.0 35.0 13.29 MB

The official Veloren launcher! This repository is a mirror. Please submit all PRs and issues on our GitLab page: https://gitlab.com/veloren/airshipper

Home Page: https://veloren.net/download

License: GNU General Public License v3.0

Dockerfile 0.12% Rust 96.79% Shell 0.13% Nix 1.14% NSIS 1.82%
rust veloren game launcher

airshipper's Introduction

Veloren logo on a screenshot

pipeline status coverage report translation status dependency status code contributor count financial contributor count discord matrix

Welcome to Veloren!

Veloren is a multiplayer voxel RPG written in Rust. It is inspired by games such as Cube World, The Legend of Zelda: Breath of the Wild, Dwarf Fortress and Minecraft. The game is in active development and enjoys a flourishing player community.

Development

Currently, most communication among contributors takes place on our official Discord server. Similarly, we provide a Matrix server as a more privacy-friendly alternative. You can join it to keep up with the game development, talk with the community or even contribute something yourself. Anyone who shows genuine effort to help is welcome to our team. You do not need to know how to code to contribute to the game!

Translators are welcome to contribute on our Weblate instance.

Translation status

Useful links

Sign up - Here you can create an official account for Veloren. Most Veloren servers require you to register with the official authentication server to play.

Click here for more details about authentication The official authentication server uses TLS encryption extensively. It also employs salted hashing to ensure your login credentials are stored securely. Additionally, the server neither tracks any metrics nor uses data for any purpose other than providing the authentication service.

The wiki - The official wiki which provides various information about the game.

The book - The book is a collection of supplementary information about the game. It includes instructions on how to compile the game.

Future plans - This is the development roadmap and what issues the community is currently working on.

Official social media and websites

Get Veloren

We provide builds for Windows, macOS and Linux. The game can be downloaded on the official website:

https://veloren.net/download/

Due to rapid game development, stable versions become outdated fast and might be incompatible with the public server.

It is recommended to use Airshipper, our official launcher, to keep your game up-to-date easily.

If you prefer to compile the game yourself, follow the instructions in our book.

FAQ

Q: How is this game licensed?

A: It is free to play, modify and distribute. Forever. Since it is a community project, we decided to license it under the GNU General Public License v3.0, which means it will always stay free and open source.

Q: What platforms are supported?

A: Veloren can run on Windows, macOS and Linux on a great range of CPU architectures. However, the x86_64 architecture is the main focus in development. Official builds for the ARM64 architecture are also provided for macOS and Linux. It is likely possible to compile the game on other platforms as well.

Q: Do you accept donations?

A: You can support the project financially on our Open Collective page.

Credit

Our Weblate project is hosted by Codeberg.

Many thanks to:

  • Software developers who have contributed to the source code repository, hunted bugs and created tools for the game.
  • Artists who have crafted game art, composed music and provided voxel models.
  • Translators who have localized the game to several languages.
  • People who have provided ideas and feedback for the game.
  • Overall, our awesome community who makes this project possible.

airshipper's People

Contributors

angelonfira avatar atomycx avatar canishelix avatar frinksy avatar herbert-karl avatar hnrq avatar hwittenborn avatar imberflur avatar issew avatar jcapucho avatar ldm0 avatar lunareclipse363 avatar maxicarlos08 avatar peterhoeg avatar pythonesque avatar quantumsheep avatar scottc avatar shouvikghosh2048 avatar songtronix avatar timokoesters avatar timsueberkrueb avatar xmac94x avatar yusdacra avatar zesterer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

airshipper's Issues

Better system integration

Is your feature request related to a problem? Please describe.
Windows currently is a first class citizen. A single installer taking care of everything while on macos/linux/bsd the installation process is more complicated.

Describe the solution you'd like
Airshipper should be packaged up based on the distro/system/os specs to better integrate into the users system.

Describe alternatives you've considered
Alternatively at minimum there should be a way to avoid the user having to chmod +x airshipper beforehand to ease the experience.

Current issues

  • linux:
    • File has to be chmod +x airshipper
    • only Arch Linux package available. Often people have to put airshipper binary manually somewhere.
  • macos:
    • File has to be chmod +x airshipper
    • File is being recognized as text
    • no package available. Often people have to put airshipper binary manually somewhere or compile themself.

Airshipper error on launch

Describe the bug

I'm trying to boot Airshipper that was installed on pamac from the AUR, but I'm getting this error:

[WARN] Missing features: SAMPLER_ANISOTROPY 
WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
[WARN] Shader validation is disabled 
[ERROR] Airshipper panicked: 

surface does not support the adapter's queue family: panicked at 'surface does not support the adapter's queue family', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.6.0/src/backend/direct.rs:1323:35
thread 'main' panicked at 'surface does not support the adapter's queue family', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/wgpu-0.6.0/src/backend/direct.rs:1323:35
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[ERROR] Heaps not completely freed before drop. Utilization: MemoryHeapUtilization { utilization: MemoryUtilization { used: 82273792, effective: 30096044 }, size: 2147483648 }
[ERROR] Memory leak: SizeEntry(256) is still used
[ERROR] Memory leak: SizeEntry(2048) is still used
[ERROR] Memory leak: SizeEntry(16384) is still used
[ERROR] Memory leak: SizeEntry(131072) is still used
[ERROR] Memory leak: SizeEntry(32768) is still used
[ERROR] Memory leak: SizeEntry(262144) is still used
[ERROR] Memory leak: SizeEntry(65536) is still used
[ERROR] Memory leak: SizeEntry(524288) is still used
[ERROR] Memory leak: SizeEntry(1048576) is still used
[ERROR] Memory leak: SizeEntry(2097152) is still used
[ERROR] Memory leak: SizeEntry(4194304) is still used
[ERROR] Memory leak: SizeEntry(25600) is still used
[ERROR] Memory leak: SizeEntry(204800) is still used
[ERROR] Memory leak: SizeEntry(51200) is still used
[ERROR] Memory leak: SizeEntry(409600) is still used
[ERROR] Memory leak: SizeEntry(102400) is still used
[ERROR] Memory leak: SizeEntry(819200) is still used
[ERROR] Memory leak: SizeEntry(1638400) is still used
[ERROR] Memory leak: SizeEntry(2600192) is still used
[ERROR] Memory leak: SizeEntry(5600000) is still used
[ERROR] Memory leak: SizeEntry(1400000) is still used
[ERROR] Memory leak: SizeEntry(12800) is still used
[ERROR] Memory leak: SizeEntry(240128) is still used
[ERROR] Memory leak: SizeEntry(40192) is still used
[ERROR] Memory leak: SizeEntry(321536) is still used
[ERROR] Memory leak: SizeEntry(80384) is still used
[ERROR] Memory leak: SizeEntry(643072) is still used
[ERROR] Memory leak: SizeEntry(160768) is still used
[ERROR] Memory leak: SizeEntry(1286144) is still used
[ERROR] Memory leak: SizeEntry(36096) is still used
[ERROR] Memory leak: SizeEntry(288768) is still used
[ERROR] Memory leak: SizeEntry(72192) is still used
[ERROR] Memory leak: SizeEntry(577536) is still used
[ERROR] Memory leak: SizeEntry(144384) is still used
[ERROR] Memory leak: SizeEntry(1155072) is still used
[ERROR] Memory leak: SizeEntry(16777216) is still used
[ERROR] Not all allocations from LinearAllocator were freed
[ERROR] DescriptorAllocator is dropped

This could be because of some underlying graphical issue on my system, but I was wondering if there was anything else I could debug.

Desktop:

  • OS: Garuda Linux
  • GPU: GTX 1070TI

provide same functionality to server

Right now the server recompiles right after merge of new features and kicks users who have to wait for CI to produce the next version (~20min) until they can play again.

It would be awesome for server owners to use airshipper to update their servers with clients.

BSD Version

Why no version available for BSD Os ?!
I'm using freeBSD OS How do I install AirShiper Launcher?

More bandwidth efficient download of Veloren

Right now Airshipper just downloads the zip everytime which includes all assets. This should be avoided by unzipping it to the s3 storage with a file list and hashes for the client to check each file and the hash locally, downloading what's corrupted, missing, outdated.

For the hashes we can use: https://mvdnes.github.io/rust-docs/zip-rs/zip/read/struct.ZipFile.html#method.crc32
Probably follow this workflow for robust updating: https://github.com/ioquake/ioq3/blob/master/autoupdater-readme.txt

Packaging Airshipper: Fedora Perspective

Is your feature request related to a problem? Please describe.
Currently, packaging Airshipper as an RPM for Fedora is not as straightforward as it could be.
Fedora provides Packaging Guidelines and specific ones for Rust packages. Although there is no requirement to respect these guidelines when creating a Copr repository (Cool Other Projects / Community Projects), following them helps a great deal in making packaging easier.

Describe the solution you'd like

  • Separate the client and server into 2 separate repositories:
    Currently the source for both the client and server components are situated on the same repository. Using macros provided specifically for packaging Cargo-based packages do not work.

  • Use crates.io as the source for dependencies:
    Fedora packages are preferably compiled against system libraries. Macros are provided to achieve this, but only Rust libraries published on crates.io are packaged for Fedora.

  • Use the latest published versions of all dependencies:
    The latest versions of dependencies are more likely to already be packaged for Fedora. However, iced is one of the packages not available at all yet. (Possibly the last one left for this project?)

  • Remove nightly features:
    I suppose this could be in a separate branch if required, but nightly features are not supported when packaging an RPM for Fedora. (Packages must be built using the distribution's version of cargo and rustc, rustup is not available)

  • Add .desktop file and PNG/SVG icon:
    Currently, my package of Airshipper uses a patch file to add a .desktop file, and uses a second source to get a icon. Getting them directly from the repository would simplify things.

Describe alternatives you've considered
Alternatively, I could maintain the RPM package in the same way as it is packaged now.

Additional context
This was mostly a description of my point of view as a Fedora user, rather than demands. I would be happy to help with any of the aforementioned changes ๐Ÿ˜ƒ

I am not sure what the long-term plan for Airshipper is, or if its functionality / purpose will change. In its current state, it is not suitable to be accepted into official Fedora repositories, as it "downloads code bundles from the internet in order to be functional or useful". Alternative, third-party repositories such as RPMFusion might be more inclined to including Airshipper.

Purging s3 artifacts does not consider os

Describe the bug
Airshipper server currently does not take into account to have atleast one nightly per os. As such it can happen that e.g. all windows artifacts will be purged from s3 (most likely when specific artifacts are failing in our CI) and airshipper reporting that the Archive is invalid.

The purging error has shown an bug in airshipper itself as it ignores any http status code and as such tries to download the server's response itself which is of course not a valid zip archive.

Expected behavior
The server should take into account that at minimum one version for each os must be kept when pruning from s3.

Screenshots from user
cmd_airshipper

Offline support

Right now offline support is really bad and that must be fixed.

Crash with mesa-git and wayland

When I run airshipper on Arch Linux with mesa-git installed I get a crash with following output:

WARNING: lavapipe is not a conformant vulkan implementation, testing use only.
[WARN] Missing features: SAMPLER_ANISOTROPY 
[WARN] Shader validation is disabled 
error marshalling arguments for create_prime_buffer: dup failed: Bad file descriptor
Error marshalling request: Bad file descriptor
[ERROR] Airshipper panicked: 

called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }: panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/worker/mod.rs:272:14
thread 'smithay-clipboard' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 9, kind: Other, message: "Bad file descriptor" }', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/worker/mod.rs:272:14
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[ERROR] Airshipper panicked: 

Next frame: Outdated: panicked at 'Next frame: Outdated', /home/runner/.cargo/git/checkouts/iced-9e73d2fbe1fce35a/62295f5/wgpu/src/window/compositor.rs:130:52
thread 'main' panicked at 'Next frame: Outdated', /home/runner/.cargo/git/checkouts/iced-9e73d2fbe1fce35a/62295f5/wgpu/src/window/compositor.rs:130:52
[ERROR] Airshipper panicked: 

called `Result::unwrap()` on an `Err` value: "SendError(..)": panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/lib.rs:85:57
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "SendError(..)"', /home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/smithay-clipboard-0.5.1/src/lib.rs:85:57
stack backtrace:
   0:     0x55690b20029a - <unknown>
   1:     0x55690ae215cc - <unknown>
   2:     0x55690b1ffa81 - <unknown>
   3:     0x55690b1ff485 - <unknown>
   4:     0x55690b1fec53 - <unknown>
   5:     0x55690ad87ea6 - <unknown>
   6:     0x55690b1fe800 - <unknown>
   7:     0x55690b21c778 - <unknown>
   8:     0x55690b21c6ec - <unknown>
   9:     0x55690b21c69d - <unknown>
  10:     0x55690ae1ed90 - <unknown>
  11:     0x55690ae25c32 - <unknown>
  12:     0x55690b1f7b3b - <unknown>
  13:     0x55690af0367b - <unknown>
  14:     0x55690ac953b5 - <unknown>
  15:     0x55690ac36943 - <unknown>
  16:     0x55690ac40042 - <unknown>
  17:     0x55690acf308d - <unknown>
  18:     0x55690acdb3a4 - <unknown>
  19:     0x55690acd7a0e - <unknown>
  20:     0x55690ac3eb76 - <unknown>
  21:     0x55690ad8583a - <unknown>
  22:     0x55690ad9d036 - <unknown>
  23:     0x55690ac81553 - <unknown>
  24:     0x55690ada1e75 - <unknown>
  25:     0x7ff1585ce152 - __libc_start_main
  26:     0x55690ac2002a - <unknown>
  27:                0x0 - <unknown>
thread panicked while panicking. aborting.
Illegal instruction (core dumped)

Airshipper does not crash using an X session with mesa-git though. So this could is probably a Wayland related bug.

This is also only related to the GUI of this launcher. The CLI works without problems (I can update and start the game via terminal).

self updates on windows

On linux the package manager will take care of keeping airshipper up to date. However on windows only third party package managers like chocolatey exists which we do not want to require.

The self_update crate could solve this well by using the releases which github provides.

BSD Version!

Why no version available for BSD Os ?!
I'm using freeBSD OS How do I install AirShiper Launcher?

Unable to run the project from scratch

Describe the bug
Cannot run the project due to a package build problem.
Error:

   ... many downloads and compiles later...
   Compiling owned_ttf_parser v0.6.0
error: failed to run custom build command for `x11 v2.18.2`

Caused by:
  process didn't exit successfully: `/home/ferkarchiloff/Airshipper/target/release/build/x11-9f19e8c63dd62c9f/build-script-build` (exit code: 101)
  --- stdout
  cargo:rerun-if-env-changed=X11_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=X11_STATIC
  cargo:rerun-if-env-changed=X11_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Failure { command: "\"pkg-config\" \"--libs\" \"--cflags\" \"x11\" \"x11 >= 1.4.99.1\"", output: Output { status: ExitStatus(ExitStatus(256)), stdout: "", stderr: "Package x11 was not found in the pkg-config search path.\nPerhaps you should add the directory containing `x11.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'x11\' found\nPackage x11 was not found in the pkg-config search path.\nPerhaps you should add the directory containing `x11.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'x11\' found\n" } }', /home/ferkarchiloff/.cargo/registry/src/github.com-1ecc6299db9ec823/x11-2.18.2/build.rs:36:67
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: build failed
ferkarchiloff@ferkarchiloff-desktop:~/Airshipper$ 

To Reproduce
Steps to reproduce the behavior:

  1. Clone the repository.
  2. cd into it.
  3. Run the cargo run --release command.
  4. See error.

Expected behavior
I was expecting to run it and get Airshipper running.

Desktop (please complete the following information):

  • OS: Ubuntu MATE 20.04.2 LTS (Focal Fossa) 64-bit
  • GPU: AMD RX580 8GB AREZ OC

airshipper does not display changelog and news

Error: invalid uri character

This error originates from isahc not being able to request the changelog/news due to a space in the url which comes from whoami providing as platform: Mac OS.
This should be replaced with std::env::consts::OS which even allows us to remove the entire crate.

NOTE: Any error occuring will block airshipper from allowing the user to try to play the game. This design flaw needs to be fixed once offline support is being worked on.

"Antialiasing: false" causes integrated GPU to be picked without Vulkan support

Describe the bug
I'm on Pop!_OS with an integrated Intel GPU and an external Nvidia GPU with vendor drivers.
I cannot start Airshipper at all, since Iced will pick my integrated Intel GPU, which has no support for Vulkan.

I found this in your source code:

// client/src/gui/mod.rs
        // https://github.com/hecrj/iced/issues/537
        antialiasing: false,

So apparently this fixes some invisible fonts, but unfortunately according to this comment, antialiasing needs to be set to true so that my Nvidia GPU will be picked.

I'm in a deadlock here. Is there maybe some other way to fix the invisible fonts or replace the font with another one?

Wayland Support

Is your feature request related to a problem? Please describe.
Using the CLI can be frustrating. When having an update and not launching from the terminal, you won't be able to update unless you execute Airshipper in the terminal.

Describe the solution you'd like
Add support for Wayland.

Describe alternatives you've considered
Keep using the CLI.

Additional context
Opening Airshipper when using Wayland, it prints this message and only allows me to use the CLI:
[ERROR] IcedError => a suitable graphics adapter or device could not be found

VCRUNTIME140_1.dll is missing

Some people have issues with starting airshipper due to the missing dll.
If placed right beside airshipper it does fix the issue for most of the people.

We should ship it by default with the installer.

Sign msi installer

Seems like a very hard thing to achieve cheaply and any advice would help me!

make GUI optional

it would be nice to be able to compile airshipper without an GUI (see #11 for possible usecase) to still use it even though the GUI does not work so smoothly on the current system.

[Feature] Version Select

I just downloaded Airshipper and got the latest updates and the game is not starting understandably,
So what about giving the option to choose between versions ?
if the nightly build is broken i can go back to the latest "stable" release

server rewrite

A full async rewrite of the server side of airshipper is required due to the available DigitalOcean Space now available to us.

What the backend should do is:

  • via a gitlab webhook download the veloren artifacts and
  • store 3 nightlies and all releases on DigitalOcean Space
  • serve detailed statistics via a prometheus endpoint for our grafana server to grab.

Things to figure out:

  • How to optimize download size? (how to avoid downloading the assets if they haven't changed)

Airshipper app does not open on Mac

Describe the bug
I want to download and install the Airshipper app for mac, but I am unable to open the installer correctly.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://www.veloren.net/download/ and download the .zip file
  2. Unzip the file
  3. Double click on the icon of the program
  4. Instead of opening the program, it opens like a text file

Expected behavior
Airshipper program should open like a .dmg or a normal Mac program, not like a text file

Screenshots
The file looks like this:
Captura de pantalla 2021-03-28 a las 21 00 56
And the program opens like this:
imagen

Desktop (please complete the following information):

  • OS: Mac OS Catalina
  • GPU: Intel

Additional context
I don't know Rust.

Bundle openssl

avoids airshipper being unusable by specific distros with old openssl versions.

Should be fixed by adding:
openssl = { version = "*", features = ["vendored"] }

to the dependency section of Cargo.toml

Detect Veloren crashes

Can be done via the exit status. Later on with multi window support from iced ask if User wants to report the crash and upload the crash to my server. Fully optional of course and you have to be able to see what exactly will be uploaded.

problem when downloading latest veloren build

when trying to use the current release and self build of airshipper, the download cancels at 24% with following error message:
grafik

Plattform: Windows 10
Toolchain: nightly-2020-06-10-x86_64-pc-windows-msvc

when the download is interrupted it starts from the begin

I'm having an hard time to download updates, I don't have a great ISP and if the connection drops I have to download the whole update from the begin, it could just divide the download in chunks

NetworkError => request or response body error: operation timed out [ERROR]
Download failed with: request or response body error: error reading a body from connection: end of file before message length reached

(v0.4.1) Error self-updating Airshipper on Windows 10: msiexec help is displayed instead of executing update

Hello,

When trying to update Airshipper to the latest version via Airshipper v0.4.1, I receive the msiexec help instead of having the msi execute. In my experience as a sysadmin, this happens when you use the incorrect arguments.

The msiexec command it's trying to execute takes the following form:

"C:\Windows\System32\msiexec.exe" /passive /i C:\Users\Example User\AppData\Local\airshipper\airshipper-windows.msi /L*V C:\Users\Example User\AppData\Local\airshipper\airshipper-install.log AUTOSTART=1

It seems the issue is that since I have a space in my username, it's interpreting the C:\ paths as two seperate arguments instead of one. This could be resolved by quoting those arguments. I have attached a link to the relevant code below. Thx

https://github.com/Songtronix/Airshipper/blob/ff875aa4aa41540fe4c34f66ad62b349ca278bdb/client/src/windows.rs#L95

Repo cleanup

Splitting up the client would be great to further detach gui and cli.
But also divide server and client more to avoid all the clutter in the workspace (e.g. env file, docker-compose, dockerfile which is only relevant to the server)

Extract a library out of airshipper

A lot of functionality currently is very generic to any launcher (checking for updates, partial updates, profiles, offline support) and should be extracted into an external crate to be published and used by Airshipper.

As a nice side effect by extracting core logic of the launcher into a separate library is it will reduce the overall growing codebase to a nice maintainable level.

Make tools to build releases

https://matklad.github.io/2018/01/03/make-your-own-make.html

Could be used in CI too maybe.


  • cargo release will do the following:
    • Build release of airshipper client in regards to current OS (linux, windows, macOS)
    • Copy all needed assets
    • Package it up as needed:
      • Linux: .tar.gz, .zip, .deb, .rpm, ...
      • Windows: .zip, .msi
      • MacOS: .zip
    • Placed by convention in packages/<OS>/airshipper-<version>-<githash:5>.<ext>

This means CI just collects them up from all runners and is ready to make a release.


  • cargo upload will do the following:
  • TBD

Some env vars no longer need to be set

VOXYGEN_CONFIG
and
VOXYGEN_LOGS
are no longer needed as these are now sensible locations by default and setting these disrupts the new structure with everything in a folder named userdata.

VELOREN_SAVES_DIR is no longer read

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.