This commit is contained in:
JMARyA 2025-03-09 02:48:00 +01:00
parent e665b6d626
commit aebd47503e
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
9 changed files with 158 additions and 3 deletions

View file

@ -18,6 +18,17 @@ pacman -S games/elden.ring # Install a game
pacman -R games/elden.ring # Remove a game
```
You can also download the packages yourself and install with:
```sh
pacman -U ./pkg.file.tar.gz.zst
```
Since the package files can become very big for games and pacman might not handle it always, you could add the following the `pacman.conf`
```
XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
```
## Package Format
Each game package should contain:
- **Game Icons**`/usr/share/icons/`
@ -35,3 +46,4 @@ Game names should be formatted by replacing spaces with dots (e.g., `Game Title`
See the `examples/` directory for a minimal build template to package games.
- [Windows Games](./examples/wine/)
- [PlayStation 3](./examples/ps3/)

60
create_ps3.py Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/python
import sys
import os
def main():
if len(sys.argv) < 3:
print("Usage: script.py <output_path> <game_title>")
sys.exit(1)
out_path = sys.argv[1]
game_title = sys.argv[2]
game_desc = input("Enter game description: ")
safe_game_title = game_title.replace(" ", ".").lower()
print("Creating pkg structure")
root = os.path.join(out_path, "root")
os.makedirs(root, exist_ok=True)
os.makedirs(
os.path.join(root, "games", "rom", "ps3", safe_game_title)
,
exist_ok=True
)
os.makedirs(
os.path.join(root, "usr", "share", "icons", safe_game_title)
,
exist_ok=True
)
os.makedirs(
os.path.join(root, "usr", "share", "applications")
,
exist_ok=True
)
open(
os.path.join(root, "usr", "share", "applications", f"{game_title}.desktop"),
"w"
).write(
open("./examples/ps3/root/usr/share/applications/Game Title.desktop").read()
.replace("<GAME_TITLE>", game_title)
.replace("<GAME_DESC>", game_desc)
.replace("game.title", safe_game_title)
)
open(
os.path.join(out_path, "PKGBUILD"),
"w"
).write(
open("./examples/ps3/PKGBUILD").read()
.replace("<GAME_DESC>", game_desc)
.replace("game.title", safe_game_title)
)
if __name__ == "__main__":
main()

60
create_wine.py Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/python
import sys
import os
def main():
if len(sys.argv) < 3:
print("Usage: script.py <output_path> <game_title>")
sys.exit(1)
out_path = sys.argv[1]
game_title = sys.argv[2]
game_desc = input("Enter game description: ")
safe_game_title = game_title.replace(" ", ".").lower()
print("Creating pkg structure")
root = os.path.join(out_path, "root")
os.makedirs(root, exist_ok=True)
os.makedirs(
os.path.join(root, "games", safe_game_title)
,
exist_ok=True
)
os.makedirs(
os.path.join(root, "usr", "share", "icons", safe_game_title)
,
exist_ok=True
)
os.makedirs(
os.path.join(root, "usr", "share", "applications")
,
exist_ok=True
)
open(
os.path.join(root, "usr", "share", "applications", f"{game_title}.desktop"),
"w"
).write(
open("./examples/wine/root/usr/share/applications/Game Title.desktop").read()
.replace("<GAME_TITLE>", game_title)
.replace("<GAME_DESC>", game_desc)
.replace("game.title", safe_game_title)
)
open(
os.path.join(out_path, "PKGBUILD"),
"w"
).write(
open("./examples/wine/PKGBUILD").read()
.replace("<GAME_DESC>", game_desc)
.replace("game.title", safe_game_title)
)
if __name__ == "__main__":
main()

12
examples/ps3/PKGBUILD Normal file
View file

@ -0,0 +1,12 @@
pkgname=game.title
pkgver=1.0
pkgrel=1
pkgdesc="<GAME_DESC>"
arch=('x86_64')
depends=('rpcs3')
source=()
sha256sums=()
package() {
rsync -vzr ../root/ "$pkgdir/"
}

View file

@ -0,0 +1 @@
GAME CONTENT

View file

@ -0,0 +1,9 @@
[Desktop Entry]
Name=<GAME_TITLE>
Comment=<GAME_DESC>
Exec=rpcs3 --no-gui --fullscreen "/games/rom/ps3/game.title/PS3_GAME"
Icon=/usr/share/icons/game.title/icon1.ico
StartupNotify=true
Terminal=false
Type=Application
Categories=Game;

View file

@ -0,0 +1 @@
GAME CONTENT

View file

@ -8,5 +8,5 @@ source=()
sha256sums=()
package() {
rsync -vzr ./root/ "$pkgdir/"
rsync -vzr ../root/ "$pkgdir/"
}

View file

@ -1,8 +1,8 @@
[Desktop Entry]
Name=<GAME_TITLE>
Comment=<GAME_DESC>
Exec=env WINEPREFIX="$HOME/Games/umu/game.title" STEAM_COMPAT_LIBRARY_PATHS="/games" bash -c "umu-run /games/game.title/_Redist/vc_redist.x64.exe /Install /Quiet && umu-run /games/game.title/_Redist/vc_redist.x86.exe /Install /Quiet && umu-run /games/game.title/game.exe"
Icon=/usr/share/icons/game.title/icon.png
Exec=env WINEPREFIX="$HOME/Games/umu/game.title" STEAM_COMPAT_LIBRARY_PATHS="/games" bash -c "cd /games/game.title && umu-run /games/game.title/_Redist/vc_redist.x64.exe /Install /Quiet && umu-run /games/game.title/_Redist/vc_redist.x86.exe /Install /Quiet && umu-run /games/game.title/game.exe"
Icon=/usr/share/icons/game.title/icon1.ico
StartupNotify=true
Terminal=false
Type=Application