phoboslab / wipeout-rewrite

2.66k stars 214 forks source link

Flatpak #42

Open leuc opened 1 year ago

leuc commented 1 year ago

Flatpak would be great for easy installation on Steam Deck.

Here is a working Manifest org.phoboslab.wipeout.yml

---
app-id: org.phoboslab.wipeout
runtime: org.freedesktop.Platform
runtime-version: '21.08'
sdk: org.freedesktop.Sdk
command: /app/wipegame

cleanup:
  - /lib/pkgconfig
  - /lib/debug
  - '*.la'
  - '*.a'

modules:
  - shared-modules/glew/glew.json
  - shared-modules/glu/glu-9.json
  - name: wipeout-data
    buildsystem: simple
    build-commands:
      - unzip -n wipeout-data-v01.zip
    sources:
      - type: file
        url: https://phoboslab.org/files/wipeout-data-v01.zip
        sha1: 16f9f188d171d2b1f891766a1e4ac2df7e70973e
    post-install:
      - mv wipeout $FLATPAK_DEST/wipeout

  - name: wipeout-rewrite
    buildsystem: simple
    build-commands:
      - L_FLAGS="$(pkg-config --libs glew glu) -lm" make sdl
    sources:
      - type: git
        url: https://github.com/phoboslab/wipeout-rewrite.git
    post-install:
      - install -D -m 755 -t $FLATPAK_DEST wipegame

finish-args:
  - --device=dri
  - --share=ipc
  - --share=network
  - --socket=x11
  - --socket=pulseaudio
  - --filesystem=home

Needs Flathub git sub-module for shared-modules

[submodule "shared-modules"]
    path = shared-modules
    url = https://github.com/flathub/shared-modules.git
flatpak-builder --user --install inst-dir org.phoboslab.wipeout.yml

if flatpak-builder fails downloading glu with certificate errors, apply this patch in shared-modules

diff --git a/glu/glu-9.json b/glu/glu-9.json
index c054749..e0aba90 100644
--- a/glu/glu-9.json
+++ b/glu/glu-9.json
@@ -5,6 +5,9 @@
     {
       "type": "archive",
       "url": "https://archive.mesa3d.org/glu/glu-9.0.2.tar.xz",
+      "mirror-urls": [
+          "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-9.0.2.tar.xz"
+      ],
       "sha256": "6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4"
     }
   ],
leuc commented 1 year ago

work-around for the save.dat location, since /app inside the flatpak sandbox isn't writable.

    post-install:
      - ln -sf /tmp/save.dat /app/save.dat

wayland and access to controller is needed for Steam Deck

finish-args:
  - --device=all
  - --share=ipc
  - --socket=wayland
  - --socket=x11
  - --socket=pulseaudio

build a bundle file

flatpak-builder --user --install --repo=repo inst-dir --force-clean org.phoboslab.wipeout.yml
flatpak build-bundle repo wipeout.flatpak org.phoboslab.wipeout
scp wipeout.flatpak steamdeck:~/
# on steamdeck
flatpak install --bundle --user ~/wipeout.flatpak
# create a .desktop file with
flatpak run --cwd=/app org.phoboslab.wipeout

Game does run from steam and is playable with controller

[edit] controller support

leuc commented 1 year ago

WIP https://github.com/leuc/org.phoboslab.wipeout

leuc commented 1 year ago

Build with GitHub CI

https://github.com/leuc/org.phoboslab.wipeout/releases/download/v0.1-alpha0/wipEout-rewrite-x86_64.flatpak

leuc commented 1 year ago

Build adjusted to use PATH_ASSETS. Save game state is preserved now.

https://github.com/leuc/org.phoboslab.wipeout/releases/download/v0.0.1-alpha2/wipEout-rewrite.v0.0.1-alpha2.flatpak

Doomsdayrs commented 1 year ago

So, would the code be legal to submit to flathub?

phoboslab commented 1 year ago

No.

All content hosted on Flathub must allow legal redistribution

~ https://docs.flathub.org/docs/for-app-authors/requirements

Your app should not violate any trademarks

~ https://docs.flathub.org/docs/for-app-authors/appdata-guidelines/quality-guidelines

Dracks commented 1 month ago

Hey two questions:

  1. I downloaded the last flatpak, but the music doesn't sound. (which to be honest, I miss a lot)

  2. To not include the data (images, music etc) in the flatpack will be able to be published, or still won't be able to be publish?

Thanks

P.D.: I love this game, and is a real pleasure to play it in a steamdeck.