games/play-1365.sh0000755000000000000000000000374614471751340012570 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # 1365 # send your bug reports to bugs@dotslashplay.it ### script_version=20240504.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='1365-game' GAME_NAME='1365' ARCHIVE_BASE_0_NAME='1365 Linux 1.0' ARCHIVE_BASE_0_MD5='8cb8fb11a2df4af72154f2909238c09c' ARCHIVE_BASE_0_TYPE='file' ARCHIVE_BASE_0_SIZE='32000' ARCHIVE_BASE_0_VERSION='1.0.0-itch1' ARCHIVE_BASE_0_URL='https://shadybug.itch.io/1365' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='1356_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='f820888c924fed091c5d64d9aaa2d467' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/1365/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256 512x512' APP_MAIN_EXE='1365 Linux 1.0' PKG_MAIN_ARCH='32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libpulse-simple.so.0 libpulse.so.0 libX11.so.6 libXcursor.so.1 libXinerama.so.1 libXi.so.6 libXrandr.so.2' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Include game data content_inclusion_icons install -D --mode=755 \ "$(archive_path "$(current_archive)")" \ "$(package_path 'PKG_MAIN')$(path_game_data)/$(application_exe 'APP_MAIN')" # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-140.sh0000755000000000000000000002004714471751340012467 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2021 Hoël Bézier set -o errexit ### # 140 # send your bug reports to bugs@dotslashplay.it ### script_version=20250325.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='140-game' GAME_NAME='140' ARCHIVE_BASE_GOG_3_NAME='140_1010_2019_33250.sh' ARCHIVE_BASE_GOG_3_MD5='cbfdc455cf49c88aea3cb62d23fccb55' ARCHIVE_BASE_GOG_3_SIZE='130000' ARCHIVE_BASE_GOG_3_VERSION='2019.10.10.r473-gog33250' ARCHIVE_BASE_GOG_3_URL='https://www.gog.com/game/140_game' ARCHIVE_BASE_GOG_2_NAME='140_en_171409_r400_22641.sh' ARCHIVE_BASE_GOG_2_MD5='69a67be9632ad2b7db02b3d11486d81b' ARCHIVE_BASE_GOG_2_SIZE='130000' ARCHIVE_BASE_GOG_2_VERSION='2017.09.14.r400-gog22641' ARCHIVE_BASE_GOG_1_NAME='gog_140_2.2.0.3.sh' ARCHIVE_BASE_GOG_1_MD5='03e760fa1b667059db7713a9e6c06b6d' ARCHIVE_BASE_GOG_1_SIZE='130000' ARCHIVE_BASE_GOG_1_VERSION='2017.07.19.r370-gog2.2.0.3' ARCHIVE_BASE_GOG_0_NAME='gog_140_2.1.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='6139b77721657a919085aea9f13cf42b' ARCHIVE_BASE_GOG_0_SIZE='130000' ARCHIVE_BASE_GOG_0_VERSION='2017.06.19-gog2.1.0.2' ARCHIVE_BASE_GOG_OLDNAME_0_NAME='gog_140_2.0.0.1.sh' ARCHIVE_BASE_GOG_OLDNAME_0_MD5='49ec4cff5fa682517e640a2d0eb282c8' ARCHIVE_BASE_GOG_OLDNAME_0_SIZE='110000' ARCHIVE_BASE_GOG_OLDNAME_0_VERSION='2.0-gog2.0.0.1' ARCHIVE_BASE_HUMBLE_1_NAME='140-2019-09-10-145438-r473-linux-nodrm.zip' ARCHIVE_BASE_HUMBLE_1_MD5='5b5e46c1c4c4dd31f8f29d8fa1207562' ARCHIVE_BASE_HUMBLE_1_SIZE='130000' ARCHIVE_BASE_HUMBLE_1_VERSION='2019.10.10.r473-humble.2019.10.11' ARCHIVE_BASE_HUMBLE_1_URL='https://www.humblebundle.com/store/140' ARCHIVE_BASE_HUMBLE_ALTPATH_0_NAME='140-nodrm-linux-2017-07-19-r370.zip' ARCHIVE_BASE_HUMBLE_ALTPATH_0_MD5='2444ec7803c5d6dcf161b722705f0402' ARCHIVE_BASE_HUMBLE_ALTPATH_0_SIZE='130000' ARCHIVE_BASE_HUMBLE_ALTPATH_0_VERSION='2017.07.19.r370-humble.2017.08.04' ARCHIVE_BASE_HUMBLE_0_NAME='140-nodrm-linux-2017-06-20.zip' ARCHIVE_BASE_HUMBLE_0_MD5='5bbc48b203291ca9a0b141e3d07dacbe' ARCHIVE_BASE_HUMBLE_0_SIZE='130000' ARCHIVE_BASE_HUMBLE_0_VERSION='2017.06.19-humble.2017.06.20' ARCHIVE_BASE_HUMBLE_OLDNAME_0_NAME='140_Linux.zip' ARCHIVE_BASE_HUMBLE_OLDNAME_0_MD5='0829eb743010653633571b3da20502a8' ARCHIVE_BASE_HUMBLE_OLDNAME_0_SIZE='110000' ARCHIVE_BASE_HUMBLE_OLDNAME_0_VERSION='2.0-humble.2016.09.14' UNITY3D_NAME='140Linux' UNITY3D_NAME_HUMBLE_OLDNAME='140' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='linux' CONTENT_PATH_DEFAULT_HUMBLE_ALTPATH='.' CONTENT_PATH_DEFAULT_HUMBLE_OLDNAME='.' CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' # Use persistent storage for game progress USER_PERSISTENT_FILES=' 140.sav' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" pkg_setup() { option_package=$(option_value 'package') case "$option_package" in ('arch'|'gentoo') PKG_BIN64_ARCH='64' PKG_BIN64_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_ARCH='32' PKG_BIN32_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" ;; ('deb') PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN64_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_ARCH='32' PKG_BIN32_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN32_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" ;; ('egentoo') PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_DEPENDENCIES_LIBRARIES" # play.it 2.20 uses 64-bit binary packages dependencies ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } src_extract() { archive_extraction_default } src_prepare() { # Nothing to do here return 0 } pkg_prepare() { option_package=$(option_value 'package') case "$option_package" in ('deb'|'egentoo') content_inclusion_default ;; ('arch'|'gentoo') content_inclusion_default # Copy data files into both binary packages local GAME_DATA_PATH target_path_bin32 target_path_bin64 GAME_DATA_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_DATA')" target_path_bin32="$(realpath --canonicalize-missing "$(package_path 'PKG_BIN32')$(path_game_data)")" target_path_bin64="$(realpath --canonicalize-missing "$(package_path 'PKG_BIN64')$(path_game_data)")" ( cd "$GAME_DATA_PATH" local file_pattern file_path while read -r file_pattern; do pwd if [ -z "$file_pattern" ]; then continue fi if [ -e "$file_pattern" ]; then mkdir --parents "$target_path_bin32" mkdir --parents "$target_path_bin64" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin32" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin64" rm --force --recursive "$file_pattern" else while read -r file_path; do mkdir --parents "$target_path_bin32" mkdir --parents "$target_path_bin64" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin32" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin64" rm --force --recursive "$file_pattern" done <<- EOF $(find . -path "./${file_pattern#./}") EOF fi done <<- EOF $(content_files 'GAME_DATA') EOF ) ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } src_clean() { # Nothing to do here return 0 } pkg_icons() { option_package=$(option_value 'package') case "$option_package" in ('deb'|'egentoo') content_inclusion_icons 'PKG_DATA' ;; ('arch'|'gentoo') content_inclusion_icons 'PKG_BIN64' content_inclusion_icons 'PKG_BIN32' ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } pkg_launchers() { launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' } pkg_build() { packages_generation } pkg_clean() { working_directory_cleanup } pkg_instructions() { print_instructions } ## Ensure that the default package is correctly set, ## despite PACKAGES_LIST not being set early init_package() { option_package=$(option_value 'package') case "$option_package" in ('arch'|'gentoo') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32' ;; ('deb') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' ;; ('egentoo') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac set_default_package 'PKG_BIN64' } ## Run the default initialization actions initialization_default "$@" pkg_setup src_extract src_prepare pkg_icons ## must be called before pkg_prepare pkg_prepare src_clean pkg_launchers pkg_build pkg_instructions pkg_clean ## must be called after pkg_instructions exit 0 games/play-6180-the-moon.sh0000755000000000000000000000434014471751340014303 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # 6180 The Moon # send your bug reports to bugs@dotslashplay.it ### script_version=20250627.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='6180-the-moon' GAME_NAME='6180 The Moon' ARCHIVE_BASE_0_NAME='6180_the_moon_2.1.0_Linux.zip' ARCHIVE_BASE_0_MD5='79e81fb57d8d5dbf27a7c4be2dd0efd9' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='2.1.0-humble141209' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/6180-the-moon' UNITY3D_NAME='6180 the moon' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-a-boy-and-his-blob.sh0000755000000000000000000000522214471751340015425 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # A Boy and His Blob # send your bug reports to bugs@dotslashplay.it ### script_version=20250628.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='a-boy-and-his-blob' GAME_NAME='A Boy and His Blob' ARCHIVE_BASE_ZOOM_0_NAME='A Boy and His Blob.tar.gz' ARCHIVE_BASE_ZOOM_0_MD5='4e56d18404f82a2c6f6489661df807c8' ARCHIVE_BASE_ZOOM_0_SIZE='1300000' ARCHIVE_BASE_ZOOM_0_VERSION='2016.04.21-zoom1' ARCHIVE_BASE_ZOOM_0_URL='https://www.zoom-platform.com/product/a-boy-and-his-blob' ARCHIVE_BASE_GOG_0_NAME='gog_a_boy_and_his_blob_2.1.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='7025963a3a26f838877374f72ce3760d' ARCHIVE_BASE_GOG_0_SIZE='1300000' ARCHIVE_BASE_GOG_0_VERSION='2016.04.21-gog2.1.0.2' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/a_boy_and_his_blob' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='a-boy-and-his-blob_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='2a555c1f6b02a45b8932c8e72a9c1dd6' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/a-boy-and-his-blob/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64' CONTENT_PATH_DEFAULT_ZOOM='A Boy And His Blob/game' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so.7 libGLEW.so.1.10' CONTENT_GAME_BIN_FILES=' Blob' CONTENT_GAME_DATA_FILES=' content' APP_MAIN_EXE='Blob' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-a-hat-in-time.sh0000755000000000000000000000525514471751340014521 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Hat in Time # send your bug reports to bugs@dotslashplay.it ### script_version=20240522.12 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='a-hat-in-time' GAME_NAME='A Hat in Time' ARCHIVE_BASE_0_NAME='setup_a_hat_in_time_nyakuza_metro_1.12_(64bit)_(35607).exe' ARCHIVE_BASE_0_MD5='b488a803f372891556adde2589b87643' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_a_hat_in_time_nyakuza_metro_1.12_(64bit)_(35607)-1.bin' ARCHIVE_BASE_0_PART1_MD5='c0b7186f04d9d07baa835cd4186a5fb9' ARCHIVE_BASE_0_PART2_NAME='setup_a_hat_in_time_nyakuza_metro_1.12_(64bit)_(35607)-2.bin' ARCHIVE_BASE_0_PART2_MD5='7ce5f0d9d40007cb4c12e9312f0cfc57' ARCHIVE_BASE_0_SIZE='8000000' ARCHIVE_BASE_0_VERSION='1.12-gog35607' ARCHIVE_BASE_0_URL='https://www.gog.com/game/a_hat_in_time' ## Despite the similar directories structure, ## this is not an Unreal Engine 4 game but an Unreal Engine 3 one. CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' binaries engine' CONTENT_GAME_DATA_FILES=' hatintimegame' CONTENT_GAME0_BIN_PATH='app' CONTENT_GAME0_BIN_FILES=' engine' CONTENT_GAME0_DATA_PATH='app' CONTENT_GAME0_DATA_FILES=' hatintimegame' ## Prevent keyboard inputs from being ignored. WINE_VIRTUAL_DESKTOP='auto' ## Cursor is prevented from leaving the game window, ## preventing problems with mouse look. WINE_WINETRICKS_VERBS='grabfullscreen=y' USER_PERSISTENT_DIRECTORIES=' hatintimegame/config hatintimegame/SaveData' APP_MAIN_EXE='binaries/win64/hatintimegame.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-a-story-about-my-uncle.sh0000755000000000000000000000534514471751340016424 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Story About My Uncle # send your bug reports to bugs@dotslashplay.it ### script_version=20260519.6 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='a-story-about-my-uncle' GAME_NAME='A Story About My Uncle' # This DRM-free archive is no longer sold by humblebundle.com, # they currently sell only Steam keys for this game. ARCHIVE_BASE_0_NAME='Linux-NoDRM-ASAMU_5188.zip' ARCHIVE_BASE_0_MD5='71f9f3add29a733c4a1a7d18d738d3d6' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='5188-humble170516' ARCHIVE_OPTIONAL_ICONS_NAME='a-story-about-my-uncle_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='db4eb7ab666e61ea5fc983102099ab31' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/games/a-story-about-my-uncle/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 32x32' # The following has no effect on Linux native games yet. # (./play.it 2.35) GAME_ENGINE='unrealengine3' CONTENT_PATH_DEFAULT='.' # ASAMU dependencies CONTENT_LIBS_BIN_PATH='Binaries/linux-amd64' CONTENT_LIBS_BIN_FILES=' libPhysXExtensions.so.1 libPhysXLoader.so.1 libsteam_api.so' # Extra required dependencies, their absence leads to a crash. CONTENT_LIBS0_BIN_PATH='Binaries/linux-amd64' CONTENT_LIBS0_BIN_FILES=' libPhysXCooking.so libPhysXCore.so PhysXUpdateLoader.so' CONTENT_GAME_BIN_FILES=' Binaries/linux-amd64/ASAMU' CONTENT_GAME_DATA_FILES=' ASAMU Engine' APP_MAIN_EXE='Binaries/linux-amd64/ASAMU' USER_PERSISTENT_DIRECTORIES=' ASAMU/Cloud ASAMU/Config ASAMU/Saves' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-a-tale-of-paper.sh0000755000000000000000000000537714471751340015046 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # A Tale of Paper # send your bug reports to bugs@dotslashplay.it ### script_version=20251206.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='a-tale-of-paper' GAME_NAME='A Tale of Paper: Refolded' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_a_tale_of_paper_1.0_(56083).exe' ARCHIVE_BASE_0_MD5='8a1acfc78e34a89ce608e275674a829a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_a_tale_of_paper_1.0_(56083)-1.bin' ARCHIVE_BASE_0_PART1_MD5='664731f03da4cffe8a9771d298476cb2' ARCHIVE_BASE_0_SIZE='4100000' ARCHIVE_BASE_0_VERSION='1.0-gog56083' ARCHIVE_BASE_0_URL='https://www.gog.com/game/a_tale_of_paper_refolded' ARCHIVE_BASE_DEMO_0_NAME='setup_a_tale_of_paper_demo_1.0_(54424).exe' ARCHIVE_BASE_DEMO_0_MD5='9c154ee673c94bc896b1b08ac7c6b13b' ARCHIVE_BASE_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_DEMO_0_SIZE='930000' ARCHIVE_BASE_DEMO_0_VERSION='1.0-gog54424' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/a_tale_of_paper_demo' UNREALENGINE4_NAME='ataleofpaper' UNREALENGINE4_NAME_DEMO='prototipo' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/prototipo-win64-shipping.exe" APP_MAIN_EXE_DEMO="${UNREALENGINE4_NAME_DEMO}/binaries/win64/${UNREALENGINE4_NAME_DEMO}-win64-shipping.exe" ## The --name=101 wrestool option, default for UE4 games, should not be used here. APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Do not install the Visual C++ Runtime, as it triggers a failure to load MSVCP140.dll. unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-arise-a-simple-story.sh0000755000000000000000000000436314471751340016154 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Arise: A Simple Story # send your bug reports to bugs@dotslashplay.it ### script_version=20241105.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='arise-a-simple-story' GAME_NAME='Arise: A Simple Story' ARCHIVE_BASE_0_NAME='setup_arise_a_simple_story_1.20.3_(64bit)_(53242).exe' ARCHIVE_BASE_0_MD5='7b0ce5207861d990aa4d2c4ba9baefb1' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_arise_a_simple_story_1.20.3_(64bit)_(53242)-1.bin' ARCHIVE_BASE_0_PART1_MD5='a364d73d653de062ff7f2808614bd6ef' ARCHIVE_BASE_0_PART2_NAME='setup_arise_a_simple_story_1.20.3_(64bit)_(53242)-2.bin' ARCHIVE_BASE_0_PART2_MD5='ab2a758bd1885455e45336ba70cbc018' ARCHIVE_BASE_0_SIZE='5800000' ARCHIVE_BASE_0_VERSION='1.20.3-gog53242' ARCHIVE_BASE_0_URL='https://www.gog.com/game/arise_a_simple_story' UNREALENGINE4_NAME='arise' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" ## The --name=101 wrestool option, default for UE4 games, should not be used here APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ascendant.sh0000755000000000000000000001132614471751340014123 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 mortalius # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Ascendant # send your bug reports to bugs@dotslashplay.it ### script_version=20250615.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='ascendant' GAME_NAME='Ascendant' ARCHIVE_BASE_0_NAME='gog_ascendant_2.2.0.7.sh' ARCHIVE_BASE_0_MD5='8cdcd59a2f8363b7237e9cbe2675adda' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.2.2-gog2.2.0.7' ARCHIVE_BASE_0_URL='https://www.gog.com/game/ascendant' UNITY3D_NAME='Ascendant' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "$PLAYIT_WORKDIR/gamedata/$(content_path_default)" # Work around massive files duplication between 32-bit and 64-bit builds. ## Merge data directories for 32-bit and 64-bit builds. UNITY3D_NAME_64BIT='Ascendant_64' cp --force --recursive --link "${UNITY3D_NAME_64BIT}_Data"/* "$(unity3d_name)_Data" rm --force --recursive "${UNITY3D_NAME_64BIT}_Data" ## Rename 64-bit binary. mv "${UNITY3D_NAME_64BIT}.x86_64" "$(unity3d_name).x86_64" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not disable MAP_32BIT flag, as it would lead to the following crash: ## ## #0 __pthread_kill_implementation (threadid=, signo=signo@entry=11, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44 ## #1 0x00007ffff7a9c9ff in __pthread_kill_internal (threadid=, signo=11) at ./nptl/pthread_kill.c:89 ## #2 0x00007ffff7a47cc2 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26 ## #3 0x00007ffff239a244 in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #4 0x00007ffff239a2ce in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #5 0x00007ffff22d186c in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #6 0x00007ffff22946ef in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #7 0x00007ffff7fa7171 in ?? () ## #8 0x00007ffff23affb9 in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #9 0x0000000001ec3120 in ?? () ## #10 0x00007ffff7344d48 in ?? () ## #11 0x00007ffff2230986 in ?? () from (…)/Ascendant_Data/Mono/x86_64/libmono.so ## #12 0x00007ffff7aa8690 in _int_free_chunk (av=av@entry=0x7ffff7befac0 , p=p@entry=0x1ec8390, size=4112, have_lock=, have_lock@entry=0) at ./malloc/malloc.c:4667 ## #13 0x00007ffff7aab3c0 in _int_free (av=0x7ffff7befac0 , p=0x1ec8390, have_lock=0) at ./malloc/malloc.c:4699 ## #14 __GI___libc_free (mem=) at ./malloc/malloc.c:3476 ## #15 0x0000000000000060 in ?? () ## #16 0x0000000001eb9470 in ?? () ## #17 0x00007ffff7befac0 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 ## #18 0x0000000000004040 in ?? () ## #19 0x00007ffff7befac0 in ?? () from /lib/x86_64-linux-gnu/libc.so.6 ## #20 0x0000000000000000 in ?? () unity3d_disable_map32bit() { return 0; } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-beatbuddy.sh0000755000000000000000000000403014471751340014120 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Beatbuddy: Tale of the Guardians # send your bug reports to bugs@dotslashplay.it ### script_version=20250612.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='beatbuddy' GAME_NAME='Beatbuddy: Tale of the Guardians' ARCHIVE_BASE_0_NAME='BeatbuddyLinux1439603370.zip' ARCHIVE_BASE_0_MD5='156d19b327a02ac4a277f6f6ad4e188e' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.0-humble150815' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/beatbuddy' UNITY3D_NAME='Beatbuddy' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Beatbuddy' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTIOn='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-binaries.sh0000755000000000000000000000464214471751340013762 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Binaries # send your bug reports to bugs@dotslashplay.it ### script_version=20250613.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='binaries' GAME_NAME='Binaries' ARCHIVE_BASE_0_NAME='Binaries_Linux_v1.1.0.zip' ARCHIVE_BASE_0_MD5='ed3756af1ebe72560d6e52ab67013f4c' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='1.1.0-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/binaries' UNITY3D_NAME='Binaries' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete Apple archives junk. find . -name '*.rsrc' -delete ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-biped.sh0000755000000000000000000000432114471751340013243 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Biped # send your bug reports to bugs@dotslashplay.it ### script_version=20250629.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='biped' GAME_NAME='Biped' ARCHIVE_BASE_1_NAME='setup_biped_2.6_(81326).exe' ARCHIVE_BASE_1_MD5='8e9189bef236ee081f2daf8343c90a12' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_biped_2.6_(81326)-1.bin' ARCHIVE_BASE_1_PART1_MD5='57f64fb6ad15e1c22395e662b338d2ba' ARCHIVE_BASE_1_SIZE='4307875' ARCHIVE_BASE_1_VERSION='2.6-gog81326' ARCHIVE_BASE_1_URL='https://www.gog.com/game/biped' ARCHIVE_BASE_0_NAME='setup_biped_1.6_(39586).exe' ARCHIVE_BASE_0_MD5='c58ee9791defa88ef1bb92ba3b2f01d2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_biped_1.6_(39586)-1.bin' ARCHIVE_BASE_0_PART1_MD5='48103181d4c54a068db5eec37e10d7e5' ARCHIVE_BASE_0_SIZE='6500000' ARCHIVE_BASE_0_VERSION='1.6-gog39586' UNITY3D_NAME='biped' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/PostmetaGamesLimited/Biped' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-braid.sh0000755000000000000000000000464614471751340013253 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Braid # send your bug reports to bugs@dotslashplay.it ### script_version=20250624.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='braid' GAME_NAME='Braid' ARCHIVE_BASE_1_NAME='gog_braid_2.0.0.3.sh' ARCHIVE_BASE_1_MD5='0d60f92ed8d1c72afb11c217cc907264' ARCHIVE_BASE_1_SIZE='170000' ARCHIVE_BASE_1_VERSION='2015.06.11-gog2.0.0.3' ARCHIVE_BASE_1_URL='https://www.gog.com/game/braid' ARCHIVE_BASE_0_NAME='gog_braid_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='22bac5c37b44916fea3e23092706d55d' ARCHIVE_BASE_0_SIZE='170000' ARCHIVE_BASE_0_VERSION='2015.06.11-gog2.0.0.2' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Braid.bin.x86' CONTENT_GAME_DATA_FILES=' data Icon.png' CONTENT_DOC_DATA_FILES=' licenses *.txt' APP_MAIN_EXE='Braid.bin.x86' APP_MAIN_ICON='Icon.png' ## The game crashes on launch when using the wayland backend of SDL, ## even when using the system-provided build of SDL. APP_MAIN_PRERUN=' # The game crashes on launch when using the wayland backend of SDL. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libCgGL.so libCg.so libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-bubbles-the-cat.sh0000755000000000000000000000557514471751340015135 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Bubbles the Cat # send your bug reports to bugs@dotslashplay.it ### script_version=20250630.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bubbles-the-cat' GAME_NAME='Bubbles the Cat' ARCHIVE_BASE_0_NAME='BubblesTheCat._v1016_Standalone.zip' ARCHIVE_BASE_0_MD5='75c5130b47cd1bb4cf3f9f9d8239ba31' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1016-itch' ARCHIVE_BASE_0_URL='https://teamcatsandbears.itch.io/bubbles-the-cat' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' BubblesTheCat.exe' CONTENT_GAME_DATA_FILES=' data.win' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/BubblesTheCat' APP_MAIN_EXE='BubblesTheCat.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Generate smaller icons from the provided 1024×1024 one icon_source="$(package_path 'PKG_DATA')$(path_icons)/1024x1024/apps/$(game_id).png" icon_destination_512="$(package_path 'PKG_DATA')$(path_icons)/512x512/apps/$(game_id).png" icon_destination_256="$(package_path 'PKG_DATA')$(path_icons)/256x256/apps/$(game_id).png" icon_destination_128="$(package_path 'PKG_DATA')$(path_icons)/128x128/apps/$(game_id).png" icon_destination_64="$(package_path 'PKG_DATA')$(path_icons)/64x64/apps/$(game_id).png" mkdir --parents \ "$(dirname "$icon_destination_512")" \ "$(dirname "$icon_destination_256")" \ "$(dirname "$icon_destination_128")" \ "$(dirname "$icon_destination_64")" ### -filter Point is used to preserve the pixel-art style. convert "$icon_source" -resize 512 -filter Point "$icon_destination_512" convert "$icon_source" -resize 256 -filter Point "$icon_destination_256" convert "$icon_source" -resize 128 -filter Point "$icon_destination_128" convert "$icon_source" -resize 64 -filter Point "$icon_destination_64" # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-candleman.sh0000755000000000000000000000365014471751340014106 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Candleman # send your bug reports to bugs@dotslashplay.it ### script_version=20250905.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='candleman' GAME_NAME='Candleman' ARCHIVE_BASE_0_NAME='setup_candleman_the_complete_journey_1.07_(50980).exe' ARCHIVE_BASE_0_MD5='4b16554e2acc81d44fb7c90e2cae9854' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_candleman_the_complete_journey_1.07_(50980)-1.bin' ARCHIVE_BASE_0_PART1_MD5='b5e19beda13aae27d5aa27256771d6d8' ARCHIVE_BASE_0_SIZE='3400000' ARCHIVE_BASE_0_VERSION='1.07-gog50980' ARCHIVE_BASE_0_URL='https://www.gog.com/game/candleman' UNITY3D_NAME='candleman' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Candleman Games/Candleman' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-capsized.sh0000755000000000000000000000710314471751340013763 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 VA # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Capsized # send your bug reports to bugs@dotslashplay.it ### script_version=20240830.3 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='capsized' GAME_NAME='Capsized' ARCHIVE_BASE_GOG_0_NAME='gog_capsized_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='f516c52b4614d63c3cfa4e1ed43934b8' ARCHIVE_BASE_GOG_0_SIZE='670000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/capsized' ARCHIVE_BASE_HUMBLE_0_NAME='capsized-12212015-bin' ARCHIVE_BASE_HUMBLE_0_MD5='10515ca5f73e38151e17766cba97f3ed' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='650000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble151221' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/capsized' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_LIBS_FILES=' libmojoshader.so libtheoraplay.so' ## The shipped build of OpenAL must be used, to prevent a crash on launch CONTENT_LIBS_FILES="${CONTENT_LIBS_FILES:-} libopenal.so.1" CONTENT_LIBS_LIBS64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_LIBS64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content mono de es fr it Capsized.bmp NePlusUltra.exe FarseerPhysicsXNA.dll FNA.dll FNA.dll.config Lidgren.Network.dll ProjectMercury.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE='NePlusUltra.exe' APP_MAIN_ICON='Capsized.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS_DESCRIPTION='Shipped libraries' PKG_LIBS64_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS32_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libogg.so.0 libpthread.so.0 librt.so.1 libtheoradec.so.1 libtheora.so.0 libvorbis.so.0' PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-cats-are-liquid-series.sh0000755000000000000000000000565414471751340016446 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Cats are Liquid series: # - Cats are Liquid: A Light in the Shadows # - Cats are Liquid: A Better Place # send your bug reports to bugs@dotslashplay.it ### script_version=20250630.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_EPISODE1='cats-are-liquid-1' GAME_NAME_EPISODE1='Cats are Liquid - A Light in the Shadows' GAME_ID_EPISODE2='cats-are-liquid-2' GAME_NAME_EPISODE2='Cats are Liquid - A Better Place' ARCHIVE_BASE_EPISODE1_0_NAME='CatsAreLiquidLinux.zip' ARCHIVE_BASE_EPISODE1_0_MD5='eb01e4f7c44543051e95bc78b777bb5b' ARCHIVE_BASE_EPISODE1_0_SIZE='171981' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0-itch1' ARCHIVE_BASE_EPISODE1_0_URL='https://lastquarterstudios.itch.io/cats-are-liquid-a-light-in-the-shadows' ARCHIVE_BASE_EPISODE2_1_NAME='CaL-ABP-Linux.zip' ARCHIVE_BASE_EPISODE2_1_MD5='b4a50d0bb0c81a6862c1fac196281306' ARCHIVE_BASE_EPISODE2_1_SIZE='315863' ARCHIVE_BASE_EPISODE2_1_VERSION='1.0-itch2' ARCHIVE_BASE_EPISODE2_1_URL='https://lastquarterstudios.itch.io/cats-are-liquid-a-better-place' ARCHIVE_BASE_EPISODE2_0_NAME='CaL-ABP-Linux.zip' ARCHIVE_BASE_EPISODE2_0_MD5='a61524e809870b026dc8a993b177b9b9' ARCHIVE_BASE_EPISODE2_0_SIZE='437281' ARCHIVE_BASE_EPISODE2_0_VERSION='1.0-itch1' UNITY3D_NAME_EPISODE1='CatsAreLiquidLinux' UNITY3D_NAME_EPISODE2='CaL-ABP-Linux' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_EPISODE1='CatsAreLiquidLinux' CONTENT_PATH_DEFAULT_EPISODE2='Linux' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_EPISODE1='32' PKG_BIN_ARCH_EPISODE2='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-celeste.sh0000755000000000000000000000564714471751340013620 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2026 Locynaeh set -o errexit ### # Celeste # send your bug reports to bugs@dotslashplay.it ### script_version=20260514.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='celeste' GAME_NAME='Celeste' ARCHIVE_BASE_2_NAME='celeste-linux.zip' ARCHIVE_BASE_2_MD5='300820953d5799746633f1c84cb6049c' ARCHIVE_BASE_2_SIZE='1176905' ARCHIVE_BASE_2_VERSION='1.4.0.0-itch.2025.02.07' ARCHIVE_BASE_2_URL='https://maddymakesgamesinc.itch.io/celeste' ARCHIVE_BASE_1_NAME='celeste-linux.zip' ARCHIVE_BASE_1_MD5='518ea69d60079109a2575d428eff8a53' ARCHIVE_BASE_1_SIZE='1176905' ARCHIVE_BASE_1_VERSION='1.4.0.0-itch.2021.03.29' ARCHIVE_BASE_0_NAME='celeste-linux.zip' ARCHIVE_BASE_0_MD5='b27c983b95b2a2a35a272b7ecd94cbc2' ARCHIVE_BASE_0_SIZE='1400000' ARCHIVE_BASE_0_VERSION='1.3.1.2-itch' CONTENT_PATH_DEFAULT='.' CONTENT_LIBS_LIBS_PATH='lib64' CONTENT_LIBS_LIBS_FILES=' libfmod.so.10 libfmodstudio.so.10 libfmod_SDL.so libFNA3D.so.0' CONTENT_GAME_MAIN_FILES=' Content Celeste.exe Celeste.exe.config Celeste.png gamecontrollerdb.txt Celeste.Content.dll FNA.dll FNA.dll.config FNA3D.dll' APP_MAIN_EXE='Celeste.exe' APP_MAIN_ICON='Celeste.png' PACKAGES_LIST=' PKG_MAIN PKG_LIBS' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libGL.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS_ARCH='64' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. # Shipped libraries expect an executable stack. game_exec_line() { cat <<- 'EOF' GLIBC_TUNABLES=glibc.rtld.execstack=2 mono Celeste.exe "$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-chronology.sh0000755000000000000000000000475714471751340014360 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Chronology # send your bug reports to bugs@dotslashplay.it ### script_version=20250710.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='chronology' GAME_NAME='Chronology' ARCHIVE_BASE_0_NAME='Chronology Windows 1.0.20.zip' ARCHIVE_BASE_0_MD5='08236874d0553d9953c56ee3472468f2' ARCHIVE_BASE_0_SIZE='240000' ARCHIVE_BASE_0_VERSION='1.0.20-itch1' ARCHIVE_BASE_0_URL='https://bedtimedigitalgames.itch.io/chronology' CONTENT_PATH_DEFAULT='Chronology Windows 1.0.20' CONTENT_GAME_BIN_FILES=' Chronology.exe *.dll' CONTENT_GAME_DATA_FILES=' Content Screengroup.dat' CONTENT_DOC_DATA_FILES=' BuildDate.txt License.txt' ## The game engine expects write access to files under Content. USER_PERSISTENT_DIRECTORIES=' Content' WINE_DLLOVERRIDES_DEFAULT='winemenubuilder.exe,mshtml=' ## The game fails to start if Mono is used instead of .NET. WINE_WINETRICKS_VERBS='dotnet40' ## The game crashes when trying to play if the PE32 OpenAL library is missing. WINE_WINETRICKS_VERBS="$WINE_WINETRICKS_VERBS openal" ## Keyboards input are not registered ## unless the game is run in a virtual desktop. ## (WINE 10.0) WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='Chronology.exe' ## The application type must be set explicitly, ## or it would be wrongly guessed as a Mono one. APP_MAIN_TYPE='wine' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-closure.sh0000755000000000000000000000661214471751340013641 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Closure # send your bug reports to bugs@dotslashplay.it ### script_version=20241009.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='closure' GAME_NAME='Closure' ARCHIVE_BASE_0_NAME='Closure-Linux-1.1-2012-12-28.sh' ARCHIVE_BASE_0_MD5='a7c2f7fe17ff67f376da70611abdce97' ARCHIVE_BASE_0_SIZE='800000' ARCHIVE_BASE_0_VERSION='1.1-humble.2012.12.28' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/closure' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN64_FILES=' Closure.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Closure.bin.x86' CONTENT_GAME_DATA_FILES=' resources Closure.png' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE_BIN64='Closure.bin.x86_64' APP_MAIN_EXE_BIN32='Closure.bin.x86' APP_MAIN_ICON='Closure.png' ## The game crashes on launch when the Wayland backend of SDL is used. APP_MAIN_PRERUN=' # The game crashes on launch when the Wayland backend of SDL is used if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ## The game renders nothing but a black screen when using the SDL1 → SDL2 compatibility wrapper APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-} # The game renders nothing but a black screen when using the SDL1 → SDL2 compatibility wrapper export SDL12COMPAT_OPENGL_SCALING=0 " PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libalut.so.0 libCgGL.so libCg.so libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 librt.so.1 libSDL-1.2.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ARCHIVE_INNER_BIN64_PATH="${PLAYIT_WORKDIR}/gamedata/instarchive_linux_x86_64" ARCHIVE_INNER_BIN64_TYPE='tar.xz' archive_extraction 'ARCHIVE_INNER_BIN64' rm "$(archive_path 'ARCHIVE_INNER_BIN64')" ARCHIVE_INNER_BIN32_PATH="${PLAYIT_WORKDIR}/gamedata/instarchive_linux_x86" ARCHIVE_INNER_BIN32_TYPE='tar.xz' archive_extraction 'ARCHIVE_INNER_BIN32' rm "$(archive_path 'ARCHIVE_INNER_BIN32')" ARCHIVE_INNER_DATA_PATH="${PLAYIT_WORKDIR}/gamedata/instarchive_all" ARCHIVE_INNER_DATA_TYPE='tar.xz' archive_extraction 'ARCHIVE_INNER_DATA' rm "$(archive_path 'ARCHIVE_INNER_DATA')" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-creaks.sh0000755000000000000000000000345714471751340013441 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Creaks # send your bug reports to bugs@dotslashplay.it ### script_version=20240820.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='creaks' GAME_NAME='Creaks' ARCHIVE_BASE_0_NAME='setup_creaks_1.0.9_(46052).exe' ARCHIVE_BASE_0_MD5='53c45d5337970ae4f3cd33ac846a4b34' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_creaks_1.0.9_(46052)-1.bin' ARCHIVE_BASE_0_PART1_MD5='a6dd1d513945b49753918f7031936a1d' ARCHIVE_BASE_0_SIZE='4300000' ARCHIVE_BASE_0_VERSION='1.0.9-gog46052' ARCHIVE_BASE_0_URL='https://www.gog.com/game/creaks' UNITY3D_NAME='creaks' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Amanita Design/Creaks' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-dark-echo.sh0000755000000000000000000000400014471751340014007 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Dark Echo # send your bug reports to bugs@dotslashplay.it ### script_version=20260522.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='dark-echo' GAME_NAME='Dark Echo' ARCHIVE_BASE_0_NAME='DarkEcho_Linux.zip' ARCHIVE_BASE_0_MD5='b629b5c47729d8213f89f92ae28d6076' ARCHIVE_BASE_0_SIZE='113641' ARCHIVE_BASE_0_VERSION='1.0-humble' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/dark-echo' UNITY3D_NAME='DarkEcho' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of unused 32-bit Mono libraries. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-dead-cells-expansions.sh0000755000000000000000000000501414471751340016342 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Hoël Bézier # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Dead Cells expansions: # - Rise of the Giant # - The Bad Seed # send your bug reports to bugs@dotslashplay.it ### script_version=20251210.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='dead-cells' GAME_NAME='Dead Cells' EXPANSION_ID_GIANT='rise-of-the-giant' EXPANSION_NAME_GIANT='Rise of the Giant' EXPANSION_ID_SEED='the-bad-seed' EXPANSION_NAME_SEED='The Bad Seed' ARCHIVE_BASE_GIANT_1_NAME='dead_cells_rise_of_the_giant_1_9_1_39495.sh' ARCHIVE_BASE_GIANT_1_MD5='c1d123c88c3e1f85a11ae9d090f626b0' ARCHIVE_BASE_GIANT_1_SIZE='1100' ARCHIVE_BASE_GIANT_1_VERSION='1.9.1-gog39495' ARCHIVE_BASE_GIANT_1_URL='https://www.gog.com/game/dead_cells_rise_of_the_giant' ARCHIVE_BASE_GIANT_0_NAME='dead_cells_rise_of_the_giant_1_8_0_37766.sh' ARCHIVE_BASE_GIANT_0_MD5='855ef837a9766e5b30ee34d212e5b16b' ARCHIVE_BASE_GIANT_0_SIZE='1100' ARCHIVE_BASE_GIANT_0_VERSION='1.8.0-gog37766' ARCHIVE_BASE_SEED_1_NAME='dead_cells_the_bad_seed_1_9_1_39495.sh' ARCHIVE_BASE_SEED_1_MD5='745aa46480a45d4bf4904361a4d06110' ARCHIVE_BASE_SEED_1_SIZE='1100' ARCHIVE_BASE_SEED_1_VERSION='1.9.1-gog39495' ARCHIVE_BASE_SEED_1_URL='https://www.gog.com/game/dead_cells_the_bad_seed' ARCHIVE_BASE_SEED_0_NAME='dead_cells_the_bad_seed_1_8_0_37766.sh' ARCHIVE_BASE_SEED_0_MD5='3ab8b8c71c1a9079be384a7788592d83' ARCHIVE_BASE_SEED_0_SIZE='1100' ARCHIVE_BASE_SEED_0_VERSION='1.8.0-gog37766' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-dead-cells.sh0000755000000000000000000000425114471751340014157 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Hoël Bézier # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Dead Cells # send your bug reports to bugs@dotslashplay.it ### script_version=20240615.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='dead-cells' GAME_NAME='Dead Cells' ARCHIVE_BASE_1_NAME='dead_cells_1_9_1_39495.sh' ARCHIVE_BASE_1_MD5='d39f39354e1546e9fb940e7738992b16' ARCHIVE_BASE_1_SIZE='690000' ARCHIVE_BASE_1_VERSION='1.9.1-gog39495' ARCHIVE_BASE_1_URL='https://www.gog.com/game/dead_cells' ARCHIVE_BASE_0_NAME='dead_cells_1_8_0_37766.sh' ARCHIVE_BASE_0_MD5='93a03894720c4e232566300c61ee153b' ARCHIVE_BASE_0_SIZE='670000' ARCHIVE_BASE_0_VERSION='1.8.0-gog37766' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libhl.so' CONTENT_GAME_BIN_FILES=' deadcells *.hdll' CONTENT_GAME_DATA_FILES=' hlboot.dat res.pak' USER_PERSISTENT_DIRECTORIES=' logs save' APP_MAIN_EXE='deadcells' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libmbedtls.so.12 libopenal.so.1 libpng16.so.16 libSDL2-2.0.so.0 libturbojpeg.so.0 libuv.so.1 libvorbisfile.so.3' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-deadlight.sh0000755000000000000000000001425214471751340014111 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Deadlight # send your bug reports to bugs@dotslashplay.it ### script_version=20260514.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='deadlight' GAME_NAME='Deadlight' ARCHIVE_BASE_1_NAME='setup_deadlight_directors_cut_gog-2(cs)_(19167).exe' ARCHIVE_BASE_1_MD5='70b8df3f8162cc0a9a43e531b6a723c5' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_deadlight_directors_cut_gog-2(cs)_(19167)-1.bin' ARCHIVE_BASE_1_PART1_MD5='6392568bcc7c4a4613e09cdbb40afafd' ARCHIVE_BASE_1_PART2_NAME='setup_deadlight_directors_cut_gog-2(cs)_(19167)-2.bin' ARCHIVE_BASE_1_PART2_MD5='fa080fbdd39369969be4ac54c2aa7bd2' ARCHIVE_BASE_1_SIZE='5042824' ARCHIVE_BASE_1_VERSION='1.0-gog19167' ARCHIVE_BASE_1_URL='https://www.gog.com/game/deadlight_directors_cut' ARCHIVE_BASE_0_NAME='setup_deadlight_directors_cut_2.0.0.2.exe' ARCHIVE_BASE_0_MD5='1a753e4f9a209de5bd916ac98b88a9b7' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_deadlight_directors_cut_2.0.0.2-1.bin' ARCHIVE_BASE_0_PART1_MD5='246b4684d801ea84b6490e01bcf5c659' ARCHIVE_BASE_0_PART1_TYPE='rar' ARCHIVE_BASE_0_PART2_NAME='setup_deadlight_directors_cut_2.0.0.2-2.bin' ARCHIVE_BASE_0_PART2_MD5='3cb7cdd9fea50a66d7f06a6b2d0426c6' ARCHIVE_BASE_0_SIZE='5100000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.2' GAME_ENGINE='unrealengine3' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='game' # TODO: Drop unused libraries. CONTENT_LIBS_BIN_FILES=' Binaries/Win64/APEX_ClothingCHECKED_x64.dll Binaries/Win64/APEX_ClothingGPUCHECKED_x64.dll Binaries/Win64/APEX_Clothing_LegacyCHECKED_x64.dll Binaries/Win64/APEX_Common_LegacyCHECKED_x64.dll Binaries/Win64/APEX_DestructibleCHECKED_x64.dll Binaries/Win64/APEX_Destructible_LegacyCHECKED_x64.dll Binaries/Win64/ApexFrameworkCHECKED_x64.dll Binaries/Win64/APEX_Framework_LegacyCHECKED_x64.dll Binaries/Win64/atc_api.dll Binaries/Win64/bink2w64.dll Binaries/Win64/cudart64_30_9.dll Binaries/Win64/cudart64_41_22.dll Binaries/Win64/cudart64_42_9.dll Binaries/Win64/dbghelp.dll Binaries/Win64/EasyHook64.dll Binaries/Win64/FxGraphLayout_x64.dll Binaries/Win64/GRBCHECKED_1_1_api2_x64.dll Binaries/Win64/libogg_64.dll Binaries/Win64/libresample_x64.dll Binaries/Win64/libvorbis_64.dll Binaries/Win64/libvorbisfile_64.dll Binaries/Win64/msvcp100d.dll Binaries/Win64/msvcp100.dll Binaries/Win64/msvcp110d.dll Binaries/Win64/msvcp110.dll Binaries/Win64/msvcr100d.dll Binaries/Win64/msvcr100.dll Binaries/Win64/msvcr110d.dll Binaries/Win64/msvcr110.dll Binaries/Win64/nvtt_64.dll Binaries/Win64/NxCharacter64.dll Binaries/Win64/PhysXCooking64.dll Binaries/Win64/PhysXCore64.dll Binaries/Win64/PhysXLoader64CHECKED.dll Binaries/Win64/PhysXLoader64.dll Binaries/Win64/substance_linker.dll Binaries/Win64/substance_sse2_blend.dll Binaries/Win64/tbbmalloc_debug.dll Binaries/Win64/tbbmalloc.dll Binaries/Win64/tm2serverlib64.dll Binaries/Win64/wxmsw28u_adv_vc_custom_64.dll Binaries/Win64/wxmsw28u_aui_vc_custom_64.dll Binaries/Win64/wxmsw28u_core_vc_custom_64.dll Binaries/Win64/wxmsw28ud_adv_vc_custom_64.dll Binaries/Win64/wxmsw28ud_aui_vc_custom_64.dll Binaries/Win64/wxmsw28ud_core_vc_custom_64.dll Binaries/Win64/wxmsw28ud_html_vc_custom_64.dll Binaries/Win64/wxmsw28ud_richtext_vc_custom_64.dll Binaries/Win64/wxmsw28ud_vc_custom_64.dll Binaries/Win64/wxmsw28ud_xml_vc_custom_64.dll Binaries/Win64/wxmsw28ud_xrc_vc_custom_64.dll Binaries/Win64/wxmsw28u_html_vc_custom_64.dll Binaries/Win64/wxmsw28u_richtext_vc_custom_64.dll Binaries/Win64/wxmsw28u_vc_custom_64.dll Binaries/Win64/wxmsw28u_xml_vc_custom_64.dll Binaries/Win64/wxmsw28u_xrc_vc_custom_64.dll' # TODO: Check if the Steam library is required. CONTENT_LIBS0_BIN_FILES=' Binaries/Win64/steam_api64.dll' # TODO: Check if the Galaxy libraries are required. CONTENT_LIBS0_BIN_FILES=' Binaries/Win64/Galaxy64.dll Binaries/Win64/GalaxyPeer64.dll' # TODO: Check if the telemetry libraries are required. CONTENT_LIBS2_BIN_FILES=' Binaries/Win64/telemetry64.dll Binaries/Win64/telemetry64c.dll' CONTENT_GAME_BIN_FILES=' Engine Binaries/Win64/LOTDGame.exe' # The following .dll files are Mono/.Net assemblies. CONTENT_GAME0_BIN_FILES=' Binaries/Win64/Aga.Controls.dll Binaries/Win64/AgentInterface.dll Binaries/Win64/DebuggerInterface.dll Binaries/Win64/ICSharpCode.TextEditor.dll Binaries/Win64/p4dn.dll Binaries/Win64/UnrealDebugger.dll Binaries/Win64/WeifenLuo.WinFormsUI.Docking.dll Binaries/Win64/WindowsTools_x64.dll' CONTENT_GAME_DATA_FILES=' LOTDGame' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/My Games/UnrealEngine3/LOTDGame' WINE_WINEPREFIX_TWEAKS='mono' APP_MAIN_EXE='Binaries/Win64/LOTDGame.exe' # The application type must be set explicitly, # or it would be wrongly guessed as a Mono one. APP_MAIN_TYPE='wine' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # Install shipped libraries. wineprefix_init_custom() { cat <<- EOF # Install shipped libraries. PATH_LIBRARIES_SYSTEM='$(path_libraries)' EOF cat <<- 'EOF' find "$PATH_LIBRARIES_SYSTEM" -iname '*.dll' | while read -r dll_source; do dll_destination="${PATH_PREFIX}${dll_source#"${PATH_LIBRARIES_SYSTEM}"}" mkdir --parents "$(dirname "$dll_destination")" ln --symbolic --force "$dll_source" "$dll_destination" done EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-disney-classics.sh0000755000000000000000000000560414471751340015262 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Disney 1994 games: # - Aladdin # - The Jungle Book # - The Lion King # send your bug reports to bugs@dotslashplay.it ### script_version=20260523.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_ALADDIN='aladdin' GAME_NAME_ALADDIN='Aladdin' GAME_ID_JUNGLE='the-jungle-book' GAME_NAME_JUNGLE='The Jungle Book' GAME_ID_LION='the-lion-king' GAME_NAME_LION='The Lion King' # The following installers used to be sold by gog.com, # but they have been retired in favour of a Windows-only collection. ARCHIVE_BASE_ALADDIN_0_NAME='gog_disney_s_aladdin_2.0.0.2.sh' ARCHIVE_BASE_ALADDIN_0_MD5='9dd6d84c2276809c5630320335e3415b' ARCHIVE_BASE_ALADDIN_0_SIZE='18000' ARCHIVE_BASE_ALADDIN_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_JUNGLE_0_NAME='gog_disney_s_the_jungle_book_2.0.0.2.sh' ARCHIVE_BASE_JUNGLE_0_MD5='bcb57f4ff5cb1662ba3d4a9e34f263ad' ARCHIVE_BASE_JUNGLE_0_SIZE='15000' ARCHIVE_BASE_JUNGLE_0_VERSION='1.0-gog2.0.0.2' ARCHIVE_BASE_LION_0_NAME='gog_the_lion_king_2.0.0.2.sh' ARCHIVE_BASE_LION_0_MD5='3b4f1118785e1f1cc769ae41379b7940' ARCHIVE_BASE_LION_0_SIZE='16000' ARCHIVE_BASE_LION_0_VERSION='1.0-gog2.0.0.2' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES_ALADDIN=' LEVEL.AMF WNW.AMF SOUND.CFG BBC.CHR ALADDIN.EXE SETSND.EXE *.DAT *.FLR *.JAM *.OBT *.PAC *.RAW *.RGB *.SPE *.XIS *.XUN' CONTENT_GAME_MAIN_FILES_JUNGLE=' JUNGLE.CFG JUNGLE.EPF INSTALL.EXE JUNGLE.EXE JUNGLEW.EXE' CONTENT_GAME_MAIN_FILES_LION=' LIONKING.CFG LIONKING.EPF INSTALL.EXE LIONKING.EXE' CONTENT_DOC_MAIN_FILES=' README' CONTENT_DOC0_MAIN_PATH='data/noarch/docs' CONTENT_DOC0_MAIN_FILES=' Manual.pdf' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE_ALADDIN='ALADDIN.EXE' APP_MAIN_EXE_JUNGLE='JUNGLE.EXE' APP_MAIN_EXE_LION='LIONKING.EXE' APP_MAIN_ICON='../support/icon.png' # Aladdin - Ensure good performances. APP_MAIN_DOSBOX_PRERUN_ALADDIN=' config -set cpu cycles=max' # The Lion King - Prevent a demo loop. APP_MAIN_DOSBOX_PRERUN_LION=' config -set cpu cycles=fixed 15000' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-dreaming-sarah.sh0000755000000000000000000000561314471751340015047 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Dreaming Sarah # send your bug reports to bugs@dotslashplay.it ### script_version=20250629.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='dreaming-sarah' GAME_NAME='Dreaming Sarah' ARCHIVE_BASE_32BIT_0_NAME='DreamingSarah-linux32_1.3.zip' ARCHIVE_BASE_32BIT_0_MD5='73682a545e979ad9a2b6123222ddb517' ARCHIVE_BASE_32BIT_0_SIZE='200000' ARCHIVE_BASE_32BIT_0_VERSION='1.3-humble1' ARCHIVE_BASE_32BIT_0_URL='https://www.humblebundle.com/store/dreaming-sarah' ARCHIVE_BASE_64BIT_0_NAME='DreamingSarah-linux64_1.3.zip' ARCHIVE_BASE_64BIT_0_MD5='a68f3956eb09ea7b34caa20f6e89b60c' ARCHIVE_BASE_64BIT_0_SIZE='200000' ARCHIVE_BASE_64BIT_0_VERSION='1.3-humble1' ARCHIVE_BASE_64BIT_0_URL='https://www.humblebundle.com/store/dreaming-sarah' CONTENT_PATH_DEFAULT_32BIT='DreamingSarah-linux32' CONTENT_PATH_DEFAULT_64BIT='DreamingSarah-linux64' CONTENT_GAME_BIN_FILES=' nw nacl_helper*' CONTENT_LIBS_BIN_RELATIVE_PATH='lib' CONTENT_LIBS_BIN_FILES=' libffmpeg.so libnode.so libnw.so' CONTENT_GAME_DATA_FILES=' locales *.bin *.dat *.nw *.pak' APP_MAIN_EXE='nw' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_32BIT='32' PKG_BIN_ARCH_64BIT='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libatk-1.0.so.0 libcairo.so.2 libc.so.6 libcups.so.2 libdbus-1.so.3 libdl.so.2 libexpat.so.1 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgconf-2.so.4 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libnspr4.so libnss3.so libnssutil3.so libpango-1.0.so.0 libpangocairo-1.0.so.0 libpthread.so.0 librt.so.1 libsmime3.so libstdc++.so.6 libX11.so.6 libXcomposite.so.1 libXcursor.so.1 libXdamage.so.1 libXext.so.6 libXfixes.so.3 libXi.so.6 libXrandr.so.2 libXrender.so.1 libXss.so.1 libXtst.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-dustforce.sh0000755000000000000000000000667214471751340014171 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Dustforce DX # send your bug reports to bugs@dotslashplay.it ### script_version=20241218.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='dustforce' GAME_NAME='Dustforce DX' ARCHIVE_BASE_HUMBLE_0_NAME='Dustforce-Linux-2014-12-22.sh' ARCHIVE_BASE_HUMBLE_0_MD5='e2fa7efd5b9ec64fc453f32480f63ad4' ARCHIVE_BASE_HUMBLE_0_SIZE='409003' ARCHIVE_BASE_HUMBLE_0_VERSION='2024.12.22-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/dustforce-dx' ARCHIVE_BASE_GOG_0_NAME='gog_dustforce_dx_2.2.0.5.sh' ARCHIVE_BASE_GOG_0_MD5='5423718cf31f2602c9d0b30b79d1f409' ARCHIVE_BASE_GOG_0_SIZE='409517' ARCHIVE_BASE_GOG_0_VERSION='2014.12.22-gog2.2.0.5' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/dustforce_dx' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libcurl.so.3' CONTENT_LIBS_BIN64_RELATIVE_PATH_HUMBLE='x86_64/lib64' CONTENT_LIBS_BIN64_RELATIVE_PATH_GOG='lib64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH_HUMBLE='x86/lib' CONTENT_LIBS_BIN32_RELATIVE_PATH_GOG='lib' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN64_FILES=' Dustforce.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH_HUMBLE='x86' CONTENT_GAME_BIN32_FILES=' Dustforce.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES=' content Dustforce.png' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_FILES=' Linux.README ReadMe.txt' APP_MAIN_EXE_BIN64='Dustforce.bin.x86_64' APP_MAIN_EXE_BIN32='Dustforce.bin.x86' APP_MAIN_ICON_HUMBLE='noarch/Dustforce.png' APP_MAIN_ICON_GOG='Dustforce.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" ## libidn.so.11 is required by the shipped libcurl.so.3 library PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libidn.so.11 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-earthworm-jim-1.sh0000755000000000000000000000366014471751340015110 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Earthworm Jim # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='earthworm-jim-1' GAME_NAME='Earthworm Jim' ARCHIVE_BASE_0_NAME='earthworm_jim_en_1_0_16595.sh' ARCHIVE_BASE_0_MD5='87b487f85654763347433dc0952b0118' ARCHIVE_BASE_0_SIZE='720000' ARCHIVE_BASE_0_VERSION='1.0-gog16595' ARCHIVE_BASE_0_URL='https://www.gog.com/game/earthworm_jim_1_2' CONTENT_PATH_DEFAULT='data/noarch/data' CONTENT_GAME_MAIN_FILES=' *.cfg *.dat *.exe *.gog *.hlp *.ico *.id *.inst' CONTENT_DOC_MAIN_FILES=' readme.txt' DOSBOX_DISK_IMAGE_PATH='ewj1.inst' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE='ewj1.exe' APP_MAIN_OPTIONS='320x224' APP_MAIN_ICON='../support/icon.png' ## convmv is used to convert file paths to lower case. REQUIREMENTS_LIST=' convmv' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Convert all file paths to lower case. tolower "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Include game data. content_inclusion_icons content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-element4l.sh0000755000000000000000000000345614471751340014061 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Element4l # send your bug reports to bugs@dotslashplay.it ### script_version=20240528.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='element4l' GAME_NAME='Element4l' ## This DRM-free archive is no longer available from playism.com, ## as their store turned into yet another Steam keys reseller. ARCHIVE_BASE_0_NAME='Element4l-WIN-1.2.3.zip' ARCHIVE_BASE_0_MD5='04f761ddf4e9e9b14cad67ae32c1598e' ARCHIVE_BASE_0_SIZE='320000' ARCHIVE_BASE_0_VERSION='1.2.3-playism' UNITY3D_NAME='element4l' CONTENT_PATH_DEFAULT='Update-1.2.3-WIN' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\I-Illusions\element4l' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-elephantasy.sh0000755000000000000000000000445414471751340014504 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Elephantasy # send your bug reports to bugs@dotslashplay.it ### script_version=20250319.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='elephantasy' GAME_NAME='Elephantasy' ARCHIVE_BASE_0_NAME='Elephantasy Release Build_Itch.zip' ARCHIVE_BASE_0_MD5='d0a7deaccf9b5fbbd3f3c879adb61a6a' ARCHIVE_BASE_0_SIZE='35000' ARCHIVE_BASE_0_VERSION='1.6-itch.2021.04.24' ARCHIVE_BASE_0_URL='https://linker.itch.io/elephantasy' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' d3dx9_43.dll elephant.exe options.ini' CONTENT_GAME_DATA_FILES=' data.win' CONTENT_DOC_DATA_FILES=' README.txt' WINE_PERSISTENT_DIRECTORIES=' userdata:users/${USER}/Local Settings/Application Data/Elephant' APP_MAIN_EXE='elephant.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # The .zip archive contains a .exe file, # that is actually a cabinet archive. ARCHIVE_INNER_TYPE='cabinet' REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} cabextract" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ## The .zip archive contains a .exe file, ## that is actually a cabinet archive. ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Elephantasy.exe" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-escape-goat-series.sh0000755000000000000000000000653314471751340015647 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Escape Goat series: # - Escape Goat 1 # - Escape Goat 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20240728.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID_EPISODE1='escape-goat-1' GAME_ID_EPISODE2='escape-goat-2' GAME_NAME_EPISODE1='Escape Goat' GAME_NAME_EPISODE2='Escape Goat 2' # Archives ## Escape Goat ARCHIVE_BASE_EPISODE1_0_NAME='gog_escape_goat_2.0.0.8.sh' ARCHIVE_BASE_EPISODE1_0_MD5='772eda5c48d59b7528a9d85b3f1f84e3' ARCHIVE_BASE_EPISODE1_0_SIZE='110000' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0.6-gog2.0.0.8' ARCHIVE_BASE_EPISODE1_0_URL='https://www.gog.com/game/escape_goat' ## Escapt Goat 2 ARCHIVE_BASE_EPISODE2_0_NAME='gog_escape_goat_2_2.0.0.11.sh' ARCHIVE_BASE_EPISODE2_0_MD5='50e77abfe8737c6d0e1e37e8ad2460cc' ARCHIVE_BASE_EPISODE2_0_SIZE='260000' ARCHIVE_BASE_EPISODE2_0_VERSION='1.1.0-gog2.0.0.11' ARCHIVE_BASE_EPISODE2_0_URL='https://www.gog.com/game/escape_goat_2' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES_EPISODE1=' Content fr EscapeGoat.exe Escape Goat.bmp Common.dll Lidgren.Network.dll MonoGame.Framework.dll Physics.dll SDL2#.dll SDL2#.dll.config' CONTENT_GAME_MAIN_FILES_EPISODE2=' Content fr EscapeGoat2.exe Escape Goat 2.bmp Common.dll EG2.ICSharpCode.SharpZipLib.dll EG2.Newtonsoft.Json.dll EscapeGoat2.resources.dll Illuminant.dll MonoGame.Framework.dll Physics.dll SDL2-CS.dll SDL2-CS.dll.config Squared.*.dll' CONTENT_DOC_MAIN_FILES=' Linux.README ReadMe.txt' APP_MAIN_EXE_EPISODE1='EscapeGoat.exe' APP_MAIN_EXE_EPISODE2='EscapeGoat2.exe' APP_MAIN_ICON_EPISODE1='Escape Goat.bmp' APP_MAIN_ICON_EPISODE2='Escape Goat 2.bmp' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1 libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES_EPISODE1=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES_EPISODE2=' mscorlib.dll I18N.dll I18N.West.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll' ## Ensure easy upgrades from packages generated from pre-20240603.1 game scripts. PKG_MAIN_PROVIDES_EPISODE1="${PKG_MAIN_PROVIDES_EPISODE1:-} escape-goat escapt-goat-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-evans-remains.sh0000755000000000000000000000571014471751340014733 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Evan's Remains # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='evans-remains' GAME_NAME='Evan’s Remains' ARCHIVE_BASE_0_NAME='setup_evans_remains_1.0_(41967).exe' ARCHIVE_BASE_0_MD5='a91b5a8801daa0befc00e581e28d676a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='180000' ARCHIVE_BASE_0_VERSION='3.3.3-gog41967' ARCHIVE_BASE_0_URL='https://www.gog.com/game/evans_remains' CONTENT_PATH_DEFAULT='.' CONTENT_FONTS_DATA_FILES=' basis33.ttf jf-dot-ayu18.ttf koharufont.ttf unifont-13.0.01.ttf' CONTENT_GAME_BIN_FILES=' evansremains.exe options.ini' CONTENT_GAME_DATA_FILES=' data.win *.csv' CONTENT_DOC_DATA_FILES=' license.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/Evan_v_3_3_3' APP_MAIN_EXE='evansremains.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Work around the shipped icon not using a square ratio REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} convert" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Work around the shipped icon not using a square ratio icon_source_png='tmp/evansremains.exe_14_152_2057.png' icon_source_png_cropped='tmp/evansremains.exe_14_152_2057_cropped.png' icon_converted_128='evansremains_128.png' icon_converted_192='evansremains_192.png' icon_extract_png_from_file 'APP_MAIN_ICON' 'tmp' convert "$icon_source_png" -crop 149x149+1x0 "$icon_source_png_cropped" convert "$icon_source_png_cropped" -resize 128x128 "$icon_converted_128" convert "$icon_source_png_cropped" -resize 192x192 "$icon_converted_192" rm --recursive 'tmp' ) # Include game data ## Work around the shipped icon not using a square ratio. APP_MAIN_ICON_128='evansremains_128.png' APP_MAIN_ICON_192='evansremains_192.png' APP_MAIN_ICONS_LIST=' APP_MAIN_ICON_128 APP_MAIN_ICON_192' content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-feist.sh0000755000000000000000000000573614471751340013305 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Feist # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='feist' GAME_NAME='Feist' ARCHIVE_BASE_0_NAME='feist_en_1_3_0_22450.sh' ARCHIVE_BASE_0_MD5='f9561b4faddb9789a5c97833af935d09' ARCHIVE_BASE_0_SIZE='186520' ARCHIVE_BASE_0_VERSION='1.3.0-gog22450' ARCHIVE_BASE_0_URL='https://www.gog.com/game/feist' ARCHIVE_BASE_MULTIARCH_0_NAME='gog_feist_2.4.0.7.sh' ARCHIVE_BASE_MULTIARCH_0_MD5='ce0b128c23defc946535ec180dcef121' ARCHIVE_BASE_MULTIARCH_0_SIZE='459990' ARCHIVE_BASE_MULTIARCH_0_VERSION='1.1.2-gog2.4.0.7' UNITY3D_NAME='Feist' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_DATA' PACKAGES_LIST_MULTIARCH=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_MUTLIARCH=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES_MUTLIARCH="$PKG_BIN_DEPENDENCIES_LIBRARIES_MUTLIARCH" PKG_BIN32_DEPENDENCIES_LIBRARIES_MUTLIARCH="$PKG_BIN_DEPENDENCIES_LIBRARIES_MUTLIARCH" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' case "$(current_archive)" in ('ARCHIVE_BASE_MULTIARCH_'*) launchers_generation 'PKG_BIN32' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-fez.sh0000755000000000000000000000555114471751340012752 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Fez # send your bug reports to bugs@dotslashplay.it ### script_version=20240830.2 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='fez' GAME_NAME='Fez' ARCHIVE_BASE_0_NAME='fez-11282016-bin' ARCHIVE_BASE_0_MD5='333d2e5f55adbd251b09e01d4da213c6' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_0_SIZE='440000' ARCHIVE_BASE_0_VERSION='1.12-humble161128' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/fez' CONTENT_PATH_DEFAULT='data' ## Include shipped libraries that can not be replaced by system ones CONTENT_LIBS_FILES=' libmojoshader.so' CONTENT_LIBS_LIBS64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' Content monoconfig FEZ.bmp Common.dll ContentSerialization.dll EasyStorage.dll FezEngine.dll FNA.dll FNA.dll.config SimpleDefinitionLanguage.dll XnaWordWrapCore.dll FEZ.exe gamecontrollerdb.txt' CONTENT_DOC_MAIN_FILES=' Linux.README Changelog.txt README.txt' APP_MAIN_EXE='FEZ.exe' APP_MAIN_ICON='FEZ.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libogg.so.0 libopenal.so.1 libSDL2-2.0.so.0 libvorbis.so.0 libvorbisfile.so.3' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.IO.Compression.dll System.IO.Compression.FileSystem.dll System.Security.dll System.Xml.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS_DESCRIPTION='Shipped libraries' PKG_LIBS64_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS32_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-flat-kingdom.sh0000755000000000000000000000332514471751340014537 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Flat Kingdom # send your bug reports to bugs@dotslashplay.it ### script_version=20240808.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='flat-kingdom' GAME_NAME='Flat Kingdom' ARCHIVE_BASE_0_NAME='Flat Kingdom PC.zip' ARCHIVE_BASE_0_MD5='2b824a3f57dac2bda8d9b60efcc85ee7' ARCHIVE_BASE_0_SIZE='4400000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://gamesstarter.itch.io/flatkingdom' UNITY3D_NAME='Flat kingdom rework' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Fat Panda/Flat Kingdom' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-forgotton-anne.sh0000755000000000000000000000432014471751340015117 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Forgotton Anne # send your bug reports to bugs@dotslashplay.it ### script_version=20250627.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='forgotton-anne' GAME_NAME='Forgotton Anne' ARCHIVE_BASE_0_NAME='setup_forgotton_anne_5.5.3_(29552).exe' ARCHIVE_BASE_0_MD5='2f6b17e78651f6ccc9070705b879a6ae' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_forgotton_anne_5.5.3_(29552)-1.bin' ARCHIVE_BASE_0_PART1_MD5='8f6e836ff3519e4759af8c51ed89655d' ARCHIVE_BASE_0_PART2_NAME='setup_forgotton_anne_5.5.3_(29552)-2.bin' ARCHIVE_BASE_0_PART2_MD5='728970d510b82fc1d9d336c9e26fb8c3' ARCHIVE_BASE_0_SIZE='9500000' ARCHIVE_BASE_0_VERSION='5.5.3-gog29552' ARCHIVE_BASE_0_URL='https://www.gog.com/game/forgotton_anne' UNITY3D_NAME='forgottonanne' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_DATA_PATH='app' CONTENT_GAME0_DATA_FILES=" ${UNITY3D_NAME}_data" WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/GOG.com/Galaxy/Applications/51445449926814491' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-fossil-echo.sh0000755000000000000000000000450114471751340014373 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Fossil Echo # send your bug reports to bugs@dotslashplay.it ### script_version=20240808.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='fossil-echo' GAME_NAME='Fossil Echo' ARCHIVE_BASE_0_NAME='FossilEcho_setup.zip' ARCHIVE_BASE_0_MD5='079e62f826016c1d3edd35e8fe40bb3a' ARCHIVE_BASE_0_SIZE='2900000' ARCHIVE_BASE_0_VERSION='1.0-itch1' ARCHIVE_BASE_0_URL='https://awaceb.itch.io/fossilecho' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' datatypes.dll fmod.dll fmodstudio.dll fossilecho.exe' CONTENT_GAME_DATA_FILES=' content data level media' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/SavedGames/fossilecho' ## Install the Microsoft XNA 4.0 runtime WINE_WINETRICKS_VERBS='xna40' ## Do not disable the mscoree library, as it is required by the Microsoft XNA 4.0 runtime WINE_DLLOVERRIDES_DEFAULT='winemenubuilder.exe,mshtml=' USER_PERSISTENT_DIRECTORIES=' data level' APP_MAIN_EXE='fossilecho.exe' ## Handle this binary with WINE, not with Mono APP_MAIN_TYPE='wine' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/FossilEcho_setup.exe" ARCHIVE_INNER_TYPE='innosetup' archive_extraction 'ARCHIVE_INNER' rm --force "$(archive_path 'ARCHIVE_INNER')" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-fotonica.sh0000755000000000000000000000520214471751340013761 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Fotonica # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='fotonica' GAME_NAME='Fotonica' ARCHIVE_BASE_0_NAME='FOTONICA_LINUX.tar.gz' ARCHIVE_BASE_0_MD5='33b8918b21c03ae0289e7050c661b534' ARCHIVE_BASE_0_SIZE='293117' ARCHIVE_BASE_0_VERSION='1.0-humble' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/fotonica' UNITY3D_NAME='FOTONICA' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='FOTONICA' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not disable the MAP_32BIT flag, as it would lead to a crash on launch unity3d_disable_map32bit() { return 0 ; } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-four-sided-fantasy.sh0000755000000000000000000000340014471751340015661 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Four Sided Fantasy # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='four-sided-fantasy' GAME_NAME='Four Sided Fantasy' ARCHIVE_BASE_0_NAME='FourSidedFantasy.zip' ARCHIVE_BASE_0_MD5='3e6b74bb365bd75cf79f089ff9ddc619' ARCHIVE_BASE_0_SIZE='660000' ARCHIVE_BASE_0_VERSION='1.0-itch.2016.11.14' ARCHIVE_BASE_0_URL='https://serenity-forge.itch.io/four-sided-fantasy' UNITY3D_NAME='FourSidedFantasy' CONTENT_PATH_DEFAULT='.' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\AppDataLow\Software\LudoLand\Four Sided Fantasy' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-giana-sisters-series.sh0000755000000000000000000001353214471751340016225 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Giana Sisters series: # - Giana Sisters: Twisted Dreams # - Giana Sisters: Rise of the Owlverlord # send your bug reports to bugs@dotslashplay.it ### script_version=20250630.4 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_DREAMS='giana-sisters-twisted-dreams' GAME_NAME_DREAMS='Giana Sisters: Twisted Dreams' GAME_ID_OWL='giana-sisters-rise-of-the-owlverlord' GAME_NAME_OWL='Giana Sisters: Rise of the Owlverlord' # Archives ## Giana Sisters: Twisted Dreams ARCHIVE_BASE_DREAMS_1_NAME='setup_giana_sisters_twisted_dreams_1.2.1_(19142).exe' ARCHIVE_BASE_DREAMS_1_MD5='e5605f4890984375192bd37545e51ff8' ARCHIVE_BASE_DREAMS_1_TYPE='innosetup' ARCHIVE_BASE_DREAMS_1_SIZE='2800000' ARCHIVE_BASE_DREAMS_1_VERSION='1.2.1-gog19142' ARCHIVE_BASE_DREAMS_1_URL='https://www.gog.com/game/giana_sisters_twisted_dreams' ARCHIVE_BASE_DREAMS_0_NAME='setup_giana_sisters_twisted_dreams_2.2.0.16.exe' ARCHIVE_BASE_DREAMS_0_MD5='31b2a0431cfd764198834faec314f0b2' ARCHIVE_BASE_DREAMS_0_TYPE='innosetup' ARCHIVE_BASE_DREAMS_0_SIZE='2900000' ARCHIVE_BASE_DREAMS_0_VERSION='1.0-gog2.2.0.16' ## Giana Sisters: Rise of the Owlverlord ARCHIVE_BASE_OWL_1_NAME='setup_giana_sisters_rise_of_the_owlverlord_2.1.0.8.exe' ARCHIVE_BASE_OWL_1_MD5='bebb3a09c10b8e34b88b6d9f64dedeab' ARCHIVE_BASE_OWL_1_TYPE='innosetup' ARCHIVE_BASE_OWL_1_SIZE='2556034' ARCHIVE_BASE_OWL_1_VERSION='1.0-gog2.1.0.8' ARCHIVE_BASE_OWL_1_URL='https://www.gog.com/game/giana_sisters_rise_of_the_owlverlord' CONTENT_PATH_DEFAULT_DREAMS='.' CONTENT_PATH_DEFAULT_DREAMS_0='app' CONTENT_PATH_DEFAULT_OWL='app' CONTENT_GAME_BIN_FILES=' launcher 7z.dll gsgameexe.exe gsgameexe_dx9.exe' CONTENT_GAME_DATA_FILES=' bundles added_content data_common' CONTENT_GAME0_DATA_PATH='__support/app' CONTENT_GAME0_DATA_FILES=' data_common' CONTENT_DOC_DATA_FILES=' 7z_copying.txt 7z_license.txt 7z_readme.txt' WINE_PERSISTENT_DIRECTORIES_DREAMS=' users/${USER}/Documents/Giana Sisters - Twisted Dreams' WINE_PERSISTENT_DIRECTORIES_OWL=' users/${USER}/Documents/Giana Sisters - Rise of the Owlverlord' ## Despite the needed GStreamer decoders being available, the game freezes when it should play the introduction video: ## ## mmap() failed: Cannot allocate memory ## mmap() failed: Cannot allocate memory ## 0024:err:pulse:pulse_test_connect Failed to create context ## ## (wine:388328): GStreamer-WARNING **: 17:59:53.832: Failed to load plugin '/usr/lib/i386-linux-gnu/gstreamer-1.0/libgstlibav.so': libopenmpt.so.0: failed to map segment from shared object ## winegstreamer error: decodebin1: Your GStreamer installation is missing a plug-in. ## winegstreamer error: decodebin1: ../gst/playback/gstdecodebin2.c(4720): gst_decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin1: ## no suitable plugins found: ## Missing decoder: Windows Media Video 9 (video/x-wmv, wmvversion=(int)3, format=(string)WMV3, width=(int)1920, height=(int)1080, codec_data=(buffer)4ff1080100, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)10000000/333333) ## ## 0:00:00.034232127 388328 0x58932820 ERROR WINE dlls/winegstreamer/wg_parser.c:1616:wg_parser_connect: Failed to play stream. ## winegstreamer error: decodebin2: Your GStreamer installation is missing a plug-in. ## winegstreamer error: decodebin2: ../gst/playback/gstdecodebin2.c(4720): gst_decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin2: ## no suitable plugins found: ## Missing decoder: Windows Media Audio 8 (audio/x-wma, wmaversion=(int)2, bitrate=(int)48024, depth=(int)16, rate=(int)44100, channels=(int)2, block_align=(int)2230, codec_data=(buffer)008800001f0000000000) ## ## 0024:err:wmvcore:init_stream Failed to connect parser, hr 0x80004005. ## ## Using native Windows codecs instead of relying on GStreamers decoders works around this freeze. ## (WINE 10.0) WINE_WINETRICKS_VERBS='wmp9' ## The game launcher, used to tweaks settings, relies on .NET/Mono support. WINE_WINEPREFIX_TWEAKS='mono' ## Both games suffer from problems using the default wined3d renderer: ## - Twisted Dreams is badly rendered, making it unplayable; ## - Rise of the Owlverlord crashes a couple seconds into the first level. ## (WINE 10.0) WINE_DIRECT3D_RENDERER='dxvk' APP_MAIN_EXE='gsgameexe.exe' APP_SETTINGS_ID_DREAMS="${GAME_ID_DREAMS}-settings" APP_SETTINGS_ID_OWL="${GAME_ID_OWL}-settings" APP_SETTINGS_NAME_DREAMS="$GAME_NAME_DREAMS - Settings" APP_SETTINGS_NAME_OWL="$GAME_NAME_OWL - Settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='launcher/gslauncher.exe' ## Ensure the settings application is run through WINE, not Mono. APP_SETTINGS_TYPE='wine' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' decodebin audio/x-wma video/x-wmv video/x-ms-asf' PKG_DATA_ID_DREAMS="${GAME_ID_DREAMS}-data" PKG_DATA_ID_OWL="${GAME_ID_OWL}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-gris.sh0000755000000000000000000000343314471751340013127 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Gris # send your bug reports to bugs@dotslashplay.it ### script_version=20240812.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='gris' GAME_NAME='Gris' ARCHIVE_BASE_0_NAME='setup_gris_1.03_(28074).exe' ARCHIVE_BASE_0_MD5='04f25b3c789a549c0a9c4a94c6385aa0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='3500000' ARCHIVE_BASE_0_VERSION='1.03-gog28074' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gris' UNITY3D_NAME='gris' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/nomada studio/GRIS' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-guacamelee.sh0000755000000000000000000000424414471751340014254 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Guacamelee # send your bug reports to bugs@dotslashplay.it ### script_version=20260424.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='guacamelee' GAME_NAME='Guacamelee!' # This game used to be distributed by Humble Bundle. ARCHIVE_BASE_0_NAME='Guacamelee_DRMFREE.sh' ARCHIVE_BASE_0_MD5='b06af932c1aaefb8f157c977061388ef' ARCHIVE_BASE_0_SIZE='576894' ARCHIVE_BASE_0_VERSION='1.0-humble.2023.10.12' CONTENT_PATH_DEFAULT='data' CONTENT_GAME_BIN_RELATIVE_PATH='x86' CONTENT_GAME_BIN_FILES=' game-bin' CONTENT_LIBS_BIN_RELATIVE_PATH='x86/lib32' CONTENT_LIBS_BIN_FILES=' libfmodevent-4.44.27.so libfmodex-4.44.27.so' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' media level00.dat levels.dat misc.dat resources.dat shaders.dat.ogl skin00.dat Guacamelee.png' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' README.linux' APP_MAIN_EXE='game-bin' APP_MAIN_ICON='noarch/Guacamelee.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-hoa.sh0000755000000000000000000000377714471751340012745 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Hoa # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='hoa-game' GAME_NAME='Hoa' ARCHIVE_BASE_0_NAME='setup_hoa_1.03_(49429).exe' ARCHIVE_BASE_0_MD5='d713ecdb56059e5b4ee430d2f0e2731d' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='3200000' ARCHIVE_BASE_0_VERSION='1.03-gog49429' ARCHIVE_BASE_0_URL='https://www.gog.com/game/hoa' UNITY3D_NAME='hoa' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_BIN_FILES=' fmodstudio.dll xinputinterface32.dll' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/PMStudioGoG/Hoa' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Ensure easy upgrades from packages generated with pre-20240707.2 game scripts. PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} hoa-data" PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" ## Ensure easy upgrades from packages generated with pre-20240707.2 game scripts. PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} hoa" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-hollow-knight.sh0000755000000000000000000000721214471751340014750 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 VA # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Hoël Bézier set -o errexit ### # Hollow Knight # send your bug reports to bugs@dotslashplay.it ### script_version=20250910.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='hollow-knight' GAME_NAME='Hollow Knight' ARCHIVE_BASE_3_NAME='hollow_knight_1_5_78_11833_51218.sh' ARCHIVE_BASE_3_MD5='ad36d98ec636b09796667f0b124ff5bb' ARCHIVE_BASE_3_SIZE='7900000' ARCHIVE_BASE_3_VERSION='1.5.78-gog51218' ARCHIVE_BASE_3_URL='https://www.gog.com/game/hollow_knight' ARCHIVE_BASE_2_NAME='hollow_knight_1_4_3_2_23987.sh' ARCHIVE_BASE_2_MD5='520af5ebe8ac3977faaafc5d2ed8a779' ARCHIVE_BASE_2_SIZE='7800000' ARCHIVE_BASE_2_VERSION='1.4.3.2-gog23987' ARCHIVE_BASE_1_NAME='hollow_knight_en_1_3_1_5_20240.sh' ARCHIVE_BASE_1_MD5='197d9ffc7e0be447849e22a04da836e4' ARCHIVE_BASE_1_SIZE='7100000' ARCHIVE_BASE_1_VERSION='1.3.1.5-gog20240' ARCHIVE_BASE_0_NAME='gog_hollow_knight_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='0d18baf29d5552dc094ca2bfe5fcaae6' ARCHIVE_BASE_0_SIZE='9200000' ARCHIVE_BASE_0_VERSION='1.0.3.1-gog2.1.0.2' UNITY3D_NAME='Hollow Knight' UNITY3D_NAME_2='hollow_knight' UNITY3D_NAME_1="$UNITY3D_NAME_2" UNITY3D_NAME_0="$UNITY3D_NAME_2" ## Only older builds include the ScreenSelector.so plugin. UNITY3D_PLUGINS_2=' ScreenSelector.so' UNITY3D_PLUGINS_1="$UNITY3D_PLUGINS_2" UNITY3D_PLUGINS_0="$UNITY3D_PLUGINS_2" CONTENT_PATH_DEFAULT='data/noarch/game' ## The game runs without displaying anything when using the wayland backend of SDL. APP_MAIN_PRERUN=' # The game runs without displaying anything when using the wayland backend of SDL. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' ## Only older builds include the ScreenSelector.so plugin. PKG_BIN_DEPENDENCIES_LIBRARIES_2=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_1="$PKG_BIN_DEPENDENCIES_LIBRARIES_2" PKG_BIN_DEPENDENCIES_LIBRARIES_0="$PKG_BIN_DEPENDENCIES_LIBRARIES_2" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrades from pre-20230406.2 packages PKG_DATA_PROVIDES=' hollow-knight-assets' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Drop the "Plugins" directory if it is empty. rmdir --ignore-fail-on-non-empty \ "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/$(unity3d_name)_Data/Plugins" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-indivisible.sh0000755000000000000000000000524314471751340014465 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Indivisible # send your bug reports to bugs@dotslashplay.it ### script_version=20260523.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='indivisible' GAME_NAME='Indivisible' ARCHIVE_BASE_0_NAME='indivisible_42940_39272.sh' ARCHIVE_BASE_0_MD5='7328915691beb21dc77494faf915cfbe' ARCHIVE_BASE_0_SIZE='6300000' ARCHIVE_BASE_0_VERSION='42940-gog39272' ARCHIVE_BASE_0_URL='https://www.gog.com/game/indivisible' CONTENT_PATH_DEFAULT='data/noarch/game' # Indivisible.x86_64-pc-linux-gnu requirements CONTENT_LIBS_BIN_RELATIVE_PATH='lib/x86_64-pc-linux-gnu' CONTENT_LIBS_BIN_FILES=' libavcodec.so.57 libavfilter.so.6 libavformat.so.57 libavutil.so.55 libdiscord-rpc.so libGalaxy64.so libSDL2_locale.so.0 libswresample.so.2 libswscale.so.4 libvpx.so.5' # Use shipped build of libSDL_kitchensink.so.1 to avoid a symbol lookup error: # undefined symbol: Kit_GetPlayerVideoDataOGL CONTENT_LIBS0_BIN_RELATIVE_PATH='lib/x86_64-pc-linux-gnu' CONTENT_LIBS0_BIN_FILES=' libSDL_kitchensink.so.1' # Prevent poor audio quality. # (at least on ALSA setups) CONTENT_LIBS1_BIN_RELATIVE_PATH='lib/x86_64-pc-linux-gnu' CONTENT_LIBS1_BIN_FILES=' libFAudio.so.0' CONTENT_GAME_BIN_FILES=' Indivisible.x86_64-pc-linux-gnu' CONTENT_GAME_DATA_FILES=' pkgs' CONTENT_DOC_DATA_FILES=' LICENSES.md' APP_MAIN_EXE='Indivisible.x86_64-pc-linux-gnu' # TODO: Extract a game icon from the Windows build. APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libogg.so.0 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisenc.so.2 libvorbisfile.so.3 libvorbis.so.0' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-itorah.sh0000755000000000000000000000351414471751340013451 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Itorah # send your bug reports to bugs@dotslashplay.it ### script_version=20240808.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='itorah' GAME_NAME='Itorah' ARCHIVE_BASE_0_NAME='setup_itorah_1.1.0.0_(64bit)_(55208).exe' ARCHIVE_BASE_0_MD5='bb342c5fad11d52235e78a4de89899af' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_itorah_1.1.0.0_(64bit)_(55208)-1.bin' ARCHIVE_BASE_0_PART1_MD5='dd70af89b506ef5276b5cc1921b44462' ARCHIVE_BASE_0_SIZE='4100000' ARCHIVE_BASE_0_VERSION='1.1.0.0-gog55208' ARCHIVE_BASE_0_URL='https://www.gog.com/game/itorah' UNITY3D_NAME='itorah' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Grimbart Tales/Itorah/Itorah' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-kero-blaster-series.sh0000755000000000000000000000564614471751340016055 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Kero Blaster series: # - Kero Blaster # - Pink Heaven # - Pink Hour # send your bug reports to bugs@dotslashplay.it ### script_version=20250612.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_BLASTER='kero-blaster' GAME_NAME_BLASTER='Kero Blaster' GAME_ID_HEAVEN='pink-heaven' GAME_NAME_HEAVEN='Pink Heaven' GAME_ID_HOUR='pink-hour' GAME_NAME_HOUR='Pink Hour' # The following archives used to be sold from Playism store, # before it closed down in favour of Steam. ARCHIVE_BASE_BLASTER_0_NAME='KeroBlaster_EN_v1501a.zip' ARCHIVE_BASE_BLASTER_0_MD5='c6ba58d37b5344d08c7d9a94506266b0' ARCHIVE_BASE_BLASTER_0_SIZE='20000' ARCHIVE_BASE_BLASTER_0_VERSION='1.501-playism1501a' ARCHIVE_BASE_HEAVEN_0_NAME='PinkHeavenEn-v1430a.zip' ARCHIVE_BASE_HEAVEN_0_MD5='7d1b3e193a5ba9618cba1ffb0c977762' ARCHIVE_BASE_HEAVEN_0_SIZE='15000' ARCHIVE_BASE_HEAVEN_0_VERSION='1.43-playism1430a' ARCHIVE_BASE_HOUR_0_NAME='PinkHourEn-v1430a.zip' ARCHIVE_BASE_HOUR_0_MD5='7cd38735bf02634474eb8bf5a39439b2' ARCHIVE_BASE_HOUR_0_SIZE='15000' ARCHIVE_BASE_HOUR_0_VERSION='1.43-playism1430a' CONTENT_PATH_DEFAULT_BLASTER='KeroBlasterEn' CONTENT_PATH_DEFAULT_HEAVEN='PinkHeavenEn' CONTENT_PATH_DEFAULT_HOUR='PinkHourEn' CONTENT_GAME_BIN_FILES_BLASTER=' KeroBlaster.exe' CONTENT_GAME_BIN_FILES_HEAVEN=' PinkHeaven.exe' CONTENT_GAME_BIN_FILES_HOUR=' PinkHour.exe' CONTENT_GAME_DATA_FILES=' rsc_?' CONTENT_DOC_DATA_FILES=' ReadmeEn.txt' APP_MAIN_EXE_BLASTER='KeroBlaster.exe' APP_MAIN_EXE_HEAVEN='PinkHeaven.exe' APP_MAIN_EXE_HOUR='PinkHour.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libmpg123.so.0' PKG_DATA_ID_BLASTER="${GAME_ID_BLASTER}-data" PKG_DATA_ID_HEAVEN="${GAME_ID_HEAVEN}-data" PKG_DATA_ID_HOUR="${GAME_ID_HOUR}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-la-mulana.sh0000755000000000000000000000524414471751340014034 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # La-Mulana # send your bug reports to bugs@dotslashplay.it ### script_version=20250331.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='la-mulana' GAME_NAME='La•Mulana' ## This DRM-free build is no longer available for sale from Humble Bundle. ARCHIVE_BASE_0_NAME='20170404_LaMulana_Linux.zip' ARCHIVE_BASE_0_MD5='e7a597ea2588ae975a7cc7b59c17d50d' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.6.6-humble180409' CONTENT_PATH_DEFAULT='data' CONTENT_GAME_BIN_RELATIVE_PATH='x86' CONTENT_GAME_BIN_FILES=' LaMulana.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' data *.bmp *.png' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' README.linux' CONTENT_DOC0_DATA_PATH='.' CONTENT_DOC0_DATA_FILES=' License Manual ReadMe_??.txt' APP_MAIN_EXE='LaMulana.bin.x86' APP_MAIN_ICON='noarch/Icon.png' ## The game crashes on launch when the Wayland backend of SDL is used. APP_MAIN_PRERUN=' # The game crashes on launch when the Wayland backend of SDL is used if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # The .zip archive includes a MojoSetup installer. REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} bsdtar" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default INNER_ARCHIVE_PATH="${PLAYIT_WORKDIR}/gamedata/LaMulanaSetup-2017-01-27.sh" archive_extraction 'INNER_ARCHIVE' rm "$INNER_ARCHIVE_PATH" # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-limbo.sh0000755000000000000000000000477314471751340013275 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Limbo # send your bug reports to bugs@dotslashplay.it ### script_version=20251211.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='limbo' GAME_NAME='Limbo' # The following native Linux installers are no longer sold from Humble Bundle, # they now only sell a Windows build. ARCHIVE_BASE_1_NAME='Limbo-Linux-2014-06-18.zip' ARCHIVE_BASE_1_MD5='5bb49941722ff6d4d6a494e064fd197e' ARCHIVE_BASE_1_SIZE='190000' ARCHIVE_BASE_1_VERSION='1.3-humble2' ARCHIVE_BASE_0_NAME='Limbo-Linux-2014-06-18.sh' ARCHIVE_BASE_0_MD5='9b453abcb859c31cc645a7207de08329' ARCHIVE_BASE_0_TYPE='mojosetup' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.3-humble1' CONTENT_PATH_DEFAULT='data' CONTENT_GAME_BIN_FILES=' limbo' CONTENT_GAME_DATA_FILES=' data settings.txt limbo.png *.pkg' CONTENT_DOC_DATA_FILES=' README-linux.txt' USER_PERSISTENT_FILES=' settings.txt' APP_MAIN_EXE='limbo' APP_MAIN_ICON='limbo.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default case "$(current_archive)" in ('ARCHIVE_BASE_1') ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Limbo-Linux-2014-06-18.sh" archive_extraction 'ARCHIVE_INNER' rm "$ARCHIVE_INNER_PATH" ;; esac # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-little-bug.sh0000755000000000000000000000355414471751340014237 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Little Bug # send your bug reports to bugs@dotslashplay.it ### script_version=20260522.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='little-bug' GAME_NAME='Little Bug' ARCHIVE_BASE_0_NAME='little_bug_v1_1_4_26003.sh' ARCHIVE_BASE_0_MD5='3bbc574d9b8a0279cb023184cb81dd63' ARCHIVE_BASE_0_SIZE='662802' ARCHIVE_BASE_0_VERSION='1.1.4-gog26003' ARCHIVE_BASE_0_URL='https://www.gog.com/game/little_bug' UNITY3D_NAME='Little Bug' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-little-nightmares-1.sh0000755000000000000000000000402214471751340015750 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Little Nightmares # send your bug reports to bugs@dotslashplay.it ### script_version=20250909.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='little-nightmares-1' GAME_NAME='Little Nightmares' ARCHIVE_BASE_0_NAME='setup_little_nightmares_1.0.43.1_(18471).exe' ARCHIVE_BASE_0_MD5='6e1ac1107650aeb03abc17cf0e614e4c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_little_nightmares_1.0.43.1_(18471)-1.bin' ARCHIVE_BASE_0_PART1_MD5='0732121bf0da7db6dc6f5e5a3bc8705b' ARCHIVE_BASE_0_SIZE='9500000' ARCHIVE_BASE_0_VERSION='1.0.43.1-gog18471' ARCHIVE_BASE_0_URL='https://www.gog.com/game/little_nightmares' UNREALENGINE4_NAME='atlas' CONTENT_PATH_DEFAULT='.' USER_PERSISTENT_DIRECTORIES=" ${UNREALENGINE4_NAME}/Saved" APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/littlenightmares.exe" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-lost-ruins.sh0000755000000000000000000000347414471751340014307 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Lost Ruins # send your bug reports to bugs@dotslashplay.it ### script_version=20260523.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='lost-ruins' GAME_NAME='Lost Ruins' ARCHIVE_BASE_0_NAME='lost_ruins_1_0_9a_48364.sh' ARCHIVE_BASE_0_MD5='ae4fabbe98718fad2c02712e4104ee6b' ARCHIVE_BASE_0_SIZE='497160' ARCHIVE_BASE_0_VERSION='1.0.9a-gog48364' ARCHIVE_BASE_0_URL='https://www.gog.com/game/lost_ruins' UNITY3D_NAME='LostRuins' CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_DIRECTORIES=' Saves Settings' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of Steam library. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Plugins" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-lost-words.sh0000755000000000000000000000406714471751340014304 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Lost Words: Beyond the Page # send your bug reports to bugs@dotslashplay.it ### script_version=20250908.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='lost-words' GAME_NAME='Lost Words: Beyond the Page' ARCHIVE_BASE_0_NAME='setup_lost_words_beyond_the_page_release_2021-04-23_8_(64bit)_(46551).exe' ARCHIVE_BASE_0_MD5='0c36cfe013e3196442d77a128a38aa9f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_lost_words_beyond_the_page_release_2021-04-23_8_(64bit)_(46551)-1.bin' ARCHIVE_BASE_0_PART1_MD5='c632a4a1f22c8f2587e1d224547f00eb' ARCHIVE_BASE_0_SIZE='5000000' ARCHIVE_BASE_0_VERSION='2021.04.23.8-gog46551' ARCHIVE_BASE_0_URL='https://www.gog.com/en/game/lost_words_beyond_the_page' UNITY3D_NAME='lost words' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Fourth State/Lost Words' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-mable-and-the-wood.sh0000755000000000000000000000414414471751340015527 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Mable and the Wood # send your bug reports to bugs@dotslashplay.it ### script_version=20250629.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='mable-and-the-wood' GAME_NAME='Mable & the Wood' ARCHIVE_BASE_0_NAME='mable_the_wood_1_7_37606.sh' ARCHIVE_BASE_0_MD5='d88e40a5927c67c3974becd19d64c940' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.7-gog37606' ARCHIVE_BASE_0_URL='https://www.gog.com/game/mable_the_wood' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Mable_PC' CONTENT_GAME_DATA_FILES=' assets' USER_PERSISTENT_FILES=' assets/config.ini' APP_MAIN_EXE='Mable_PC' APP_MAIN_ICON='assets/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl-gnutls.so.4 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mark-of-the-ninja-expansions.sh0000755000000000000000000000610614471751340017557 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Mark of the Ninja expansions: # - Special Edition # send your bug reports to bugs@dotslashplay.it ### script_version=20250615.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='mark-of-the-ninja' GAME_NAME='Mark of the Ninja' EXPANSION_ID='special-edition' EXPANSION_NAME='Special Edition' ## This Linux build is no longer available for sale from GOG, ## they now only sell a Windows build. ARCHIVE_BASE_0_NAME='gog_mark_of_the_ninja_special_edition_dlc_2.0.0.4.sh' ARCHIVE_BASE_0_MD5='bbce70b80932ec9c14fbedf0b6b33eb1' ARCHIVE_BASE_0_SIZE='250000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.4' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' ninja-bin64' CONTENT_GAME_BIN32_FILES=' ninja-bin32' CONTENT_GAME_DATA_FILES=' dlc' APP_MAIN_EXE_BIN64='bin/ninja-bin64' APP_MAIN_EXE_BIN32='bin/ninja-bin32' ## Work around a rendering failure with sdl12-compat. ## cf. https://github.com/libsdl-org/sdl12-compat/issues/315 APP_MAIN_PRERUN=' # Work around a rendering failure with sdl12-compat. # cf. https://github.com/libsdl-org/sdl12-compat/issues/315 export SDL12COMPAT_OPENGL_SCALING=0 ' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_PROVIDES=" $GAME_ID" PKG_BIN64_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN32_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT_LIBS PKG_PARENT_DATA PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-${EXPANSION_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_PARENT_LIBS_ID="${GAME_ID}-libs" PKG_PARENT_DATA_ID="${GAME_ID}-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_default # Write launchers ## Run the game binary from its parent directory. game_exec_line() { cat <<- EOF cd bin ./$(basename "$(application_exe 'APP_MAIN')") "\$@" EOF } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mark-of-the-ninja.sh0000755000000000000000000000760614471751340015400 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # Mark of the Ninja # send your bug reports to bugs@dotslashplay.it ### script_version=20250312.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='mark-of-the-ninja' GAME_NAME='Mark of the Ninja' ## This Linux build is no longer available for sale from gog.com. ARCHIVE_BASE_GOG_0_NAME='gog_mark_of_the_ninja_2.0.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='126ded567b38580f574478fd994e3728' ARCHIVE_BASE_GOG_0_SIZE='2200000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.4' ## This game is no longer available for sale from humblebundle.com. ARCHIVE_BASE_HUMBLE_0_NAME='markoftheninja_linux38_1380755375.zip' ARCHIVE_BASE_HUMBLE_0_MD5='7871a48068ef43e93916325eedd6913e' ARCHIVE_BASE_HUMBLE_0_SIZE='2300000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble130310' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_LIBS_LIBS64_RELATIVE_PATH='bin/lib64' CONTENT_LIBS_LIBS64_FILES=' libfmodevent64.so libfmodevent64-4.44.14.so libfmodex64.so libfmodex64-4.44.14.so' CONTENT_LIBS_LIBS32_RELATIVE_PATH='bin/lib32' CONTENT_LIBS_LIBS32_FILES=' libfmodevent.so libfmodevent-4.44.14.so libfmodex.so libfmodex-4.44.14.so' CONTENT_GAME_BIN64_FILES=' bin/ninja-bin64' CONTENT_GAME_BIN32_FILES=' bin/ninja-bin32' CONTENT_GAME_DATA_FILES=' data data-pc bin/*.xpm' CONTENT_DOC_DATA_RELATIVE_PATH='bin' CONTENT_DOC_DATA_FILES=' motn_readme.txt' APP_MAIN_EXE_BIN32='bin/ninja-bin32' APP_MAIN_EXE_BIN64='bin/ninja-bin64' APP_MAIN_ICON='bin/motn_icon.xpm' ## Work around a rendering failure with sdl12-compat ## cf. https://github.com/libsdl-org/sdl12-compat/issues/315 APP_MAIN_PRERUN=' # Work around a rendering failure with sdl12-compat # cf. https://github.com/libsdl-org/sdl12-compat/issues/315 export SDL12COMPAT_OPENGL_SCALING=0 ' PACKAGES_LIST=' PKG_BIN32 PKG_BIN64 PKG_LIBS32 PKG_LIBS64 PKG_DATA' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS PKG_DATA' PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.6' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS64_ARCH='64' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 libstdc++.so.6' PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- EOF cd bin ./$(basename "$(application_exe 'APP_MAIN')") "\$@" EOF } launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-minute-of-islands.sh0000755000000000000000000000376014471751340015524 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Minute of Islands # send your bug reports to bugs@dotslashplay.it ### script_version=20250908.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='minute-of-islands' GAME_NAME='Minute of Islands' ARCHIVE_BASE_0_NAME='setup_minute_of_islands_1.0_(64bit)_(46572).exe' ARCHIVE_BASE_0_MD5='637bf2569af75d362de916fdf4ed570a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_minute_of_islands_1.0_(64bit)_(46572)-1.bin' ARCHIVE_BASE_0_PART1_MD5='612f7cd620f9055a8f45b408b06a0a8e' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.0-gog46572' ARCHIVE_BASE_0_URL='https://www.gog.com/game/minute_of_islands' UNITY3D_NAME='minute of islands' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Studio Fizbin/Minute of Islands' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-mirrors-edge.sh0000755000000000000000000002132114471751340014556 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Mirror's Edge # send your bug reports to bugs@dotslashplay.it ### script_version=20260521.6 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='mirrors-edge' GAME_NAME='Mirrorʼs Edge' ARCHIVE_BASE_2_NAME='setup_mirrors_edge_1.01_jpfix_(41238).exe' ARCHIVE_BASE_2_MD5='58078b7594476adf72d58dc01e024327' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_PART1_NAME='setup_mirrors_edge_1.01_jpfix_(41238)-1.bin' ARCHIVE_BASE_2_PART1_MD5='9a202aeca8eaa63d18c24fcdc62a7890' ARCHIVE_BASE_2_PART2_NAME='setup_mirrors_edge_1.01_jpfix_(41238)-2.bin' ARCHIVE_BASE_2_PART2_MD5='3ee19c143f7d85e5393fc51d705ed61c' ARCHIVE_BASE_2_PART3_NAME='setup_mirrors_edge_1.01_jpfix_(41238)-3.bin' ARCHIVE_BASE_2_PART3_MD5='2a961e5b6f2ce2ef42169c0a023e5c4c' ARCHIVE_BASE_2_SIZE='12000000' ARCHIVE_BASE_2_VERSION='1.01-gog41238' ARCHIVE_BASE_2_URL='https://www.gog.com/game/mirrors_edge' ARCHIVE_BASE_1_NAME='setup_mirrors_edge_1.01_(40566).exe' ARCHIVE_BASE_1_MD5='f0faffb76a2b46c3aca8342265a5f41b' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_mirrors_edge_1.01_(40566)-1.bin' ARCHIVE_BASE_1_PART1_MD5='cdfea6d6412de910eae6748eeb6af54e' ARCHIVE_BASE_1_PART2_NAME='setup_mirrors_edge_1.01_(40566)-2.bin' ARCHIVE_BASE_1_PART2_MD5='6b4a66c9ac31c8c2f4e647957c64370a' ARCHIVE_BASE_1_PART3_NAME='setup_mirrors_edge_1.01_(40566)-3.bin' ARCHIVE_BASE_1_PART3_MD5='8529e17c8faa54be07219106ffe00774' ARCHIVE_BASE_1_SIZE='12000000' ARCHIVE_BASE_1_VERSION='1.01-gog40566' ARCHIVE_BASE_0_NAME='setup_mirrors_edge_2.0.0.3.exe' ARCHIVE_BASE_0_MD5='89381d67169f5c6f8f300e172a64f99c' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--gog' ARCHIVE_BASE_0_PART1_NAME='setup_mirrors_edge_2.0.0.3-1.bin' ARCHIVE_BASE_0_PART1_MD5='406b99108e1edd17fc60435d1f2c27f9' ARCHIVE_BASE_0_PART1_TYPE='rar' ARCHIVE_BASE_0_PART2_NAME='setup_mirrors_edge_2.0.0.3-2.bin' ARCHIVE_BASE_0_PART2_MD5='18f2bd62201904c8e98a4b805a90ab2d' ARCHIVE_BASE_0_PART2_TYPE='rar' ARCHIVE_BASE_0_SIZE='7700000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.3' GAME_ENGINE='unrealengine3' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='game' CONTENT_GAME_BIN_FILES=' Binaries/MirrorsEdge.exe' CONTENT_GAME0_BIN_FILES=' Engine/Config Engine/Shaders' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME1_BIN_FILES=' Binaries/binkw32.dll Binaries/DMCmdPortalClient.dll Binaries/ILPointCloudLib.dll Binaries/libresample.dll Binaries/NxCharacter.dll Binaries/NxCooking.dll Binaries/ogg.dll Binaries/OpenAL32.dll Binaries/PhysXDevice.dll Binaries/PhysXExtensions.dll Binaries/PhysXLoader.dll Binaries/PhysXLocal/PhysXLoader.dll Binaries/vorbis.dll Binaries/vorbisenc.dll Binaries/vorbisfile.dll Binaries/wrap_oal.dll Binaries/wxmsw28u_adv_vc_custom.dll Binaries/wxmsw28u_aui_vc_custom.dll Binaries/wxmsw28u_core_vc_custom.dll Binaries/wxmsw28ud_adv_vc_custom.dll Binaries/wxmsw28ud_aui_vc_custom.dll Binaries/wxmsw28u_dbgrid_vc_custom.dll Binaries/wxmsw28ud_core_vc_custom.dll Binaries/wxmsw28ud_dbgrid_vc_custom.dll Binaries/wxmsw28ud_gl_vc_custom.dll Binaries/wxmsw28ud_html_vc_custom.dll Binaries/wxmsw28ud_media_vc_custom.dll Binaries/wxmsw28ud_net_vc_custom.dll Binaries/wxmsw28ud_odbc_vc_custom.dll Binaries/wxmsw28ud_qa_vc_custom.dll Binaries/wxmsw28ud_richtext_vc_custom.dll Binaries/wxmsw28ud_vc_custom.dll Binaries/wxmsw28ud_xml_vc_custom.dll Binaries/wxmsw28ud_xrc_vc_custom.dll Binaries/wxmsw28u_gl_vc_custom.dll Binaries/wxmsw28u_html_vc_custom.dll Binaries/wxmsw28u_media_vc_custom.dll Binaries/wxmsw28u_net_vc_custom.dll Binaries/wxmsw28u_odbc_vc_custom.dll Binaries/wxmsw28u_qa_vc_custom.dll Binaries/wxmsw28u_richtext_vc_custom.dll Binaries/wxmsw28u_vc_custom.dll Binaries/wxmsw28u_xml_vc_custom.dll Binaries/wxmsw28u_xrc_vc_custom.dll' # TODO: Check if the Steam library is required. CONTENT_GAME2_BIN_FILES=' Binaries/steam_api.dll' # TODO: Check if this .bak file is required. CONTENT_GAME3_BIN_FILES=' Binaries/PhysXCore.bak' CONTENT_GAME_L10N_FR_FILES=' Engine/Localization/FRA TdGame/CookedPC/Audio/FRA TdGame/Localization/FRA TdGame/CookedPC/Startup_FRA.upk TdGame/CookedPC/Ts_LOC_FRA.upk TdGame/CookedPC/Maps/SP??/*_LOC_FRA.upk' CONTENT_GAME_L10N_EN_FILES=' Engine/Localization/INT TdGame/CookedPC/Audio/int TdGame/Localization/int TdGame/CookedPC/Startup_int.upk TdGame/CookedPC/Ts_LOC_int.upk TdGame/CookedPC/Maps/SP??/*_LOC_int.upk' CONTENT_GAME_MAPS_FILES=' Entry.upk */*.me1 */*.umap' CONTENT_GAME_DATA_FILES=' TdGame/Config TdGame/Movies TdGame/Splash' CONTENT_GAME0_DATA_FILES=' TdGame/CookedPC/Accessories TdGame/CookedPC/Animations TdGame/CookedPC/Audio TdGame/CookedPC/Buildings TdGame/CookedPC/Characters TdGame/CookedPC/Core.u TdGame/CookedPC/Editor TdGame/CookedPC/Editor.u TdGame/CookedPC/Effects TdGame/CookedPC/Engine.u TdGame/CookedPC/Fp.u TdGame/CookedPC/GameFramework.u TdGame/CookedPC/Ground TdGame/CookedPC/Interiors TdGame/CookedPC/IpDrv.u TdGame/CookedPC/Lighting TdGame/CookedPC/Materials TdGame/CookedPC/Packages TdGame/CookedPC/PhysicalMaterials TdGame/CookedPC/Props TdGame/CookedPC/Script TdGame/CookedPC/TdEditor.u TdGame/CookedPC/TdGame.u TdGame/CookedPC/TdMenuContent.u TdGame/CookedPC/TdMpContent.u TdGame/CookedPC/TdSharedContent.u TdGame/CookedPC/TdSpBossContent.u TdGame/CookedPC/TdSpContent.u TdGame/CookedPC/TdTTContent.u TdGame/CookedPC/TdTuContent.u TdGame/CookedPC/TimeTrial TdGame/CookedPC/Tp.u TdGame/CookedPC/Ts.u TdGame/CookedPC/UI TdGame/CookedPC/UnrealEd.u TdGame/CookedPC/Vehicles TdGame/CookedPC/Weapons' CONTENT_GAME1_DATA_FILES=' TdGame/CookedPC/EditorMaterials.upk TdGame/CookedPC/EditorMeshes.upk TdGame/CookedPC/EditorResources.upk TdGame/CookedPC/EngineFonts.upk TdGame/CookedPC/EngineMaterials.upk TdGame/CookedPC/Engine_MI_Shaders.upk TdGame/CookedPC/EngineResources.upk TdGame/CookedPC/EngineScenes.upk TdGame/CookedPC/EngineVolumetrics.upk TdGame/CookedPC/GlobalPersistentCookerData.upk TdGame/CookedPC/GuidCache.upk TdGame/CookedPC/NodeBuddies.upk TdGame/CookedPC/RefShaderCache-PC-D3D-SM2.upk TdGame/CookedPC/RefShaderCache-PC-D3D-SM3.upk TdGame/CookedPC/RefShaderCache-PC-D3D-SM4.upk' USER_PERSISTENT_DIRECTORIES=' TdGame/Config TdGame/savefiles' WINE_REGISTRY_INIT_L10N_FR=' [HKEY_LOCAL_MACHINE\Software\EA Games\Mirror'\''s Edge] "Language"="French" "Locale"="fr_FR" ' WINE_REGISTRY_INIT_L10N_EN=' [HKEY_LOCAL_MACHINE\Software\EA Games\Mirror'\''s Edge] "Language"="English (UK)" "Locale"="en_UK" ' APP_MAIN_EXE='Binaries/MirrorsEdge.exe' APP_MAIN_ICON='ME_Icon.ico' PACKAGES_LIST=' PKG_BIN PKG_L10N_FR PKG_L10N_EN PKG_MAPS PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_MAPS PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' PKG_MAPS_ID="${GAME_ID}-maps" PKG_MAPS_DESCRIPTION='maps' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Install Windows native PhysX libraries. The game crashes on launch if they are not available. # This is set here to avoid overriding the default verbs for Unreal Engine 3 games. WINE_WINETRICKS_VERBS="$(wine_winetricks_verbs) physx" # Write launchers. for package in \ 'PKG_L10N_FR' \ 'PKG_L10N_EN' do ( set_current_package "$package" # shellcheck disable=SC2218 wine_registry_script_write "$package" ) done wine_registry_script_write() { return 0; } # Set registry script to a dummy value to ensure its integration in the launcher. WINE_REGISTRY_INIT='nothing' launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_fr='française' lang_en='anglaise' ;; ('en'|*) lang_string='%s version:' lang_fr='French' lang_en='English' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_MAPS' 'PKG_L10N_FR' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_MAPS' 'PKG_L10N_EN' # Clean up. working_directory_cleanup exit 0 games/play-mobius.sh0000755000000000000000000000325114471751340013457 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Mobius # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='mobius' GAME_NAME='Mobius' ARCHIVE_BASE_0_NAME='Mobius v1.1.zip' ARCHIVE_BASE_0_MD5='d1d9ddf376bddb431f7d11d21b2de6e7' ARCHIVE_BASE_0_SIZE='70000' ARCHIVE_BASE_0_VERSION='1.0-itch.2019.02.17' ARCHIVE_BASE_0_URL='https://papercookies.itch.io/mobius' UNITY3D_NAME='Mobius' CONTENT_PATH_DEFAULT='Mobius v1.1' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Adam Pype\Mobius' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-momodora-reverie-under-the-moonlight.sh0000755000000000000000000000555614471751340021336 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # Momodora: Reverie Under the Moonlight # send your bug reports to bugs@dotslashplay.it ### script_version=20250624.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='momodora-reverie-under-the-moonlight' GAME_NAME='Momodora: Reverie Under the Moonlight' ARCHIVE_BASE_2_NAME='momodora_reverie_under_the_moonlight_1_063_43451.sh' ARCHIVE_BASE_2_MD5='b10b3d929d6ccac6249581cefcc43285' ARCHIVE_BASE_2_SIZE='330000' ARCHIVE_BASE_2_VERSION='1.063-gog43451' ARCHIVE_BASE_2_URL='https://www.gog.com/game/momodora_reverie_under_the_moonlight' ARCHIVE_BASE_1_NAME='momodora_reverie_under_the_moonlight_1_062_24682.sh' ARCHIVE_BASE_1_MD5='9da233f084d0a86e4068ca90c89e4f05' ARCHIVE_BASE_1_SIZE='330000' ARCHIVE_BASE_1_VERSION='1.062-gog24682' ARCHIVE_BASE_0_NAME='momodora_reverie_under_the_moonlight_en_20180418_20149.sh' ARCHIVE_BASE_0_MD5='5ec0d0e8475ced69fbaf3881652d78c1' ARCHIVE_BASE_0_SIZE='330000' ARCHIVE_BASE_0_VERSION='1.02a-gog20149' CONTENT_PATH_DEFAULT='data/noarch/game/GameFiles' CONTENT_GAME_BIN_FILES=' MomodoraRUtM' CONTENT_GAME_DATA_FILES=' assets' CONTENT_DOC_DATA_PATH='data/noarch/game' CONTENT_DOC_DATA_FILES=' Installation Notes.pdf Update.txt' USER_PERSISTENT_FILES=' assets/*.ini' APP_MAIN_EXE='MomodoraRUtM' APP_MAIN_ICON='assets/icon.png' ## Work around broken support for non-US locales. APP_MAIN_PRERUN=' # Work around broken support for non-US locales. export LANG=C ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libcurl.so.4+CURL_OPENSSL_3 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-mushroom-11.sh0000755000000000000000000000432414471751340014253 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Mushroom 11 # send your bug reports to bugs@dotslashplay.it ### script_version=20260521.6 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='mushroom-11' GAME_NAME='Mushroom 11' ARCHIVE_BASE_0_NAME='Mushroom_11_v1.07b4_Humble_Linux.zip' ARCHIVE_BASE_0_MD5='0c257b149a3636ba839fba4cffe7b3db' ARCHIVE_BASE_0_SIZE='475248' ARCHIVE_BASE_0_VERSION='1.07b4-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/mushroom-11' UNITY3D_NAME='Mushroom_11' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPNDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of unused 32-bit Mono libraries. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # Shipped FMOD libraries expect an executable stack. game_exec_line() { cat <<- EOF GLIBC_TUNABLES=glibc.rtld.execstack=2 ./Mushroom_11.x86_64 -logFile ./logs/$(date +%F-%R).log "\$@" EOF } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-my-rabbits-are-gone.sh0000755000000000000000000000502514471751340015726 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # My Rabbits Are Gone # send your bug reports to bugs@dotslashplay.it ### script_version=20250626.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='my-rabbits-are-gone' GAME_NAME='Oh Jeez, Oh No, My Rabbits Are Gone !!!' ARCHIVE_BASE_1_NAME='oh-jeez-oh-no-my-rabbits-are-gone-linux.zip' ARCHIVE_BASE_1_MD5='5fd3335ca1a517bd733d2692bda6dd35' ARCHIVE_BASE_1_SIZE='210000' ARCHIVE_BASE_1_VERSION='1.3.1.2a-itch1' ARCHIVE_BASE_1_URL='https://studionevermore.itch.io/oh-jeez-oh-no-my-rabbits-are-gone' ARCHIVE_BASE_0_NAME='MyRabbitsAreGone1.1.0.5ItchLinux.zip' ARCHIVE_BASE_0_MD5='4666fb50124c7076b1a9e493b5ff4883' ARCHIVE_BASE_0_SIZE='640000' ARCHIVE_BASE_0_VERSION='1.1.5-itch1' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' MyRabbitsAreGone' CONTENT_GAME_DATA_FILES=' assets' USER_PERSISTENT_FILES=' assets/options.ini' APP_MAIN_EXE='MyRabbitsAreGone' APP_MAIN_ICON='assets/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_COMMON=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXrandr.so.2 libXxf86vm.so.1 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES=" $PKG_BIN_DEPENDENCIES_LIBRARIES_COMMON libcurl.so.4 libssl.so.1.1" PKG_BIN_DEPENDENCIES_LIBRARIES_0=" $PKG_BIN_DEPENDENCIES_LIBRARIES_COMMON libcurl-gnutls.so.4 libssl.so.1.0.0" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-never-alone.sh0000755000000000000000000000456114471751340014401 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Never Alone # send your bug reports to bugs@dotslashplay.it ### script_version=20250612.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='never-alone' GAME_NAME='Never Alone' ARCHIVE_BASE_0_NAME='NeverAlone_ArcticCollection_Linux.1.04.tar.gz' ARCHIVE_BASE_0_MD5='3da062abaaa9e3e6ff97d4c82c8ea3c3' ARCHIVE_BASE_0_SIZE='4900000' ARCHIVE_BASE_0_VERSION='1.04-humble161008' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/never-alone-arctic-collection' UNITY3D_NAME='Never_Alone' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='NeverAlone_ArcticCollection_Linux.1.04' CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}.x64" CONTENT_GAME_VIDEOS_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets/Videos" APP_MAIN_EXE="${UNITY3D_NAME}.x64" PACKAGES_LIST=' PKG_BIN PKG_VIDEOS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_VIDEOS PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_VIDEOS_ID="$GAME_ID-videos" PKG_VIDEOS_DESCRIPTION='videos' PKG_DATA_ID="$GAME_ID-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-nihilumbra.sh0000755000000000000000000000614514471751340014320 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Nihilumbra # send your bug reports to bugs@dotslashplay.it ### script_version=20241107.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='nihilumbra' GAME_NAME='Nihilumbra' ARCHIVE_BASE_64BIT_0_NAME='Nihilumbra-1.35-linux64.tar.gz' ARCHIVE_BASE_64BIT_0_MD5='18aa096020cedea4f208ca55f7e5c85f' ARCHIVE_BASE_64BIT_0_SIZE='2304011' ARCHIVE_BASE_64BIT_0_VERSION='1.35-humble150122' ARCHIVE_BASE_64BIT_0_URL='https://www.humblebundle.com/store/nihilumbra' ARCHIVE_BASE_32BIT_0_NAME='Nihilumbra-1.35-linux32.tar.gz' ARCHIVE_BASE_32BIT_0_MD5='24ba59112bdb95b05651ebe48ec5882d' ARCHIVE_BASE_32BIT_0_SIZE='2301254' ARCHIVE_BASE_32BIT_0_VERSION='1.35-humble150122' ARCHIVE_BASE_32BIT_0_URL='https://www.humblebundle.com/store/nihilumbra' UNITY3D_NAME='Nihilumbra' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_64BIT='Nihilumbra-1.35-linux64' CONTENT_PATH_DEFAULT_32BIT='Nihilumbra-1.35-linux32' ## APP_MAIN_ICON is set implicitly for all Unity3D games APP_MAIN_ICONS_LIST='APP_MAIN_ICON APP_MAIN_ICON_32 APP_MAIN_ICON_48_PNG APP_MAIN_ICON_48_XPM APP_MAIN_ICON_64 APP_MAIN_ICON_128' APP_MAIN_ICON_32='icon32x32.png' APP_MAIN_ICON_48_PNG='icon48x48.png' APP_MAIN_ICON_48_XPM='icon48x48.xpm' APP_MAIN_ICON_64='icon64x64.png' APP_MAIN_ICON_128='icon128x128.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_32BIT='32' PKG_BIN_ARCH_64BIT='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not disable the MAP_32BIT flag, as this game is not affected by the bug it works around unity3d_disable_map32bit() { true; } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-noita.sh0000755000000000000000000000635114471751340013277 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Noita # send your bug reports to bugs@dotslashplay.it ### script_version=20260523.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='noita' GAME_NAME='Noita' ARCHIVE_BASE_0_NAME='setup_noita_20231221-_050_(69862).exe' ARCHIVE_BASE_0_MD5='106a6244f5d69eccfb690e2a5d5e3100' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1446784' ARCHIVE_BASE_0_VERSION='2023.12.21-gog69862' ARCHIVE_BASE_0_URL='https://www.gog.com/game/noita' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' noita.exe config.xml' # TODO: Check if this extra binary is required. CONTENT_GAME0_BIN_FILES=' noita_dev.exe' # noita.exe requirements # TODO: Install libraries in a standard path. CONTENT_GAME1_BIN_FILES=' lua51.dll SDL2.dll fmod.dll fmodstudio.dll Galaxy.dll' # TODO: Move the modding tools to a dedicated package (or drop them). CONTENT_GAME2_BIN_FILES=' tools_modding' CONTENT_GAME_DATA_FILES=' data' # TODO: Move the mods to a dedicated package. CONTENT_GAME0_DATA_FILES=' mods' CONTENT_DOC_DATA_FILES=' licenses _branch.txt _release_notes.txt _version_hash.txt readme.txt screenshot_paths.txt' USER_PERSISTENT_DIRECTORIES=' mods' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Nolla_Games_Noita' # The game fails to start unless Microsoft Visual C++ 2013 libraries are available. # TODO: Check if this is still a problem with current WINE. WINE_WINETRICKS_VERBS='vcrun2013' APP_MAIN_EXE='noita.exe' APP_MAIN_ICON='data/icon.bmp' # Prevent errors with SDL backends unsupported on Windows. APP_MAIN_PRERUN=' # Prevent errors with SDL backends unsupported on Windows. case "${SDL_VIDEODRIVER:-}" in ("wayland"|"x11") unset SDL_VIDEODRIVER ;; esac ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Convert icon to standard resolutions. REQUIREMENTS_LIST=' magick' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Convert icon to standard resolutions. APP_MAIN_ICON_64='icon_64.png' APP_MAIN_ICON_96='icon_96.png' icon_source="$(path_archive_contents)/$(icon_path 'APP_MAIN_ICON')" magick convert "$icon_source" -resize 64x64 "$(path_archive_contents)/$(icon_path 'APP_MAIN_ICON_64')" magick convert "$icon_source" -resize 96x96 "$(path_archive_contents)/$(icon_path 'APP_MAIN_ICON_96')" APP_MAIN_ICONS_LIST="$(application_icons_list 'APP_MAIN') APP_MAIN_ICON_64 APP_MAIN_ICON_96" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-nyx-quest.sh0000755000000000000000000000365714471751340014150 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Nyx Quest # send your bug reports to bugs@dotslashplay.it ### script_version=20240812.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='nyx-quest' GAME_NAME='NyxQuest: Kindred Spirits' ARCHIVE_BASE_0_NAME='setup_nyxquest_kindred_spirits_1.3_(36614).exe' ARCHIVE_BASE_0_MD5='eb9e6d7fd8136bbf581ab350fe7bb85b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.3-gog36614' ARCHIVE_BASE_0_URL='https://www.gog.com/game/nyxquest_kindred_spirits' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' devil.dll openal32.dll wrap_oal.dll nyxquest.exe' CONTENT_GAME_DATA_FILES=' datapc nyx_icon.ico' CONTENT_DOC_DATA_FILES=' manual.pdf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Over the Top Games/NyxQuest' APP_MAIN_EXE='nyxquest.exe' APP_MAIN_ICON='nyx_icon.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-oddworld-abes-oddysee.sh0000755000000000000000000000411114471751340016335 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Oddworld: Abe's Oddysee # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='oddworld-abes-oddysee' GAME_NAME='Oddworld: Abeʼs Oddysee' ARCHIVE_BASE_1_NAME='setup_abes_oddysee_1.0_(19071).exe' ARCHIVE_BASE_1_MD5='1c60cd9f43cc6392fc7c5185580eb048' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='650000' ARCHIVE_BASE_1_VERSION='1.0-gog19071' ARCHIVE_BASE_1_URL='https://www.gog.com/game/oddworld_abes_oddysee' ARCHIVE_BASE_0_NAME='setup_abes_oddysee_2.0.0.4.exe' ARCHIVE_BASE_0_MD5='c22a44d208e524dc2760ea6ce57829d5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='660000' ARCHIVE_BASE_0_VERSION='2.1-gog2.0.0.4' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' abewin.exe' CONTENT_GAME_DATA_FILES=' *.ddv *.lvl' CONTENT_DOC_DATA_FILES=' *.txt *.pdf' USER_PERSISTENT_DIRECTORIES=' save' USER_PERSISTENT_FILES=' *.ini' APP_MAIN_EXE='abewin.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-one-hand-clapping.sh0000755000000000000000000000356514471751340015455 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # One Hand Clapping # send your bug reports to bugs@dotslashplay.it ### script_version=20250627.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='one-hand-clapping' GAME_NAME='One Hand Clapping' ARCHIVE_BASE_0_NAME='setup_one_hand_clapping_1.0.41_release_(54430).exe' ARCHIVE_BASE_0_MD5='039da011a24466dc791b91c34ba1f6a3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='950000' ARCHIVE_BASE_0_VERSION='1.0.41-gog54430' ARCHIVE_BASE_0_URL='https://www.gog.com/game/one_hand_clapping' UNITY3D_NAME='one hand clapping' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Bad Dream Games/One Hand Clapping' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-ori-and-the-blind-forest.sh0000755000000000000000000000651514471751340016664 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Thomas Vasileiou set -o errexit ### # Ori and the Blind Forest # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='ori-and-the-blind-forest' GAME_NAME='Ori and the Blind Forest' ARCHIVE_BASE_1_NAME='setup_ori_and_the_blind_forest_definitive_edition_1.0_(28474).exe' ARCHIVE_BASE_1_MD5='510199277acd79e434ceaccf9b28a71c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_ori_and_the_blind_forest_definitive_edition_1.0_(28474)-1.bin' ARCHIVE_BASE_1_PART1_MD5='44382e02153ed54ab4ed182c252fe9f5' ARCHIVE_BASE_1_PART2_NAME='setup_ori_and_the_blind_forest_definitive_edition_1.0_(28474)-2.bin' ARCHIVE_BASE_1_PART2_MD5='c8c12108e5e7cebd46a7a78c995a5f1a' ARCHIVE_BASE_1_SIZE='11000000' ARCHIVE_BASE_1_VERSION='1.0-gog28474' ARCHIVE_BASE_1_URL='https://www.gog.com/game/ori_and_the_blind_forest_definitive_edition' ARCHIVE_BASE_0_NAME='setup_ori_and_the_blind_forest_de_2.0.0.2.exe' ARCHIVE_BASE_0_MD5='1dedfb0663ebbe82d051a62dc68149b5' ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS='--lowercase --gog' ARCHIVE_BASE_0_PART1_NAME='setup_ori_and_the_blind_forest_de_2.0.0.2-1.bin' ARCHIVE_BASE_0_PART1_MD5='d5ec4ea264c372a4fdd52b5ecbd9efe6' ARCHIVE_BASE_0_PART1_EXTRACTOR='unar' ARCHIVE_BASE_0_PART2_NAME='setup_ori_and_the_blind_forest_de_2.0.0.2-2.bin' ARCHIVE_BASE_0_PART2_MD5='94c3d33701eadca15df9520de55f6f03' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.2' UNITY3D_NAME='oride' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='game' CONTENT_GAME_DATA_ASSETS_FILES=" ${UNITY3D_NAME}_data/*.assets ${UNITY3D_NAME}_data/*.assets.ress" WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Local Settings/Application Data/Ori and the Blind Forest DE' APP_MAIN_OPTIONS='-force-d3d9' PACKAGES_LIST=' PKG_BIN PKG_DATA_ASSETS PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_ASSETS' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - assets" ## Ensure easy upgrade from packages generated using pre-20211129.5 game script PKG_DATA_ASSETS_PROVIDES=' ori-and-the-blind-forest-assets' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-out-of-line.sh0000755000000000000000000000352114471751340014317 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Out of Line # send your bug reports to bugs@dotslashplay.it ### script_version=20240812.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='out-of-line' GAME_NAME='Out of Line' ARCHIVE_BASE_0_NAME='setup_out_of_line_1.0.1.2_(50411).exe' ARCHIVE_BASE_0_MD5='5cf39c90da563dc21776536b1904b0df' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1500000' ARCHIVE_BASE_0_VERSION='1.0.1.2-gog50411' ARCHIVE_BASE_0_URL='https://www.gog.com/game/out_of_line' UNITY3D_NAME='out of line' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Nerd Monkeys/Out of Line' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/quicktime, variant=(string)iso' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-owlboy.sh0000755000000000000000000001130414471751340013472 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Owlboy # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='owlboy' GAME_NAME='Owlboy' ARCHIVE_BASE_0_NAME='owlboy-01302020-bin' ARCHIVE_BASE_0_MD5='0d8d67c79b9359ee4b79913b6b640465' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_0_SIZE='518307' ARCHIVE_BASE_0_VERSION='1.3.7013.40718-humble200130' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/owlboy' ARCHIVE_BASE_MULTIARCH_3_NAME='owlboy-03152019-bin' ARCHIVE_BASE_MULTIARCH_3_MD5='2966b183f43f220ade646cb3f7872c49' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_MULTIARCH_3_EXTRACTOR='bsdtar' ARCHIVE_BASE_MULTIARCH_3_SIZE='550000' ARCHIVE_BASE_MULTIARCH_3_VERSION='1.3.7013.40178-humble190325' ARCHIVE_BASE_MULTIARCH_2_NAME='owlboy-12292017.bin' ARCHIVE_BASE_MULTIARCH_2_MD5='c2e99502013c7d2529bc2aefb6416dcf' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_MULTIARCH_2_EXTRACTOR='bsdtar' ARCHIVE_BASE_MULTIARCH_2_SIZE='570000' ARCHIVE_BASE_MULTIARCH_2_VERSION='1.3.6564.30139-humble1' ARCHIVE_BASE_MULTIARCH_1_NAME='owlboy-11022017-bin' ARCHIVE_BASE_MULTIARCH_1_MD5='d3a1e4753a604431c58eb1ea26c35543' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_MULTIARCH_1_EXTRACTOR='bsdtar' ARCHIVE_BASE_MULTIARCH_1_SIZE='570000' ARCHIVE_BASE_MULTIARCH_1_VERSION='1.3.6515.19883-humble171102' ARCHIVE_BASE_MULTIARCH_0_NAME='owlboy-05232017-bin' ARCHIVE_BASE_MULTIARCH_0_MD5='f35fba69fadffbf498ca8a38dbceeac1' ## This MojoSetup installer is not relying on a Makeself wrapper ARCHIVE_BASE_MULTIARCH_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_MULTIARCH_0_SIZE='570000' ARCHIVE_BASE_MULTIARCH_0_VERSION='1.2.6382.15868-humble1' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_FILES=' libmojoshader.so libXNAFileDialog.so' ## The shipped FAudio must be used to prevent game crashes CONTENT_LIBS_FILES="$CONTENT_LIBS_FILES libFAudio.so.0" CONTENT_LIBS_LIBS64_RELATIVE_PATH='lib64' CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_RELATIVE_PATH='lib' CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' content monoconfig monomachineconfig Owlboy.bmp Owlboy.exe FNA.dll FNA.dll.config GamedevUtility.dll MoonSharp.Interpreter.dll SharpFont.dll SharpFont.dll.config TimSort.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' USER_PERSISTENT_FILES=' content/fonts/*.ini content/localizations/*/speechbubbleconfig.ini' APP_MAIN_EXE='Owlboy.exe' APP_MAIN_ICON='Owlboy.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64' PACKAGES_LIST_MULTIARCH=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libfreetype.so.6 libGL.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libudev.so.1' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Design.dll System.Drawing.dll System.Management.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS_DESCRIPTION='Shipped libraries' PKG_LIBS64_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS32_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' # Convert .ini files to Unix-style line separators REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} find dos2unix" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Convert .ini files to Unix-style line separators find . -type f -name '*.ini' \ -exec dos2unix --quiet '{}' + ) # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pandemonium.sh0000755000000000000000000000370514471751340014501 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Emmanuel Gil Peyrot # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Pandemonium # send your bug reports to bugs@dotslashplay.it ### script_version=20240621.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='pandemonium' GAME_NAME='Pandemonium!' ARCHIVE_BASE_0_NAME='setup_pandemonium_2.0.0.15.exe' ARCHIVE_BASE_0_MD5='dee53eb1c87be925d64e75ea01eca74f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.0-gog2.0.0.15' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pandemonium' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.bat *.cnf *.dll *.exe' CONTENT_GAME_DATA_FILES=' *.pkg' APP_MAIN_EXE='pandy.exe' APP_MAIN_ICON='gfw_high.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" ## Rename some shipped files. mv 'pandy3.exe' 'pandy.exe' mv 'full3.cnf' 'resource.cnf' ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-papo-and-yo.sh0000755000000000000000000000557014471751340014313 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Papo and Yo # send your bug reports to bugs@dotslashplay.it ### script_version=20250312.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='papo-and-yo' GAME_NAME='Papo and Yo' ARCHIVE_BASE_0_NAME='PapoYo_linux_1389070953.sh' ARCHIVE_BASE_0_MD5='d8222b87222f4eb05025584bf923da41' ARCHIVE_BASE_0_SIZE='2000000' ARCHIVE_BASE_0_VERSION='2014010601-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/papo-yo' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_RELATIVE_PATH='x86/Binaries/Linux/lib' CONTENT_LIBS_BIN_FILES=' libPhysXCooking.so libPhysXCore.so libtcmalloc.so.0' ## The game binary is linked against libsteam_api.so, ## so this library can not be omitted. CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libsteam_api.so" CONTENT_GAME_BIN_RELATIVE_PATH='x86' CONTENT_GAME_BIN_FILES=' Binaries/Linux/steam_appid.txt Binaries/Linux/PYGame-Linux' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' Engine PYGame PapoYoIcon.bmp PapoYoIcon.png' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' about.html BuildVersion.txt README.linux UpdateLog.txt' APP_MAIN_EXE='Binaries/Linux/PYGame-Linux' APP_MAIN_ICON='noarch/PapoYoIcon.png' ## Prevent a game crash when using the wayland backend of SDL APP_MAIN_PRERUN=' # Prevent a game crash when using the wayland backend of SDL if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd Binaries/Linux ./PYGame-Linux "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-pid.sh0000755000000000000000000000364314471751340012742 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Pid # send your bug reports to bugs@dotslashplay.it ### script_version=20251210.3 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='pid-game' GAME_NAME='Pid' ARCHIVE_BASE_1_NAME='setup_pid_gog-1_(18421).exe' ARCHIVE_BASE_1_MD5='d6cd6899df3b2ad13071f58d0362ab3a' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1300000' ARCHIVE_BASE_1_VERSION='1.0-gog18421' ARCHIVE_BASE_1_URL='https://www.gog.com/game/pid' ARCHIVE_BASE_0_NAME='setup_pid_2.2.0.8.exe' ARCHIVE_BASE_0_MD5='02ebb3db7572b1e6c28dce439a76df9a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='1.0-gog2.2.0.8' UNITY3D_NAME='pid' CONTENT_PATH_DEFAULT='app' USER_PERSISTENT_DIRECTORIES=' saves' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-pikuniku.sh0000755000000000000000000000417714471751340014030 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 BetaRays # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Pikuniku # send your bug reports to bugs@dotslashplay.it ### script_version=20240615.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='pikuniku' GAME_NAME='Pikuniku' ARCHIVE_BASE_0_NAME='Pikuniku_Linux.zip' ARCHIVE_BASE_0_MD5='93faafa1fe66c8038c61c87364caf121' ARCHIVE_BASE_0_SIZE='342205' ARCHIVE_BASE_0_VERSION='1.0.5-itch' ARCHIVE_BASE_0_URL='https://devolverdigital.itch.io/pikuniku' UNITY3D_NAME='Pikuniku' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pinstripe.sh0000755000000000000000000000502314471751340014175 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Pinstripe # send your bug reports to bugs@dotslashplay.it ### script_version=20260522.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='pinstripe' GAME_NAME='Pinstripe' ARCHIVE_BASE_0_NAME='pinstripe_en_2_0_2_21609.sh' ARCHIVE_BASE_0_MD5='369f761e1cb1159838a2ae8f82313a92' ARCHIVE_BASE_0_SIZE='1450210' # 2.1.0 is the correct game version, 2_0_2 in the installer name does not mean anything. ARCHIVE_BASE_0_VERSION='2.1.0-gog21609' ARCHIVE_BASE_0_URL='https://www.gog.com/game/pinstripe' UNITY3D_NAME='Pinstripe' UNITY3D_PLUGINS=' ScreenSelector.so' # Crash on starting/continuing a game session if libCSteamworks.so is missing # System.DllNotFoundException: CSteamworks # at (wrapper managed-to-native) Steamworks.NativeMethods:SteamAPI_RestartAppIfNecessary (Steamworks.AppId_t) # at Steamworks.SteamAPI.RestartAppIfNecessary (AppId_t unOwnAppID) [0x00000] in :0 # at SteamManager.Awake () [0x00000] in :0 UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so" # libCSteamworks.so requirements UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-prince-of-persia-2008.sh0000755000000000000000000001553314471751340015721 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Prince of Persia (2008) # send your bug reports to bugs@dotslashplay.it ### script_version=20260523.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='prince-of-persia-2008' GAME_NAME='Prince of Persia' ARCHIVE_BASE_0_NAME='setup_prince_of_persia_1.0_v2_(28572).exe' ARCHIVE_BASE_0_MD5='65143fe6dfb653d5fa95bb79c8022630' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_prince_of_persia_1.0_v2_(28572)-1.bin' ARCHIVE_BASE_0_PART1_MD5='caab8ceb59b30c75533ebd29ccd7a199' ARCHIVE_BASE_0_PART2_NAME='setup_prince_of_persia_1.0_v2_(28572)-2.bin' ARCHIVE_BASE_0_PART2_MD5='ddc7e15fd6daf47e3085e2c66a4ca6cd' ARCHIVE_BASE_0_SIZE='8237644' ARCHIVE_BASE_0_VERSION='1.0-gog28572' ARCHIVE_BASE_0_URL='https://www.gog.com/game/prince_of_persia' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' Support Prince of Persia.exe' CONTENT_GAME0_BIN_FILES=' Launcher/regvs.cmd Launcher/Launcher.exe Launcher/gameinterpreters_rd.intr Launcher/directxtests_rd.tst Launcher/systemtests_rd.tst PrinceOfPersia_Launcher.exe' # TODO: Check is the following directory is required. CONTENT_GAME1_BIN_FILES=' Support' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME2_BIN_FILES=' Launcher/detectionapi_rd.dll Launcher/directx9tests_rd.dll Launcher/local.dll binkw32.dll eax.dll' CONTENT_GAME_L10N_FR_FILES=' Launcher/localization/FR/interpreter_local.ini Resources/fr/GameUpdate.fr Videos/fre DataPC_StreamedSoundsFre.forge' CONTENT_GAME_L10N_EN_FILES=' Launcher/localization/EN/interpreter_local.ini Resources/us/GameUpdate.us DataPC_StreamedSoundsEng.forge' CONTENT_GAME_DATA_FILES=' Videos/ArtGallery.bik Videos/ArtGallery_CityofLight.bik Videos/ArtGallery_DesertTemple.bik Videos/ArtGallery_RoyalePalace.bik Videos/ArtGallery_RuinedCitadel.bik Videos/ArtGallery_Vale.bik Videos/AttractMode.bik Videos/ComboList.bik Videos/Controls.bik Videos/Credits.bik Videos/DE1_001_CINV_GameIntro.bik Videos/Display.bik Videos/Extras.bik Videos/LoadGame.bik Videos/MainMenuE3.bik Videos/Options.bik Videos/SkinsManager.bik Videos/Sound.bik Videos/StartScreenE3.bik Videos/Ubi_Logo.bik Videos/VideoBlack.bik Videos/Vision1.bik Videos/Vision2.bik Videos/Vision3.bik Videos/Vision4.bik Videos/Vision5.bik ekshaderspccompress.bin DataPC.forge DataPC_Default.forge DataPC_DE.forge DataPC_Ext.forge DataPC_HC.forge DataPC_JCT.forge DataPC_lod.forge DataPC_LR.forge DataPC_OB.forge DataPC_POP0WORLD_Ext.forge DataPC_POP0WORLD.forge DataPC_RC.forge DataPC_StreamedSounds.forge' CONTENT_DOC_DATA_FILES=' ubisoft.html manual.pdf ReadMe.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Prince of Persia' # Set mandatory registry keys and default settings. install_dir='C:\\'"${GAME_ID}" executable="${install_dir}"'\\PrinceOfPersia_Launcher.exe' exec_path="${install_dir}"'\\Prince of Persia.exe' WINE_REGISTRY_INIT=' [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia] "Executable"='"${executable}"'" "InstallDir"="'"${install_dir}"'" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\GameUpdate] "execPath"="'"${exec_path}"'" "info"="08a0f1c01d540ee143f7ee48a91898fa" "installdir"="'"${install_dir}"'" [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Engine] "AlternateVerticalSync"=dword:00000001 "AlternateVerticalSyncThreshold"=dword:00000000 "Antialiasing"=dword:00000000 "AspectRatioOverride"=dword:000000a6 "DegradedTextures"=dword:00000000 "ParticleEffectNumber"=dword:00000064 "PostEffects"=dword:00000002 "ScreenResolutionHeight"=dword:00000300 "ScreenResolutionWidth"=dword:00000500 "Shadows"=dword:00000002 "VerticalSync"=dword:00000001 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Launcher] "AspectRatioOverrideCHKB"=dword:00000000 "DefaultSetting"=dword:00000001 "LauncherVersion"=dword:00000004 "Texture_lvl"=dword:00000001 "VerticalSync_lvl"=dword:00000001 "VisualQualityLvl"=dword:00000002 ' WINE_REGISTRY_INIT_L10N_FR="$WINE_REGISTRY_INIT"' [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia] "Language"="French" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\GameUpdate] "language"="fr" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\1.0\Engine] "LNG_Language"=dword:00000002 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Launcher] "LNG_Language"=dword:00000002 ' WINE_REGISTRY_INIT_L10N_EN="$WINE_REGISTRY_INIT"' [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia] "Language"="English" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\GameUpdate] "language"="us" [HKEY_LOCAL_MACHINE\Software\Ubisoft\Prince of Persia\1.0\Engine] "LNG_Language"=dword:00000001 [HKEY_CURRENT_USER\Software\Ubisoft\Prince of Persia\1.0\Launcher] "LNG_Language"=dword:00000001 ' # The dedicated settings program requires mfc80u.dll. WINE_WINETRICKS_VERBS='mfc80' APP_MAIN_EXE='Prince of Persia.exe' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="$GAME_NAME - Configuration" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='Launcher/Launcher.exe' APP_SETTINGS_ICON='Prince of Persia.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N_FR PKG_L10N_EN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_EN_DESCRIPTION='English localisation' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write localisation-specific initial registry scripts. for package in \ 'PKG_L10N_FR' \ 'PKG_L10N_EN' do ( set_current_package "$package" wine_registry_script_write "$package" ) done # Prevent an override of the above scripts. wine_registry_script_write() { return 0; } # Write launchers. launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_fr='française' lang_en='anglaise' ;; ('en'|*) lang_string='%s version:' lang_fr='French' lang_en='English' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_FR' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_EN' # Clean up. working_directory_cleanup exit 0 games/play-project-feline.sh0000755000000000000000000000473414471751340015076 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Project Feline # send your bug reports to bugs@dotslashplay.it ### script_version=20240504.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='project-feline' GAME_NAME='Project Feline' ## This game archive used to be available from itch.io, ## but the developer decided to drop Linux support. ARCHIVE_BASE_0_NAME='feline-linux.zip' ARCHIVE_BASE_0_MD5='5d59dd8b486c250f7ee918d31fee3c69' ARCHIVE_BASE_0_SIZE='870000' ARCHIVE_BASE_0_VERSION='0.10.0-itch.2020.12.13' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='project-feline_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='a92f62d8bc80aa93c7d69ca1021f677a' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/project-feline/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 256x256' UNREALENGINE4_NAME='Feline' CONTENT_PATH_DEFAULT='Feline_0.10.0_Linux' CONTENT_LIBS_BIN_PATH='Feline_0.10.0_Linux/Engine/Binaries/ThirdParty/PhysX3/Linux/x86_64-unknown-linux-gnu' CONTENT_LIBS_BIN_FILES=' libAPEX_ClothingPROFILE.so libApexCommonPROFILE.so libApexFrameworkPROFILE.so libAPEX_LegacyPROFILE.so libApexSharedPROFILE.so libNvParameterizedPROFILE.so libRenderDebugPROFILE.so' APP_MAIN_EXE='Feline/Binaries/Linux/Feline' USER_PERSISTENT_DIRECTORIES=' Feline/Saved/Config' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-psychonauts.sh0000755000000000000000000001077114471751340014546 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # Psychonauts # send your bug reports to bugs@dotslashplay.it ### script_version=20251015.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='psychonauts' GAME_NAME='Psychonauts' ARCHIVE_BASE_0_NAME='gog_psychonauts_2.0.0.4.sh' ARCHIVE_BASE_0_MD5='7fc85f71494ff5d37940e9971c0b0c55' ARCHIVE_BASE_0_SIZE='5200000' ARCHIVE_BASE_0_VERSION='1.04-gog2.0.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/psychonauts' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Psychonauts DisplaySettings.ini' CONTENT_GAME_L10N_FR_FILES=' WorkResource/Localization/French WorkResource/Sounds/French' CONTENT_GAME_L10N_DE_FILES=' WorkResource/Localization/German WorkResource/Sounds/German' ## Because of the Sounds/*voice.isb pattern matching Sounds/*/*voice.isb, ## the English localisation package must be prepared last. CONTENT_GAME_L10N_EN_FILES=' WorkResource/Localization/English WorkResource/Sounds/*voice.isb' CONTENT_GAME_DATA_FILES=' WorkResource/cutscenes WorkResource/Fonts WorkResource/PCLevelPackFiles WorkResource/PixelShaders WorkResource/SAVEDGAMES WorkResource/Scripts WorkResource/Textures WorkResource/VertexShaders WorkResource/Localization/Nonsense WorkResource/Localization/localstrings.str WorkResource/Sounds/cagpfx_night.isb WorkResource/Sounds/*fx.isb WorkResource/Sounds/*fxmem.isb WorkResource/Sounds/*music.isb WorkResource/Sounds/*.icb icon.bmp PsychonautsData2.pkg psychonauts.png' CONTENT_DOC_L10N_EN_RELATIVE_PATH='Documents/Readmes' CONTENT_DOC_L10N_EN_FILES=' ReadMe.txt' CONTENT_DOC_L10N_FR_RELATIVE_PATH='Documents/Readmes' CONTENT_DOC_L10N_FR_FILES=' LisezMoi.txt' CONTENT_DOC_L10N_DE_RELATIVE_PATH='Documents/Readmes' CONTENT_DOC_L10N_DE_FILES=' LiesMich.txt' CONTENT_DOC_DATA_PATH='data/noarch/docs' CONTENT_DOC_DATA_FILES=' Psychonauts Manual Win.pdf' APP_MAIN_EXE='Psychonauts' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_PNG APP_MAIN_ICON_BMP' APP_MAIN_ICON_PNG='psychonauts.png' APP_MAIN_ICON_BMP='icon.bmp' PACKAGES_LIST=' PKG_BIN PKG_L10N_FR PKG_L10N_DE PKG_L10N_EN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL-1.2.so.0 libstdc++.so.6' PKG_L10N_ID="${GAME_ID}-l10n" PKG_L10N_FR_ID="${PKG_L10N_ID}-fr" PKG_L10N_DE_ID="${PKG_L10N_ID}-de" PKG_L10N_EN_ID="${PKG_L10N_ID}-en" PKG_L10N_PROVIDES=" $PKG_L10N_ID" PKG_L10N_FR_DESCRIPTION='French localisation' PKG_L10N_DE_DESCRIPTION='German localisation' PKG_L10N_EN_DESCRIPTION='English localisation' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrade from pre-20211124.2 packages PKG_DATA_PROVIDES=' psychonauts-sounds' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Create localisation setting file. cat > "$(package_path 'PKG_L10N_FR')$(path_game_data)/Psychonauts.ini" << EOF language french EOF cat > "$(package_path 'PKG_L10N_DE')$(path_game_data)/Psychonauts.ini" << EOF language german EOF cat > "$(package_path 'PKG_L10N_EN')$(path_game_data)/Psychonauts.ini" << EOF language english EOF # Write launchers. launchers_generation # Build packages. packages_generation case "$(messages_language)" in ('fr') lang_string='version %s :' lang_fr='française' lang_de='allemande' lang_en='anglaise' ;; ('en'|*) lang_string='%s version:' lang_fr='French' lang_de='German' lang_en='English' ;; esac printf '\n' printf "$lang_string" "$lang_fr" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_FR' printf "$lang_string" "$lang_de" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_DE' printf "$lang_string" "$lang_en" print_instructions 'PKG_BIN' 'PKG_DATA' 'PKG_L10N_EN' # Clean up. working_directory_cleanup exit 0 games/play-puddle.sh0000755000000000000000000000506014471751340013436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Puddle # send your bug reports to bugs@dotslashplay.it ### script_version=20240501.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='puddle' GAME_NAME='Puddle' ARCHIVE_BASE_0_NAME='setup_puddle_2.1.0.6.exe' ARCHIVE_BASE_0_MD5='e1773a7bd360125ad67ce864963be586' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.6' ARCHIVE_BASE_0_SIZE='700000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/puddle' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' *.exe *.dll' CONTENT_GAME_DATA_FILES=' data de es fr it' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Puddle' WINE_WINEPREFIX_TWEAKS='mono' APP_MAIN_EXE='puddle.exe' APP_MAIN_ICON='puddle.exe' APP_SETTINGS_ID="${GAME_ID}-settings" APP_SETTINGS_NAME="$GAME_NAME - Settings" APP_SETTINGS_CAT='Settings' APP_SETTINGS_EXE='launcher.exe' APP_SETTINGS_ICON='puddle.exe' ## Type must be set explicitly, ## or it will be wrongly identified as a Mono application. APP_SETTINGS_TYPE='wine' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Automatically spawn game settings window on first launch ## Using desktop_field_exec here ensures that we get a path already escaped if required. settings_cmd=$(desktop_field_exec 'APP_SETTINGS') APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Automatically spawn game settings window on first launch settings_file="${WINEPREFIX}/drive_c/users/${USER}/Documents/Puddle/Settings.dat" if [ ! -e "$settings_file" ]; then '"${settings_cmd}"' exit 0 fi' # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-rogue-legacy.sh0000755000000000000000000000747614471751340014561 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2018 BetaRays set -o errexit ### # Rogue Legacy # send your bug reports to bugs@dotslashplay.it ### script_version=20240831.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='rogue-legacy' GAME_NAME='Rogue Legacy' ARCHIVE_BASE_GOG_1_NAME='rogue_legacy_en_1_4_0_22617.sh' ARCHIVE_BASE_GOG_1_MD5='60a1a7a7ff84a50e2ac52f2e44dce92d' ARCHIVE_BASE_GOG_1_SIZE='366454' ARCHIVE_BASE_GOG_1_VERSION='1.4.0-gog22617' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/rogue_legacy' ARCHIVE_BASE_GOG_0_NAME='gog_rogue_legacy_2.0.0.2.sh' ARCHIVE_BASE_GOG_0_MD5='1b99d6122f0107b420cad9547efefc5e' ARCHIVE_BASE_GOG_0_SIZE='240000' ARCHIVE_BASE_GOG_0_VERSION='1.2.0b-gog2.0.0.2' ARCHIVE_BASE_HUMBLE_0_NAME='roguelegacy-12282013-bin' ARCHIVE_BASE_HUMBLE_0_MD5='b2a18745b911ed87a048440c2f8a0404' ARCHIVE_BASE_HUMBLE_0_SIZE='240000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.2.0b-humble131228' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/rogue-legacy' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_LIBS_FILES=' libmojoshader.so' ## The shipped build of OpenAL must be used to prevent a crash on launch CONTENT_LIBS_FILES="$CONTENT_LIBS_FILES libopenal.so.1" CONTENT_LIBS_LIBS64_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib64" CONTENT_LIBS_LIBS64_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH_GOG="${CONTENT_PATH_DEFAULT_GOG}/lib" CONTENT_LIBS_LIBS32_PATH_HUMBLE="${CONTENT_PATH_DEFAULT_HUMBLE}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' RogueLegacy.exe RogueCastle.exe Rogue Legacy.bmp Content mono* DS2DEngine.dll FNA.dll FNA.dll.config InputSystem.dll SpriteSystem.dll Tweener.dll' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE_GOG='RogueLegacy.exe' APP_MAIN_EXE_GOG_0='RogueCastle.exe' APP_MAIN_EXE_HUMBLE='RogueCastle.exe' APP_MAIN_ICON='Rogue Legacy.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Xml.dll System.Xml.Linq.dll' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS_DESCRIPTION='shipped libraries' PKG_LIBS64_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS32_DESCRIPTION="$PKG_LIBS_DESCRIPTION" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libpthread.so.0 librt.so.1' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-scarf.sh0000755000000000000000000000600014471751340013252 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Scarf # send your bug reports to bugs@dotslashplay.it ### script_version=20251011.6 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='scarf' GAME_NAME='Scarf' ARCHIVE_BASE_0_NAME='setup_scarf_1.1_(64bit)_(53216).exe' ARCHIVE_BASE_0_MD5='128b44bb5ba007934e91ad2a0ff6f693' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_scarf_1.1_(64bit)_(53216)-1.bin' ARCHIVE_BASE_0_PART1_MD5='ef5faab9ebab9772dd159d5cafde0311' ARCHIVE_BASE_0_PART2_NAME='setup_scarf_1.1_(64bit)_(53216)-2.bin' ARCHIVE_BASE_0_PART2_MD5='e388bd53a584a6bb9e58ae9b4af0b3b4' ARCHIVE_BASE_0_PART3_NAME='setup_scarf_1.1_(64bit)_(53216)-3.bin' ARCHIVE_BASE_0_PART3_MD5='000370e5c0bac838f8f50f9b2cfc3f18' ARCHIVE_BASE_0_PART4_NAME='setup_scarf_1.1_(64bit)_(53216)-4.bin' ARCHIVE_BASE_0_PART4_MD5='761da3606e1e2dfa741b5e8be51cd9f3' ARCHIVE_BASE_0_SIZE='14000000' ARCHIVE_BASE_0_VERSION='1.1-gog53216' ARCHIVE_BASE_0_URL='https://www.gog.com/game/scarf' UNREALENGINE4_NAME='scarf' CONTENT_PATH_DEFAULT='.' HUGE_FILES_DATA=" ${UNREALENGINE4_NAME}/content/paks/${UNREALENGINE4_NAME}-windowsnoeditor.pak" APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" ## Override the default wrestool options for Unreal Engine 4 games. APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrades from pre-20251011.5 packages PKG_DATA_PROVIDES=' scarf-movies' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Delete unused debug symbols. find "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" -type f -name '*.pdb' -delete ## Delete unused UE Prerequisites installer. rm --recursive "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/engine/extras" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Do not install the Visual C++ Runtime, as it triggers a loop of UE Prerequisites install on launch. unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-seasons-after-fall.sh0000755000000000000000000000341714471751340015653 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Seasons After Fall # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='seasons-after-fall' GAME_NAME='Seasons After Fall' ARCHIVE_BASE_0_NAME='setup_seasons_after_fall_26129_(30224).exe' ARCHIVE_BASE_0_MD5='f7207d11fe8483d428d23ca4b62615d1' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='4100000' ARCHIVE_BASE_0_VERSION='26129-gog30224' ARCHIVE_BASE_0_URL='https://www.gog.com/game/seasons_after_fall' UNITY3D_NAME='seasons after fall' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Saved Games/Seasons after Fall' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shantae-and-the-pirates-curse.sh0000755000000000000000000000364414471751340017714 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2022 Mopi set -o errexit ### # Shantae and the Pirate's Curse # send your bug reports to bugs@dotslashplay.it ### script_version=20240706.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='shantae-and-the-pirates-curse' GAME_NAME='Shantae and the Pirateʼs Curse' ARCHIVE_BASE_0_NAME='setup_shantae_and_the_pirates_curse_1.04g_(18994).exe' ARCHIVE_BASE_0_MD5='66e16f3a97328c2ba08c19a64d88c16c' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='1.04g-gog18994' ARCHIVE_BASE_0_URL='https://www.gog.com/game/shantae_and_the_pirates_curse' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=" shantae and the pirate's curse.exe" CONTENT_GAME_DATA_FILES=' shantaecurse.data' USER_PERSISTENT_FILES=' options.txt *.save' APP_MAIN_EXE="shantae and the pirate's curse.exe" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-shovel-knight.sh0000755000000000000000000000435714471751340014753 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Shovel Knight # send your bug reports to bugs@dotslashplay.it ### script_version=20260519.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='shovel-knight' GAME_NAME='Shovel Knight: Treasure Trove' ARCHIVE_BASE_0_NAME='shovel_knight_treasure_trove_4_1b_arby_s_46298.sh' ARCHIVE_BASE_0_MD5='2f5e07e20ac615eb248ab81c25974d53' ARCHIVE_BASE_0_SIZE='500000' ARCHIVE_BASE_0_VERSION='4.1b-gog46298' ARCHIVE_BASE_0_URL='https://www.gog.com/game/shovel_knight' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='64' # TODO: An explicit list of libraries should be set. CONTENT_LIBS_BIN_FILES=' *' CONTENT_GAME_BIN_RELATIVE_PATH='64' CONTENT_GAME_BIN_FILES=' ShovelKnight' CONTENT_GAME_DATA_FILES=' data' # TODO: Check if these documentation files are actually related to the game itself. CONTENT_DOC_DATA_PATH='data/noarch/docs' CONTENT_DOC_DATA_FILES=' *.txt' APP_MAIN_EXE='ShovelKnight' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' # TODO: The list of required native libraries might not be complete. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libGL.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-space-tail.sh0000755000000000000000000000726514471751340014214 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Space Tail # send your bug reports to bugs@dotslashplay.it ### script_version=20250616.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='space-tail' GAME_NAME='Space Tail: Every Journey Leads Home' # Archives ## Native Linux build ARCHIVE_BASE_LINUX_0_NAME='space_tail_every_journey_leads_home_1_0_2r9_61068.sh' ARCHIVE_BASE_LINUX_0_MD5='c267a2e1ef94cde68487e41cd3a4bbcf' ARCHIVE_BASE_LINUX_0_SIZE='7700000' ARCHIVE_BASE_LINUX_0_VERSION='1.0.2r9-gog61068' ARCHIVE_BASE_LINUX_0_URL='https://www.gog.com/game/space_tail_every_journey_leads_home' ## Windows build ### This is useful for users of nVIDIA non-free graphics driver, ### as the native Linux build suffers from rendering issues with this driver. ARCHIVE_BASE_WINDOWS_0_NAME='setup_space_tail_every_journey_leads_home_1.0.2r9_(64bit)_(61065).exe' ARCHIVE_BASE_WINDOWS_0_MD5='5683d3493606fb5a2a60d9416e79c28d' ARCHIVE_BASE_WINDOWS_0_TYPE='innosetup' ARCHIVE_BASE_WINDOWS_0_PART1_NAME='setup_space_tail_every_journey_leads_home_1.0.2r9_(64bit)_(61065)-1.bin' ARCHIVE_BASE_WINDOWS_0_PART1_MD5='3183c4b2d5db7c462a266e41ad683720' ARCHIVE_BASE_WINDOWS_0_SIZE='7800000' ARCHIVE_BASE_WINDOWS_0_VERSION='1.0.2r9-gog61065' ARCHIVE_BASE_WINDOWS_0_URL='https://www.gog.com/game/space_tail_every_journey_leads_home' UNITY3D_NAME_LINUX='Space Tail' UNITY3D_NAME_WINDOWS='space tail' UNITY3D_PLUGINS=' libfmodstudio.so libresonanceaudio.so' ## The game crashes on launch if the Steam library is not available. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-} libsteam_api.so" CONTENT_PATH_DEFAULT_LINUX='data/noarch/game' CONTENT_PATH_DEFAULT_WINDOWS='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Enjoy Studio/Space Tail' # Packages PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ID="$GAME_ID" PKG_BIN_PROVIDES=" $PKG_BIN_ID" PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_PROVIDES=" $PKG_DATA_ID" PKG_DATA_DESCRIPTION='data' ## Native Linux build PKG_BIN_ID_LINUX="${GAME_ID}-linux" PKG_BIN_DEPENDENCIES_LIBRARIES_LINUX=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' PKG_DATA_ID_LINUX="${GAME_ID}-linux-data" ## Windows build PKG_BIN_ID_WINDOWS="${GAME_ID}-windows" PKG_DATA_ID_WINDOWS="${GAME_ID}-windows-data" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## Native Linux build - Link libresonanceaudio.so in the game data path, ## the game engine fails to find it otherwise. case "$(current_archive)" in ('ARCHIVE_BASE_LINUX_'*) library_destination="$(package_path 'PKG_BIN')$(path_game_data)/$(unity3d_name)_Data/Plugins" mkdir --parents "$library_destination" ln --symbolic "$(path_libraries)/libresonanceaudio.so" "$library_destination" ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-spelunky.sh0000755000000000000000000000345714471751340014043 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Spelunky # send your bug reports to bugs@dotslashplay.it ### script_version=20240701.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='spelunky' GAME_NAME='Spelunky' ARCHIVE_BASE_0_NAME='setup_spelunky_2.1.0.9.exe' ARCHIVE_BASE_0_MD5='bff7c275053137881c9f2f6df16ee4b3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='180000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.9' ARCHIVE_BASE_0_URL='https://www.gog.com/game/spelunky' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' fmodex.dll spelunky.exe' CONTENT_GAME_DATA_FILES=' data' USER_PERSISTENT_FILES=' data/config.txt data/spelunky_save.sav data/spelunky_save.bak' APP_MAIN_EXE='spelunky.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-spiritfarer.sh0000755000000000000000000000765214471751340014524 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Spiritfarer # send your bug reports to bugs@dotslashplay.it ### script_version=20250630.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='spiritfarer' GAME_NAME='Spiritfarer' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_4_NAME='spiritfarer_35325c_linux_60321.sh' ARCHIVE_BASE_4_MD5='6c01cdd8cd04d23b46153367682722fb' ARCHIVE_BASE_4_SIZE='6308582' ARCHIVE_BASE_4_VERSION='35325c-gog60321' ARCHIVE_BASE_4_URL='https://www.gog.com/game/spiritfarer' ARCHIVE_BASE_3_NAME='spiritfarer_35325c_linux_54594.sh' ARCHIVE_BASE_3_MD5='39f342a2616f42406e8fd4d3f4576acb' ARCHIVE_BASE_3_SIZE='6400000' ARCHIVE_BASE_3_VERSION='35325c-gog54594' ARCHIVE_BASE_1_NAME='spiritfarer_32698_linux_42758.sh' ARCHIVE_BASE_1_MD5='2f1c327bd020676eabd78f99124a786f' ARCHIVE_BASE_1_SIZE='6900000' ARCHIVE_BASE_1_VERSION='32698-gog42758' ARCHIVE_BASE_0_NAME='spiritfarer_32513_linux_41748.sh' ARCHIVE_BASE_0_MD5='8e6e49ce7e7571091f91d82706d2df8e' ARCHIVE_BASE_0_SIZE='6900000' ARCHIVE_BASE_0_VERSION='32513-gog41748' ARCHIVE_BASE_DEMO_0_NAME='spiritfarer_demo_demo_20200525a_linux_38575.sh' ARCHIVE_BASE_DEMO_0_MD5='952e425281143b061462e9122e638531' ARCHIVE_BASE_DEMO_0_SIZE='2782689' ARCHIVE_BASE_DEMO_0_VERSION='2020.05.25-gog38575' ARCHIVE_BASE_DEMO_0_URL='https://www.gog.com/game/spiritfarer_demo' UNITY3D_NAME='spiritfarer' UNITY3D_NAME_DEMO='Spiritfarer' UNITY3D_PLUGINS_DEMO=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_DEMO=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_ID_DEMO="${GAME_ID_DEMO}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default if archive_is_available 'ARCHIVE_MISSING_PLUGINS'; then archive_extraction 'ARCHIVE_MISSING_PLUGINS' fi ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Enforce a consistent Unity3D name. unity3d_name=$(unity3d_name) alternative_name='Spiritfarer' ## Old builds ship the binary with a .exe file extension. if [ -e "${alternative_name}.exe" ]; then mv "${alternative_name}.exe" "${unity3d_name}.x86_64" mv "${alternative_name}_Data" "${unity3d_name}_Data" fi # Drop unused Steam and/or Galaxy libraries. case "$(current_archive)" in ## No deletion required for the demo, ## it is already handled through UNITY3D_PLUGINS. ('ARCHIVE_BASE_DEMO_'*) ;; (*) rm --force --recursive "${unity3d_name}_Data/Plugins" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-steamworld-dig-series.sh0000755000000000000000000000674714471751340016410 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # SteamWorld Dig series: # - SteamWorld Dig # - SteamWorld Dig 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20251024.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID_DIG1='steamworld-dig-1' GAME_NAME_DIG1='SteamWorld Dig: A Fistful of Dirt' GAME_ID_DIG2='steamworld-dig-2' GAME_NAME_DIG2='SteamWorld Dig 2' ARCHIVE_BASE_DIG1_GOG_0_NAME='gog_steamworld_dig_2.0.0.7.sh' ARCHIVE_BASE_DIG1_GOG_0_MD5='2f2ed68e00f151ff3c4d0092d8d6b15b' ARCHIVE_BASE_DIG1_GOG_0_SIZE='79000' ARCHIVE_BASE_DIG1_GOG_0_VERSION='1.10-gog2.0.0.7' ARCHIVE_BASE_DIG1_GOG_0_URL='https://www.gog.com/game/steamworld_dig' ARCHIVE_BASE_DIG1_HUMBLE_0_NAME='SteamWorldDig_linux_1393468453.tar.gz' ARCHIVE_BASE_DIG1_HUMBLE_0_MD5='de6ff6273c4e397413d852472d51e788' ARCHIVE_BASE_DIG1_HUMBLE_0_SIZE='77000' ARCHIVE_BASE_DIG1_HUMBLE_0_VERSION='1.10-humble140220' ARCHIVE_BASE_DIG1_HUMBLE_0_URL='https://www.humblebundle.com/store/steamworld-dig' ARCHIVE_BASE_DIG2_0_NAME='steamworld_dig_2_en_1_1_15062.sh' ARCHIVE_BASE_DIG2_0_MD5='baafa458aaef7fc9c80e076d48e754f0' ARCHIVE_BASE_DIG2_0_SIZE='220000' ARCHIVE_BASE_DIG2_0_VERSION='1.1-gog15062' ARCHIVE_BASE_DIG2_0_URL='https://www.gog.com/game/steamworld_dig' CONTENT_PATH_DEFAULT_DIG1_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_DIG1_HUMBLE='SteamWorldDig' CONTENT_PATH_DEFAULT_DIG2='data/noarch/game' CONTENT_GAME_BIN_FILES_DIG1=' SteamWorldDig' CONTENT_GAME_BIN_FILES_DIG2=' Dig2' CONTENT_GAME_DATA_FILES=' Bundle BundlePC icon.bmp icon.png' CONTENT_DOC_DATA_FILES=' Licenses readme.txt' APP_MAIN_ICON='icon.png' APP_MAIN_EXE_DIG1='SteamWorldDig' APP_MAIN_EXE_DIG2='Dig2' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_DIG1='32' PKG_BIN_ARCH_DIG2='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' PKG_DATA_ID_DIG1="${GAME_ID_DIG1}-data" PKG_DATA_ID_DIG2="${GAME_ID_DIG2}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Force the use of system-provided SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" ## Prevent a game crash when using the Wayland video backend of SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Prevent a game crash when using the Wayland video backend of SDL. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-steel-rats.sh0000755000000000000000000000403014471751340014240 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Steel Rats # send your bug reports to bugs@dotslashplay.it ### script_version=20240611.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='steel-rats' GAME_NAME='Steel Rats' ARCHIVE_BASE_0_NAME='setup_steel_ratstm_1.03_(64bit)_(27036).exe' ARCHIVE_BASE_0_MD5='95ebd3a66fd410645947c0e3b0ae1528' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_steel_ratstm_1.03_(64bit)_(27036)-1.bin' ARCHIVE_BASE_0_PART1_MD5='f1624fd9677468f45741dfa57f88a714' ARCHIVE_BASE_0_PART2_NAME='setup_steel_ratstm_1.03_(64bit)_(27036)-2.bin' ARCHIVE_BASE_0_PART2_MD5='a72af4b2e4d64ac63c1cbe59e73501f0' ARCHIVE_BASE_0_SIZE='5600000' ARCHIVE_BASE_0_VERSION='1.03-gog27036' ARCHIVE_BASE_0_URL='https://www.gog.com/game/steel_rats' UNREALENGINE4_NAME='steelrats' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sunblaze.sh0000755000000000000000000000342514471751340014007 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Sunblaze # send your bug reports to bugs@dotslashplay.it ### script_version=20250713.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='sunblaze' GAME_NAME='Sunblaze' ARCHIVE_BASE_0_NAME='setup_sunblaze_1.1.2.016_(64bit)_(48132).exe' ARCHIVE_BASE_0_MD5='85389b46e533fad6ec46188e17688798' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='300000' ARCHIVE_BASE_0_VERSION='1.1.2.016-gog48132' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sunblaze' UNITY3D_NAME='sunblaze' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Games From Earth/Sunblaze' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-sundered.sh0000755000000000000000000000447714471751340014005 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Hoël Bézier # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sundered # send your bug reports to bugs@dotslashplay.it ### script_version=20260521.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='sundered' GAME_NAME='Sundered' ARCHIVE_BASE_ITCH_0_NAME='sundered-linux.zip' ARCHIVE_BASE_ITCH_0_MD5='1be5d771f33fa95f3a567aef75314750' ARCHIVE_BASE_ITCH_0_SIZE='2439430' ARCHIVE_BASE_ITCH_0_VERSION='1.0-itch.2020.06.07' ARCHIVE_BASE_ITCH_0_URL='https://thunderlotus.itch.io/sundered' ARCHIVE_BASE_GOG_0_NAME='sundered_20190404_29317.sh' ARCHIVE_BASE_GOG_0_MD5='efd81d3e4b14d26cdef2362b888e0a56' ARCHIVE_BASE_GOG_0_SIZE='2500000' ARCHIVE_BASE_GOG_0_VERSION='20190404-gog23987' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/sundered' UNITY3D_NAME='Sundered' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT_ITCH='linux' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of unused 32-bit Mono libraries. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-super-meat-boy.sh0000755000000000000000000000604014471751340015031 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Super Meat Boy # send your bug reports to bugs@dotslashplay.it ### script_version=20250630.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='super-meat-boy' GAME_NAME='Super Meat Boy' ARCHIVE_BASE_0_NAME='supermeatboy-linux-11112013-bin' ARCHIVE_BASE_0_MD5='fc024d757395eebfdee342571671332b' ## This archive is a MojoSetup installer that is not using Makeself ARCHIVE_BASE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_0_SIZE='250899' ARCHIVE_BASE_0_VERSION='1.0-humble131111' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/super-meat-boy' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_FILES=' libmariadb.so.1' ## The game binary is linked against libsteam_api.so, ## so it can not be dropped. CONTENT_LIBS_BIN_FILES="$CONTENT_LIBS_BIN_FILES libsteam_api.so" CONTENT_LIBS_BIN64_RELATIVE_PATH='amd64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='x86' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_BIN_FILES" CONTENT_GAME_BIN64_FILES=' amd64/SuperMeatBoy' CONTENT_GAME_BIN32_FILES=' x86/SuperMeatBoy' CONTENT_GAME_DATA_FILES=' Levels resources buttonmap.cfg gameaudio.dat gamedata.dat supermeatboy.png locdb.txt steam_appid.txt' CONTENT_DOC_DATA_FILES=' README-licenses.txt README-linux.txt' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE_BIN64='amd64/SuperMeatBoy' APP_MAIN_EXE_BIN32='x86/SuperMeatBoy' APP_MAIN_ICON='supermeatboy.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-supercow.sh0000755000000000000000000000351014471751340014026 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 tyzef # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Supercow # send your bug reports to bugs@dotslashplay.it ### script_version=20250226.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='supercow' GAME_NAME='Supercow' ARCHIVE_BASE_0_NAME='Supercow.exe' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='78363' ARCHIVE_BASE_0_VERSION='1.0-1' ARCHIVE_BASE_0_URL='https://www.gametop.com/download-free-games/supercow/' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' wrapgame.exe *.dll' CONTENT_GAME_DATA_FILES=' data' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Super-Cow' APP_MAIN_EXE='wrapgame.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-symphonia.sh0000755000000000000000000000341414471751340014171 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Symphonia # send your bug reports to bugs@dotslashplay.it ### script_version=20241109.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='symphonia' GAME_NAME='Symphonia' ## The game currently available for sale from gog.com seems to be a different build of the same game ARCHIVE_BASE_0_NAME='setup_symphonia_v1.0_(64bit)_(48230).exe' ARCHIVE_BASE_0_MD5='fc24a67551022a8e7e8984814575af15' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='1.0-gog48230' UNITY3D_NAME='symphonia' CONTENT_PATH_DEFAULT='.' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tag-the-power-of-paint.sh0000755000000000000000000000444614471751340016366 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Tag: The Power of Paint # send your bug reports to bugs@dotslashplay.it ### script_version=20250627.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tag-the-power-of-paint' GAME_NAME='Tag: The Power of Paint' ARCHIVE_BASE_0_NAME='Tag_setup.exe' ARCHIVE_BASE_0_MD5='e46933ffbdc3fdf0816b3ebdd6c326d5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='80000' ARCHIVE_BASE_0_VERSION='1.0-digipen' ARCHIVE_BASE_0_URL='https://arcade.digipen.edu/games/tag-the-power-of-paint' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' fmodex.dll tag.exe' CONTENT_GAME_DATA_FILES=' assets game data' USER_PERSISTENT_FILES=' game data/*.ini game data/*.xml' ## Native d3dx9_35.dll is required to prevent a crash on launch: ## Unhandled exception: unimplemented function d3dx9_35.dll.D3DXComputeTangent called in 32-bit code (0x7b012866). ## (WINE 10.0) WINE_WINETRICKS_VERBS='d3dx9_35' ## Native d3dcompiler prevents some texture display problems. ## (WINE 10.0) WINE_WINETRICKS_VERBS="$WINE_WINETRICKS_VERBS d3dcompiler_47" APP_MAIN_EXE='tag.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-tandem-a-tale-of-shadows.sh0000755000000000000000000000354314471751340016646 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Tandem: A Tale of Shadows # send your bug reports to bugs@dotslashplay.it ### script_version=20240611.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='tandem-a-tale-of-shadows' GAME_NAME='Tandem: A Tale of Shadows' ARCHIVE_BASE_0_NAME='setup_tandem_a_tale_of_shadows_1.0.1.2_(50868).exe' ARCHIVE_BASE_0_MD5='ec0afb495e85d52304278eb216064dcf' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_tandem_a_tale_of_shadows_1.0.1.2_(50868)-1.bin' ARCHIVE_BASE_0_PART1_MD5='88942a26a5e530f17582eed63cf12a06' ARCHIVE_BASE_0_SIZE='4100000' ARCHIVE_BASE_0_VERSION='1.0.1.2-gog50868' ARCHIVE_BASE_0_URL='https://www.gog.com/game/tandem_a_tale_of_shadows' UNREALENGINE4_NAME='shadows' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE='shadows.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-teslagrad.sh0000755000000000000000000000461114471751340014130 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Teslagrad # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='teslagrad' GAME_NAME='Teslagrad' ARCHIVE_BASE_0_NAME='gog_teslagrad_2.1.0.4.sh' ARCHIVE_BASE_0_MD5='e9683e188615ddd341f8a95a2e8102ed' ARCHIVE_BASE_0_VERSION='1.4-gog2.1.0.4' ARCHIVE_BASE_0_SIZE='1555377' ARCHIVE_BASE_0_URL='https://www.gog.com/game/teslagrad' UNITY3D_NAME='Teslagrad' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game/Teslagrad_linux32_fullversion_1_4' CONTENT_GAME_BIN64_RELATIVE_PATH='../Teslagrad_linux64_fullversion_1_4' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-adventures-of-shuggy.sh0000755000000000000000000000624014471751340017026 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Adventures of Shuggy # send your bug reports to bugs@dotslashplay.it ### script_version=20240603.3 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='the-adventures-of-shuggy' GAME_NAME='The Adventures of Shuggy' ARCHIVE_BASE_0_NAME='gog_the_adventures_of_shuggy_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='7d031b4cbbbf88beb5bdaa077892215d' ARCHIVE_BASE_0_SIZE='109602' ARCHIVE_BASE_0_VERSION='1.10.10222015-gog2.0.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_adventures_of_shuggy' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_FILES=' libmojoshader.so libtheoraplay.so' ## The game audio does not work if the shipped build of OpenAL is not used. CONTENT_LIBS_FILES="$CONTENT_LIBS_FILES libopenal.so.1" CONTENT_LIBS_LIBS64_PATH="${CONTENT_PATH_DEFAULT}/lib64" CONTENT_LIBS_LIBS64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_LIBS32_PATH="${CONTENT_PATH_DEFAULT}/lib" CONTENT_LIBS_LIBS32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_MAIN_FILES=' deadunderground fx gateways gfx growingpains maps recordings sfx text video Shuggy.exe Shuggy.bmp GameFont.xnb FNA.dll FNA.dll.config Lidgren.Network.dll MonoGame.Framework.Net.dll SpriteSheetRuntime.dll' CONTENT_DOC_MAIN_FILES=' info.txt Linux.README' APP_MAIN_EXE='Shuggy.exe' APP_MAIN_ICON='Shuggy.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1 libSDL2-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll System.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Security.dll System.Xml.dll' ## Ensure easy upgrades from packages generated with pre-20240603.2 game scripts. PKG_MAIN_PROVIDES="${PKG_MAIN_PROVIDES:-} the-adventures-of-shuggy-data" PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libm.so.6 libogg.so.0 libpthread.so.0 librt.so.1 libtheoradec.so.1 libvorbis.so.0' PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_MAIN_DEPS="${PKG_MAIN_DEPS:-} $PKG_LIBS_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_MAIN' content_inclusion_default # Write launchers launchers_generation 'PKG_MAIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-deer-god.sh0000755000000000000000000000433114471751340014425 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Deer God # send your bug reports to bugs@dotslashplay.it ### script_version=20240806.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-deer-god' GAME_NAME='The Deer God' ARCHIVE_BASE_1_NAME='DeerGodBeta02.zip' ARCHIVE_BASE_1_MD5='84dda0d5e6708ddb5e7ceee307671f2c' ARCHIVE_BASE_1_SIZE='150000' ARCHIVE_BASE_1_VERSION='1.0~beta2-itch' ARCHIVE_BASE_1_URL='https://marumari.itch.io/the-deer-god' ARCHIVE_BASE_0_NAME='thedeergod_beta1.zip' ARCHIVE_BASE_0_MD5='e722cdbd4cc93c5d655735c6a1285cc0' ARCHIVE_BASE_0_SIZE='140000' ARCHIVE_BASE_0_VERSION='1.0~beta1-itch' ARCHIVE_BASE_0_URL='https://marumari.itch.io/the-deer-god' UNITY3D_NAME='DeerGodBeta' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Cinopt Studios LLC/The Deer God' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Enforce a consistent Unity3D name unity3d_name=$(unity3d_name) old_name='thedeergod_beta1' if [ -e "${old_name}.exe" ]; then mv "${old_name}.exe" "${unity3d_name}.exe" mv "${old_name}_Data" "${unity3d_name}_Data" fi ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-the-girl-and-the-robot.sh0000755000000000000000000000472014471751340016337 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Girl and the Robot # send your bug reports to bugs@dotslashplay.it ### script_version=20250612.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-girl-and-the-robot' GAME_NAME='The Girl and the Robot' ARCHIVE_BASE_0_NAME='thegirlandtherobot-linux-1.006.rar' ARCHIVE_BASE_0_MD5='032b2f06a6d272be6ace53e6cda16683' ARCHIVE_BASE_0_SIZE='2457873' ARCHIVE_BASE_0_VERSION='1.006-humble170727' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/the-girl-and-the-robot' UNITY3D_NAME='GirlAndRobot' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game fails to run if the Steam libraries are not included. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='LINUX' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTIOn='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-kings-bird.sh0000755000000000000000000000350714471751340014774 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 BetaRays # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The King's Bird # send your bug reports to bugs@dotslashplay.it ### script_version=20251011.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-kings-bird' GAME_NAME='The Kingʼs Bird' ARCHIVE_BASE_0_NAME='TheKingsBirdDRMFREE_v5.zip' ARCHIVE_BASE_0_MD5='fccb138fa993f1e983fcc6c08d1b0b96' ARCHIVE_BASE_0_SIZE='5400000' ARCHIVE_BASE_0_VERSION='5-itch' ARCHIVE_BASE_0_URL='https://graffiti-games.itch.io/the-kings-bird' UNITY3D_NAME='TheKingsBird' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/LocalLow/Serenity Forge/The King's Bird" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-the-smurfs-mission-vileaf.sh0000755000000000000000000000432514471751340017204 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Smurfs: Mission Vileaf # send your bug reports to bugs@dotslashplay.it ### script_version=20250903.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-smurfs-mission-vileaf' GAME_NAME='The Smurfs: Mission Vileaf' ARCHIVE_BASE_0_NAME='setup_the_smurfs_-_mission_vileaf_1.0.19.3_(68727).exe' ARCHIVE_BASE_0_MD5='086cdfa541244a81b9e00e3c55daad1b' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_smurfs_-_mission_vileaf_1.0.19.3_(68727)-1.bin' ARCHIVE_BASE_0_PART1_MD5='1f36f6b263cb1e983d8f6608e252671d' ARCHIVE_BASE_0_SIZE='5283712' ARCHIVE_BASE_0_VERSION='1.0.19.3-gog68727' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_smurfs_mission_vileaf' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' fmod.dll fmodstudio.dll libscepad.dll thesmurfsmissionvileaf.exe' ## thesmurfsmissionvileaf.exe is linked against Galaxy64.dll. CONTENT_GAME0_BIN_FILES=' galaxy64.dll' CONTENT_GAME_DATA_FILES=' smurfsresources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Saved Games/Smurfs' APP_MAIN_EXE='thesmurfsmissionvileaf.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-thomas-was-alone.sh0000755000000000000000000000366314471751340015347 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Thomas Was Alone # send your bug reports to bugs@dotslashplay.it ### script_version=20241127.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='thomas-was-alone' GAME_NAME='Thomas Was Alone' ## This DRM-free archive is no longer available for sale from Humble Bundle ARCHIVE_BASE_0_NAME='thomaswasalone-linux-1369349552.tar' ARCHIVE_BASE_0_MD5='e7f8e766188718e16880b1137c430f35' ARCHIVE_BASE_0_SIZE='242609' ARCHIVE_BASE_0_VERSION='1.0-humble1' UNITY3D_NAME='thomasWasAlone' CONTENT_PATH_DEFAULT='thomasLinuxStandalone' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-time-loader.sh0000755000000000000000000000352114471751340014363 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Time Loader # send your bug reports to bugs@dotslashplay.it ### script_version=20240807.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='time-loader' GAME_NAME='Time Loader' ARCHIVE_BASE_0_NAME='setup_time_loader_1.0.65_(53338).exe' ARCHIVE_BASE_0_MD5='3a2842ca85c3d20313a72d88615b8059' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_time_loader_1.0.65_(53338)-1.bin' ARCHIVE_BASE_0_PART1_MD5='0c4f4eccb554f3905f12e6fded25c7df' ARCHIVE_BASE_0_SIZE='3600000' ARCHIVE_BASE_0_VERSION='1.0.65-gog53338' ARCHIVE_BASE_0_URL='https://www.gog.com/game/time_loader' UNITY3D_NAME='time loader' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/FLAZM/Time Loader' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tiny-and-big.sh0000755000000000000000000000616714471751340014454 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 HS-157 # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Tiny & Big in Grandpa's Leftovers # send your bug reports to bugs@dotslashplay.it ### script_version=20260525.7 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='tiny-and-big' GAME_NAME='Tiny & Big in Grandpa’s Leftovers' ARCHIVE_BASE_GOG_0_NAME='tiny_and_big_grandpa_s_leftovers_en_1_4_2_15616.sh' ARCHIVE_BASE_GOG_0_MD5='bdcc1ea8366dedcfe00b50c439fd5ec9' ARCHIVE_BASE_GOG_0_SIZE='2400000' ARCHIVE_BASE_GOG_0_VERSION='1.4.2-gog15616' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/tiny_and_big_grandpas_leftovers' ARCHIVE_BASE_HUMBLE_0_NAME='tinyandbig_grandpasleftovers-retail-linux-1.4.1_1370968537.tar.bz2' ARCHIVE_BASE_HUMBLE_0_MD5='c6c2bc286f11e4a232211c5176105890' ARCHIVE_BASE_HUMBLE_0_SIZE='2400000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.4.1-humble1370968537' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/tiny-big-grandpas-leftovers' ARCHIVE_OPTIONAL_ICONS_NAME='tiny-and-big_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='043fa61c838ba6b2ef301c52660352b1' ARCHIVE_OPTIONAL_ICONS_URL='http://downloads.dotslashplay.it/games/tiny-and-big/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 64x64' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='tinyandbig' # Shipped libcal3d.so must be used to avoid a missing symbol: # undefined symbol: _ZNK12CalCoreModel18getCoreAnimationIdERKSs CONTENT_LIBS_BIN_RELATIVE_PATH='bin64' CONTENT_LIBS_BIN_FILES=' libcal3d.so' CONTENT_GAME_BIN_FILES=' bin64/tinyandbig' CONTENT_GAME_DATA_FILES=' assets' USER_PERSISTENT_FILES=' options.txt *.save' APP_MAIN_EXE='bin64/tinyandbig' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libCgGL.so libCg.so libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libstdc++.so.6 libX11.so.6' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # Use system-provided SDL. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" dependencies_add_native_libraries 'PKG_BIN' 'libSDL2-2.0.so.0' # Prevent a crash with SDL wayland backend. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_force_x11)" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-tiny-hunter.sh0000755000000000000000000000410014471751340014441 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 HS-157 # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Tiny Hunter # send your bug reports to bugs@dotslashplay.it ### script_version=20240616.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='tiny-hunter' GAME_NAME='Tiny Hunter' ARCHIVE_BASE_1_NAME='tinyhunter_linux.zip' ARCHIVE_BASE_1_MD5='cb14caf2a47efaee84c0cdc6f8be82c6' ARCHIVE_BASE_1_SIZE='157912' ARCHIVE_BASE_1_VERSION='1.0-itch.2020.10.15' ARCHIVE_BASE_1_URL='https://nojigames.itch.io/tinyhunter' ARCHIVE_BASE_0_NAME='TinyHunterWindowMacLinux.zip' ARCHIVE_BASE_0_MD5='9fa1ab03e2769365229a29b6b37995f7' ARCHIVE_BASE_0_SIZE='350000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://nojigames.itch.io/tinyhunter' UNITY3D_NAME='tinyhunter_linux' UNITY3D_NAME_0='tinyhunter' ## No Unity3D plugin is shipped. CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='TinyHunterWindowMacLinux/Linux' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libz.so.1' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-toki-tori-2.sh0000755000000000000000000000527314471751340014247 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Toki Tori 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20241107.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='toki-tori-2' GAME_NAME='Toki Tori 2' ARCHIVE_BASE_0_NAME='TokiTori2-Linux-2017-06-22.sh' ARCHIVE_BASE_0_MD5='564ddc7b09982295732923bb7ac6f39e' ARCHIVE_BASE_0_SIZE='624185' ARCHIVE_BASE_0_VERSION='2017.06.22-humble.2017.10.02' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/toki-tori-2' CONTENT_PATH_DEFAULT='data' CONTENT_GAME_BIN64_RELATIVE_PATH='x86_64' CONTENT_GAME_BIN64_FILES=' TokiTori2.bin.x86_64' CONTENT_GAME_BIN32_RELATIVE_PATH='x86' CONTENT_GAME_BIN32_FILES=' TokiTori2.bin.x86' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' audio color_grading config default levels levels_unsavedchanges localization metadata movement particles presentation scripts shaders spritestrip textures userlevels archive.ma app_icon.png' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' README.linux namespace.txt' APP_MAIN_ICON='app_icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-toren.sh0000755000000000000000000000343514471751340013314 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Toren # send your bug reports to bugs@dotslashplay.it ### script_version=20240622.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='toren' GAME_NAME='Toren' ## This free installer is no longer available for sale from gog.com. ARCHIVE_BASE_0_NAME='setup_toren_gog-1_(17651).exe' ARCHIVE_BASE_0_MD5='4785b339bb5918722ff6a9f30f9d5c04' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_toren_gog-1_(17651)-1.bin' ARCHIVE_BASE_0_PART1_MD5='877ca6f3271cb03b46b5de71a6ff37de' ARCHIVE_BASE_0_SIZE='2400000' ARCHIVE_BASE_0_VERSION='1.0-gog17651' UNITY3D_NAME='toren' CONTENT_PATH_DEFAULT='app' USER_PERSISTENT_FILES=' *.sav' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-trine-1.sh0000755000000000000000000000652414471751340013446 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2016 Mopi set -o errexit ### # Trine # send your bug reports to bugs@dotslashplay.it ### script_version=20251203.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='trine-1' GAME_NAME='Trine' ARCHIVE_BASE_0_NAME='gog_trine_enchanted_edition_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='0e8d2338b568222b28cf3c31059b4960' ARCHIVE_BASE_0_SIZE='1500000' ARCHIVE_BASE_0_VERSION='2.12.508-gog2.0.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/trine_enchanted_edition' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='lib/lib32' CONTENT_LIBS_BIN_FILES=' libCg.so libCgGL.so' CONTENT_GAME_BIN_FILES=' bin/trine1_bin_starter.sh bin/trine1_linux_32bit bin/trine1_linux_launcher_32bit' CONTENT_GAME_DATA_FILES=' data *.fbq *.png' CONTENT_DOC_DATA_FILES=' *.txt' APP_MAIN_EXE='bin/trine1_linux_launcher_32bit' APP_MAIN_ICON='trine1.png' ## The game fails to start if the wayland SDL backend is used. APP_MAIN_PRERUN=' # The game fails to start if the wayland SDL backend is used. if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' ## Keep hold of the terminal until the game process actually ends, ## instead of returning as soon as the launcher is closed. APP_MAIN_POSTRUN=' # Keep hold of the terminal until the game process actually ends, # instead of returning as soon as the launcher is closed. sleep 3s pidwait --euid "$USER" --full trine1_linux_32bit ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libc.so.6 libdl.so.2 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libogg.so.0 libpango-1.0.so.0 libpng12.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libz.so.1' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default ## Set execution permissions on all binaries. binaries_path="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/bin" chmod 755 \ "${binaries_path}/trine1_bin_starter.sh" \ "${binaries_path}/trine1_linux_32bit" \ "${binaries_path}/trine1_linux_launcher_32bit" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. ## Force the use of system-provided SDL. APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-} $(launcher_tweak_sdl_override)" PKG_BIN_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES libSDL2-2.0.so.0" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-trine-2.sh0000755000000000000000000001103214471751340013435 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2015 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2015 mortalius # SPDX-FileCopyrightText: © 2018 Jacek Szafarkiewicz set -o errexit ### # Trine 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260519.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='trine-2' GAME_NAME='Trine 2' ARCHIVE_BASE_GOG_1_NAME='gog_trine_2_complete_story_2.0.0.5.sh' ARCHIVE_BASE_GOG_1_MD5='dd7126c1a6210e56fde20876bdb0a2ac' ARCHIVE_BASE_GOG_1_SIZE='3700000' ARCHIVE_BASE_GOG_1_VERSION='2.01.425-gog2.0.0.5' ARCHIVE_BASE_GOG_1_URL='https://www.gog.com/game/trine_2_complete_story' ARCHIVE_BASE_GOG_0_NAME='gog_trine_2_complete_story_2.0.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='dae867bff938dde002eafcce0b72e5b4' ARCHIVE_BASE_GOG_0_SIZE='3700000' ARCHIVE_BASE_GOG_0_VERSION='2.01.425-gog2.0.0.4' ARCHIVE_BASE_HUMBLE_0_NAME='trine2_complete_story_v2_01_build_425_humble_linux_full.zip' ARCHIVE_BASE_HUMBLE_0_MD5='82049b65c1bce6841335935bc05139c8' ARCHIVE_BASE_HUMBLE_0_SIZE='3700000' ARCHIVE_BASE_HUMBLE_0_VERSION='2.01build425-humble141016' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/trine-2-complete-story' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='.' CONTENT_LIBS_BIN_RELATIVE_PATH='lib/lib32' CONTENT_LIBS_BIN_FILES=' libCg.so libCgGL.so libPhysXCooking.so libPhysXCooking.so.1 libPhysXCore.so libPhysXCore.so.1 libPhysXLoader.so libPhysXLoader.so.1' # The shipped SDL library must be used, as it provides a non-standard symbol. # Using system-provided SDL instead leads to the following error, preventing the game launch: # ./bin/trine2_linux_32bit: undefined symbol: SDL_SetVideoMode CONTENT_LIBS0_BIN_RELATIVE_PATH='lib/lib32' CONTENT_LIBS0_BIN_FILES=' libSDL-1.3.so.0' CONTENT_GAME_BIN_FILES=' bin/trine2_linux_32bit bin/trine2_linux_launcher_32bit' # TODO: Check if the following script is required. CONTENT_GAME0_BIN_FILES=' bin/trine2_bin_starter.sh' CONTENT_GAME_DATA_FILES=' data trine2.png *.fbq' CONTENT_DOC_DATA_FILES=' readme*' # TODO: Check if we must go through the launcher, or if the game could be started directly. APP_MAIN_EXE='bin/trine2_linux_launcher_32bit' APP_MAIN_ICON='trine2.png' # Work around a crash in fullscreen mode. APP_MAIN_PRERUN=' # Work around a crash in fullscreen mode export SDL_VIDEO_ALLOW_SCREENSAVER=1 ' # Keep hold of the terminal until the game process actually ends, # instead of returning as soon as the launcher is closed. APP_MAIN_POSTRUN=' # Keep hold of the terminal until the game process actually ends, # instead of returning as soon as the launcher is closed. sleep 3s pidwait --euid "$USER" --full trine2_linux_32bit ' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libatk-1.0.so.0 libc.so.6 libdbus-1.so.3 libdl.so.2 libexpat.so.1 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libopenal.so.1 libpango-1.0.so.0 libpangoft2-1.0.so.0 libpng12.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libuuid.so.1 libvorbisfile.so.3 libX11.so.6 libz.so.1' PKG_BIN_DEPENDENCIES_COMMANDS=' pidwait' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Set execution permissions on all binaries. chmod 755 \ "$(path_archive_contents)/bin/trine2_bin_starter.sh" \ "$(path_archive_contents)/bin/trine2_linux_32bit" \ "$(path_archive_contents)/bin/trine2_linux_launcher_32bit" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # The game fails to start with SDL wayland backend. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_force_x11)" launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-tulpa.sh0000755000000000000000000000505714471751340013314 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Tulpa # send your bug reports to bugs@dotslashplay.it ### script_version=20260522.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='tulpa' GAME_NAME='Tulpa' # This game is no longer available for sale from humblebundle.com ARCHIVE_BASE_0_NAME='Tulpa_Linux_1423847478.zip' ARCHIVE_BASE_0_MD5='3e01614c5c1c562aaf423689a1f51df9' ARCHIVE_BASE_0_SIZE='527248' ARCHIVE_BASE_0_VERSION='1.0-humble150213' UNITY3D_NAME='Tulpa' UNITY3D_PLUGINS=' ScreenSelector.so' # Crash on launch (after logo video) if CSteamworks is missing UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so" # libCSteamworks.so requirements UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='Tulpa (Linux)' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libgdk-x11-2.0.so.0 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libGLU.so.1 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpango-1.0.so.0 libpangocairo-1.0.so.0 libpangoft2-1.0.so.0 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi # shellcheck source=libplayit.sh.2 . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Prevent inclusion of unused 32-bit Mono libraries. rm --recursive "$(path_archive_contents)/$(unity3d_name)_Data/Mono/x86" # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. # Do not disable the MAP_32BIT flag, as it would lead to a crash on launch. unity3d_disable_map32bit() { return 0 ; } launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-volgarr-the-viking.sh0000755000000000000000000000444114471751340015702 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 mortalius # SPDX-FileCopyrightText: © 2020 HS-157 # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Volgarr the Viking # send your bug reports to bugs@dotslashplay.it ### script_version=20260525.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='volgarr-the-viking' GAME_NAME='Volgarr the Viking' ARCHIVE_BASE_GOG_0_NAME='gog_volgarr_the_viking_2.1.0.3.sh' ARCHIVE_BASE_GOG_0_MD5='8593287f13c3104aa45b9c91264b4260' ARCHIVE_BASE_GOG_0_SIZE='200000' ARCHIVE_BASE_GOG_0_VERSION='1.36c-gog2.1.0.3' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/volgarr_the_viking' ARCHIVE_BASE_HUMBLE_0_NAME='VolgarrTheViking_v1.36c_Linux32.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='c3652629edb019838d8e1c7873f0716b' ARCHIVE_BASE_HUMBLE_0_SIZE='180000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.36c-humble' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/volgarr-the-viking' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='Volgarr' CONTENT_GAME_BIN_FILES=' Volgarr' CONTENT_GAME_DATA_FILES=' Data.pk icon.png' CONTENT_GAME_DOC_FILES=' Readme.txt' APP_MAIN_EXE='Volgarr' APP_MAIN_ICON='icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' # TODO: Update the list of required native libraries. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libstdc++.so.6 libGL.so.1 libSDL2-2.0.so.0' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions. if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_dir in \ "$PWD" \ "${HOME}/.local/lib/play.it" \ '/usr/local/lib/play.it' \ '/usr/lib/play.it' do playit_lib_path="${playit_lib_dir}/libplayit.sh.2" if [ -e "$playit_lib_path" ]; then PLAYIT_LIB2="$playit_lib_path" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit.sh.2 not found.\n' exit 1 fi . "$PLAYIT_LIB2" # Run default initialisation actions. initialization_default "$@" # Extract game data. archive_extraction_default # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-vvvvvv.sh0000755000000000000000000000646314471751340013554 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays set -o errexit ### # VVVVVV # send your bug reports to bugs@dotslashplay.it ### script_version=20240505.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='vvvvvv' GAME_NAME='VVVVVV' ARCHIVE_BASE_HUMBLE_0_NAME='vvvvvv-10202016-bin' ARCHIVE_BASE_HUMBLE_0_MD5='2a67882173f36c685f532e3cce0607af' ## This MojoSetup installer is not using a Makeself wrapper. ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='110000' ARCHIVE_BASE_HUMBLE_0_VERSION='2.2-humble.2016.10.20' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/vvvvvv' ARCHIVE_BASE_GOG_0_NAME='vvvvvv_2_3_4_49985.sh' ARCHIVE_BASE_GOG_0_MD5='76177a8ae3dede7c5cac1a90a00c0ca7' ARCHIVE_BASE_GOG_0_SIZE='67000' ARCHIVE_BASE_GOG_0_VERSION='2.3.4-gog49985' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/vvvvvv' ARCHIVE_BASE_GOG_MULTIARCH_0_NAME='gog_vvvvvv_2.0.0.2.sh' ARCHIVE_BASE_GOG_MULTIARCH_0_MD5='f25b5dd11ea1778d17d4b2e0b54c7eed' ARCHIVE_BASE_GOG_MULTIARCH_0_SIZE='74000' ARCHIVE_BASE_GOG_MULTIARCH_0_VERSION='2.2-gog2.0.0.2' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_GAME_BIN_FILES=' VVVVVV' CONTENT_GAME_BIN64_FILES=' x86_64/vvvvvv.x86_64' CONTENT_GAME_BIN32_FILES=' x86/vvvvvv.x86' CONTENT_GAME_DATA_FILES=' data.zip VVVVVV.png' CONTENT_DOC_DATA_FILES=' Linux.README' APP_MAIN_EXE='VVVVVV' APP_MAIN_EXE_BIN64='x86_64/vvvvvv.x86_64' APP_MAIN_EXE_BIN32='x86/vvvvvv.x86' APP_MAIN_ICON='VVVVVV.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_HUMBLE=' PKG_BIN64 PKG_BIN32 PKG_DATA' PACKAGES_LIST_GOG_MULTIARCH=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPS="$PKG_DATA_ID" PKG_BIN64_DEPS="$PKG_BIN_DEPS" PKG_BIN32_DEPS="$PKG_BIN_DEPS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0 libstdc++.so.6' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; ('ARCHIVE_BASE_GOG_MULTIARCH_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; (*) launchers_generation 'PKG_BIN' ;; esac # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wandersong.sh0000755000000000000000000000353314471751340014333 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Wandersong # send your bug reports to bugs@dotslashplay.it ### script_version=20240806.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='wandersong' GAME_NAME='Wandersong' ARCHIVE_BASE_0_NAME='wandersong-drmfree.zip' ARCHIVE_BASE_0_MD5='27851a4ba540505f11e122f4c9a686b5' ARCHIVE_BASE_0_SIZE='2000000' ARCHIVE_BASE_0_VERSION='1.0-itch1' ARCHIVE_BASE_0_URL='https://banov.itch.io/wandersong' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' GMFile.dll GMIni.dll wandersong.exe' CONTENT_GAME_DATA_FILES=' audioData levels palettes *.dat *.ogg' CONTENT_DOC_DATA_FILES=' ws_credits' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/wandersong' APP_MAIN_EXE='wandersong.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-witchway.sh0000755000000000000000000000322514471751340014021 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Witchway # send your bug reports to bugs@dotslashplay.it ### script_version=20240515.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='witchway' GAME_NAME='WitchWay' ARCHIVE_BASE_0_NAME='WitchWay 1-12 WIN .zip' ARCHIVE_BASE_0_MD5='70bc22f82227be0008332b5f5ce10585' ARCHIVE_BASE_0_SIZE='25000' ARCHIVE_BASE_0_VERSION='1.12-itch' ARCHIVE_BASE_0_URL='https://gleeson.itch.io/witchway' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' WitchWay.exe' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/WitchWay' ## Work around a crash related to shaders compilation. WINE_WINETRICKS_VERBS='d3dcompiler_43' APP_MAIN_EXE='WitchWay.exe' PKG_MAIN_ARCH='32' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wonder-boy.sh0000755000000000000000000001426714471751340014257 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Hoël Bézier # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Wonder Boy: The Dragon's Trap # send your bug reports to bugs@dotslashplay.it ### script_version=20250407.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='wonder-boy' GAME_NAME='Wonder Boy: The Dragon’s Trap' ARCHIVE_BASE_0_NAME='wonder_boy_the_dragon_s_trap_en_1_03f_02_20817.sh' ARCHIVE_BASE_0_MD5='775ac16ded3d2aca7ebcb27c7a2caf48' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.03f.02-gog20817' ARCHIVE_BASE_0_URL='https://www.gog.com/game/wonder_boy_the_dragons_trap' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' x86_64' CONTENT_GAME_BIN32_FILES=' x86' CONTENT_GAME_DATA_FILES=' bin_pc gamecontrollerdb.txt WonderBoy.png' CONTENT_DOC_DATA_FILES=' Linux.README' CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libstdc++.so.6 libGL.so.1' APP_MAIN_EXE_BIN32='x86/wb.x86' APP_MAIN_EXE_BIN64='x86_64/wb.x86_64' APP_MAIN_ICON='WonderBoy.png' # Load common functions if [ -z "$PLAYIT_LIB2" ]; then : "${XDG_DATA_HOME:="$HOME/.local/share"}" for path in\ "$PWD"\ "$XDG_DATA_HOME/play.it"\ '/usr/local/share/games/play.it'\ '/usr/local/share/play.it'\ '/usr/share/games/play.it'\ '/usr/share/play.it' do if [ -e "$path/libplayit2.sh" ]; then PLAYIT_LIB2="$path/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" pkg_setup() { option_package=$(option_value 'package') case "$option_package" in ('arch'|'gentoo') PKG_BIN32_ARCH='32' PKG_BIN32_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_ARCH='64' PKG_BIN64_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" ;; ('deb') PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN64_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_ARCH='32' PKG_BIN32_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" ;; ('egentoo') PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_DEPENDENCIES_LIBRARIES="$CONTENT_GAME_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_DEPENDENCIES_LIBRARIES" # play.it 2.20 uses 64-bit binary packages dependencies ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } src_extract() { archive_extraction_default } src_prepare() { : } pkg_prepare() { option_package=$(option_value 'package') case "$option_package" in ('deb'|'egentoo') content_inclusion_default ;; ('arch'|'gentoo') content_inclusion_default # Copy data files into both binary packages local GAME_DATA_PATH target_path_bin32 target_path_bin64 GAME_DATA_PATH="${PLAYIT_WORKDIR}/gamedata/$(content_path 'GAME_DATA')" target_path_bin32="$(realpath --canonicalize-missing "$(package_path 'PKG_BIN32')$(path_game_data)")" target_path_bin64="$(realpath --canonicalize-missing "$(package_path 'PKG_BIN64')$(path_game_data)")" ( cd "$GAME_DATA_PATH" local file_pattern file_path while read -r file_pattern; do pwd if [ -z "$file_pattern" ]; then continue fi if [ -e "$file_pattern" ]; then mkdir --parents "$target_path_bin32" mkdir --parents "$target_path_bin64" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin32" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin64" rm --force --recursive "$file_pattern" else while read -r file_path; do mkdir --parents "$target_path_bin32" mkdir --parents "$target_path_bin64" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin32" cp \ --force \ --link \ --recursive \ --no-dereference \ --parents \ --preserve=links \ "$file_pattern" "$target_path_bin64" rm --force --recursive "$file_pattern" done <<- EOF $(find . -path "./${file_pattern#./}") EOF fi done <<- EOF $(content_files 'GAME_DATA') EOF ) ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } src_clean() { # Nothing to do here return 0 } pkg_icons() { option_package=$(option_value 'package') case "$option_package" in ('deb'|'egentoo') content_inclusion_icons 'PKG_DATA' ;; ('arch'|'gentoo') content_inclusion_icons 'PKG_BIN64' content_inclusion_icons 'PKG_BIN32' ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac } pkg_launchers() { launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' } pkg_build() { packages_generation } pkg_clean() { working_directory_cleanup } pkg_instructions() { print_instructions } ## Ensure that the default package is correctly set, ## despite PACKAGES_LIST not being set early init_package() { option_package=$(option_value 'package') case "$option_package" in ('arch'|'gentoo') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32' ;; ('deb') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' ;; ('egentoo') PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' ;; (*) error_option_invalid 'package' "$option_package" return 1 ;; esac set_default_package 'PKG_BIN64' } ## Run the default initialization actions initialization_default "$@" pkg_setup src_extract src_prepare pkg_icons ## must be called before pkg_prepare pkg_prepare src_clean pkg_launchers pkg_build pkg_instructions pkg_clean ## must be called after pkg_instructions exit 0 games/play-world-to-the-west.sh0000755000000000000000000000565414471751340015477 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # World to the West # send your bug reports to bugs@dotslashplay.it ### script_version=20250802.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='world-to-the-west' GAME_NAME='World to the West' ARCHIVE_BASE_1_NAME='world_to_the_west_en_1_3_0_23314.sh' ARCHIVE_BASE_1_MD5='ac200556d642b1529526375b65642574' ARCHIVE_BASE_1_SIZE='2100000' ARCHIVE_BASE_1_VERSION='1.3.0-gog23314' ARCHIVE_BASE_1_URL='https://www.gog.com/game/world_to_the_west' ARCHIVE_BASE_0_NAME='gog_world_to_the_west_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='dd393d192c7569cc19edb0e3fff7851a' ARCHIVE_BASE_0_SIZE='2500000' ARCHIVE_BASE_0_VERSION='1.0.1-gog2.0.0.2' UNITY3D_NAME_1='WTTW_GOG_1_3_0_Linux' UNITY3D_NAME_0='WorldToTheWest' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_0=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2 libz.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES_0="$PKG_BIN_DEPENDENCIES_LIBRARIES_0" PKG_BIN32_DEPENDENCIES_LIBRARIES_0="$PKG_BIN_DEPENDENCIES_LIBRARIES_0" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-yokus-island-express.sh0000755000000000000000000000436314471751340016277 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Yoku's Island Express # send your bug reports to bugs@dotslashplay.it ### script_version=20240522.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='yokus-island-express' GAME_NAME='Yoku’s Island Express' ARCHIVE_BASE_1_NAME='setup_gog_yoku_latest_drm_free_210927_(50319).exe' ARCHIVE_BASE_1_MD5='5a1241ffdda722df9c7c4c8fc1b661fe' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1300000' ARCHIVE_BASE_1_VERSION='2021.09.27-gog50319' ARCHIVE_BASE_1_URL='https://www.gog.com/game/yokus_island_express' ARCHIVE_BASE_0_NAME='setup_yokus_island_express_aug_24_2018_205911_(24871).exe' ARCHIVE_BASE_0_MD5='49d3a80f0a039e7b7a4d5fcd4860e445' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1300000' ARCHIVE_BASE_0_VERSION='2018.08.24-gog24871' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' bugsplat64.dll bugsplatrc64.dll d3dcompiler_47.dll yoku.exe bssndrpt64.exe' CONTENT_GAME_DATA_FILES=' data processed' CONTENT_DOC_DATA_FILES=' licenses' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/Roaming/Villa Gorilla/Yoku's Island Express" WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='yoku.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_ARCH='64' PKG_BIN_DEPS="$PKG_DATA_ID" # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-yooka-laylee.sh0000755000000000000000000000463614471751340014564 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Yooka Laylee # send your bug reports to bugs@dotslashplay.it ### script_version=20250616.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='yooka-laylee' GAME_NAME='Yooka Laylee' ARCHIVE_BASE_0_NAME='gog_yooka_laylee_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='151e4f41960d50047d41bb3c010da187' ARCHIVE_BASE_0_SIZE='9500000' ARCHIVE_BASE_0_VERSION='1.08-gog2.1.0.2' ARCHIVE_BASE_0_URL='https://www.gog.com/game/yookalaylee' UNITY3D_NAME='YookaLaylee' UNITY3D_PLUGINS=' libAkFlanger.so libAkHarmonizer.so libAkSoundEngine.so libAkStereoDelay.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN64_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLINGS="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 libdl.so.2 libgcc_s.so.1 libgdk_pixbuf-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-x11-2.0.so.0 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXrandr.so.2' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' # Load common functions PLAYIT_LIB_PATHS=" $PWD ${XDG_DATA_HOME:="${HOME}/.local/share"}/play.it /usr/local/share/games/play.it /usr/local/share/play.it /usr/share/games/play.it /usr/share/play.it" if [ -z "$PLAYIT_LIB2" ]; then for playit_lib_path in $PLAYIT_LIB_PATHS; do if [ -e "${playit_lib_path}/libplayit2.sh" ]; then PLAYIT_LIB2="${playit_lib_path}/libplayit2.sh" break fi done fi if [ -z "$PLAYIT_LIB2" ]; then printf '\n\033[1;31mError:\033[0m\n' printf 'libplayit2.sh not found.\n' exit 1 fi # shellcheck source=libplayit2.sh . "$PLAYIT_LIB2" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 tests/check-license.sh0000755000000000000000000000065114471751340013762 0ustar rootroot#!/bin/sh set -o errexit CONTRIBUTORS_LIST=$( grep 'SPDX-FileCopyrightText' games/* | cut --delimiter=' ' --fields=5- | sort --unique ) CONTRIBUTOR_MISSING=0 while read contributor; do grep --quiet "$contributor" licenses/* || { printf 'Missing contributor in licenses/*: %s\n' "$contributor" && CONTRIBUTOR_MISSING=1 } done << EOL $(printf '%s\n' "$CONTRIBUTORS_LIST") EOL test $CONTRIBUTOR_MISSING -eq 0 COPYING0000644000000000000000000000121414471751340010613 0ustar rootrootACSL is short for Anti-Capitalist Software License BSD-2-Clause is short for Simplified BSD License Full license texts can be found in the "licenses" directory. ACSL applies to all files outside of the "games" directory, and is the default one for files in "games" directory. If a script specifies another license in its headers, the license set in the script takes precedence over the default one. In addition to the license applying to any given file, it is explicitly forbidden to input any of these in an LLM or any other tool powered by or powering a generative AI. This includes, but is not limited to, LLM "training" and AI-assisted coding. licenses/0000755000000000000000000000000014471751340011367 5ustar rootrootlicenses/ACSL0000644000000000000000000000356614471751340012046 0ustar rootrootAnti-Capitalist Software License (v 1.4) Copyright © 2015 Antoine Le Gonidec Copyright © 2016 Mopi Copyright © 2018 VA Copyright © 2020 Hoël Bézier Copyright © 2020 Emmanuel Gil Peyrot Copyright © 2020 HS-157 Copyright © 2025 tyzef Copyright © 2026 Locynaeh This is anti-capitalist software, released for free use by individuals and organizations that do not operate by capitalist principles. Permission is hereby granted, free of charge, to any person or organization (the "User") obtaining a copy of this software and associated documentation files (the "Software"), to use, copy, modify, merge, distribute, and/or sell copies of the Software, subject to the following conditions: 1. The above copyright notice and this permission notice shall be included in all copies or modified versions of the Software. 2. The User is one of the following: a. An individual person, laboring for themselves b. A non-profit organization c. An educational institution d. An organization that seeks shared profit for all of its members, and allows non-members to set the cost of their labor 3. If the User is an organization with owners, then all owners are workers and all workers are owners with equal equity and/or equal vote. 4. If the User is an organization, then the User is not law enforcement or military, or working for or under either. The Software is provided "as is", without express or implied warranty of any kind, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software. licenses/BSD-2-Clause0000644000000000000000000000345514471751340013302 0ustar rootrootSimplified BSD License Copyright © 2015 Antoine Le Gonidec Copyright © 2015 mortalius Copyright © 2016 Mopi Copyright © 2018 Jacek Szafarkiewicz Copyright © 2018 BetaRays Copyright © 2018 VA Copyright © 2018 Phil Morrell Copyright © 2020 Hoël Bézier Copyright © 2020 Emmanuel Gil Peyrot Copyright © 2020 HS-157 Copyright © 2021 Daguhh Copyright © 2021 Thomas Vasileiou Copyright © 2025 tyzef Copyright © 2026 Locynaeh All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright holder or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. Makefile0000644000000000000000000000325214471751340011224 0ustar rootrootcollection_name = 45_platform # Set default prefix if called by the root account, for system-wide install. UID := $(shell id --user) ifeq ($(UID),0) prefix = /usr/local endif # Set install path based on $(prefix), if provided. ifneq ($(prefix),) datadir = $(prefix)/share endif # Fall back on $XDG_DATA_HOME, defaulting to ~/.local/share ifeq ($(prefix),) ifeq ($(XDG_DATA_HOME),) XDG_DATA_HOME := $(HOME)/.local/share endif datadir = $(XDG_DATA_HOME) endif collections_path = $(DESTDIR)$(datadir)/play.it/collections # Install the game scripts .PHONY: install uninstall install: install -D --mode=755 --target-directory=$(collections_path)/$(collection_name) games/* uninstall: rm $(collections_path)/$(collection_name)/play-*.sh rmdir -p --ignore-fail-on-non-empty $(collections_path)/$(collection_name) # Generate tarballs, for easier packaging .PHONY: dist ## The generated tarball is signed with gpg by default, ## NO_SIGN should be set to a non-0 value to skip the signature. NO_SIGN := 0 dist: DATE := $(shell date +%F) dist: TARBALL := $(collection_name)_$(DATE).tar.gz dist: TAR_OPTIONS := --sort=name --mtime=2023-08-25 --owner=root:0 --group=root:0 --use-compress-program='gzip --no-name' dist: games/*.sh tests/check-license.sh COPYING licenses Makefile README.md mkdir --parents dist LC_ALL=C tar cf dist/$(TARBALL) $(TAR_OPTIONS) games/*.sh tests/check-license.sh COPYING licenses Makefile README.md ifeq ($(NO_SIGN),0) rm --force dist/$(TARBALL).asc gpg --armor --detach-sign dist/$(TARBALL) endif # Run license check, to ensure no contributor is missing .PHONY: check check-license check: check-license check-license: ./tests/check-license.sh README.md0000644000000000000000000002416214471751340011046 0ustar rootroot# ./play.it platform games collection The codebase is maintained at [https://git.dotslashplay.it/games-platform/] Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it] [https://git.dotslashplay.it/games-platform/]: https://git.dotslashplay.it/games-platform/ [bugs@dotslashplay.it]: mailto:bugs@dotslashplay.it [requests@dotslashplay.it]: mailto:requests@dotslashplay.it ## Description ./play.it is a free software building native packages from installers for Windows or Linux, mainly those sold by stores focusing on DRM-free games distribution. The goal is that a game installed via ./play.it is indistinguishable from a game installed via the official repositories of your favourite distribution. This specific collection includes only platform games. These games focus on navigating through levels, often requiring precise jumps. Some of them may include puzzles, time constraints, or action-based combat. Player dexterity is expected to play a big part. ## Installation ### Distributions providing ./play.it The following distributions provide installation instructions in their official documentation: - [Debian] - [Gentoo] - [Ubuntu] (French article) [Debian]: https://wiki.debian.org/Games/PlayIt#Installation [Gentoo]: https://wiki.gentoo.org/wiki/Play.it#Installation [Ubuntu]: https://doc.ubuntu-fr.org/play.it#installation In most cases, these instructions should work in the same way for derivatives of these distributions. ### Installation from git If your distribution does not already have a package for this ./play.it collection, you can install it from this git repository. ``` git clone --branch main --depth 1 https://git.dotslashplay.it/games-platform play.it-platform.git cd play.it-platform.git make install ``` ## Usage Usage instructions are provided on the main ./play.it repository: [./play.it: Installer for DRM-free commercial games — Usage] [./play.it: Installer for DRM-free commercial games — Usage]: https://git.dotslashplay.it/scripts/about/#usage ## Contributing ### First contribution There is no real rule for your first contribution. You can host your updated code anywhere you like and contact us via any way described in the [Contact information] section below. It is OK to expose your updated code through GitHub or GitLab.com if you have nothing better at hand, but we would be thankful if you would instead use some hosting outside of these big silos. [Contact information]: #contact-information We do not enforce any workflow like merge/pull requests or any such thing. We are interested in the result of your work, not in how you got to it. So shatter your shackles, and for once take pleasure in working *however you like*! You are not even required to use git if you do not know or do not like this tool. Please try to follow these simple guidelines, and your contribution is probably going to be accepted quickly: - Run `make check` before submitting your code, to ensure you did not break anything by accident; - Use tabs for indentation. No real developer would ever indent anything with spaces. ### Regular contributions If you keep contributing on a more regular basis (sending 3 patches in the same year would already make you a regular) we can grant you direct write access to the repositories hosted at git.dotslashplay.it. This is not mandatory, if for some reason you can not or do not want to work with git you can simply keep following the "First contribution" guidelines, and forget about this whole "Regular contributions" section. To grant you such an access we need nothing but a public SSH key, that you can send us through any way described in the [Contact information] section below. [Contact information]: #contact-information Once you have been granted access, you should add the following to your local SSH configuration: ``` Host git.dotslashplay.it Port 1962 User gitolite3 ``` You should then update the remote of your local repository, with the following command (assuming a remote named "upstream"): ``` git remote set-url --push upstream ssh://git.dotslashplay.it/games-platform ``` Since these repositories are worked on by several people, there are a couple extra guidelines that you should follow: - Your work should always be pushed to a dedicated branch, never on the main branch; - Game script updates, including bug fixes, should be pushed to branches named with a "update/" prefix; - Addition of new game scripts should be pushed to branches named with a "new/" prefix; - You are allowed to push code to branches opened by other contributors, but please communicate with them if you plan to do so; - Force push and branches deletion are not allowed, if you want a branch to be deleted please ask us to do it for you. ### Collection maintenance If you really like this collection, you might wish to start co-maintaining it. That kind of help would be most welcome! This implies more trust than a contributor access, but there are safeguards in place so there is no risk for you to break anything in a way impossible to revert. So you do not need to be some kind of "git guru" to be granted access, the only skill really required is some real interest for the games supported in this collection. The main difference with a contributor access is that you are no longer limited to the `update/*` and `new/*` branches, you can update the `main` branch too, the one that is installed by ./play.it users and that is used to build packages for Linux distributions including ./play.it in their repositories. To reduce risks of breakages, please always run the full collection of tests prior to sending an update to the main branch: ``` make check ``` A good way to never forget about it is to set a git hook, an executable .git/hooks/pre-push file with the following content: ``` #!/bin/sh set -o errexit # Check the syntax of all game scripts, using ShellCheck. make --jobs=$(nproc) check exit 0 ``` ## Supported games - 140 - 1365 - 6180 The Moon - A Boy and His Blob - A Hat in Time - A Story About My Uncle - A Tale of Paper - Arise: A Simple Story - Ascendant - Beatbuddy: Tale of the Guardians - Binaries - Biped - Braid - Bubbles the Cat - Candleman - Capsized - Cats are Liquid series: - Cats are Liquid: A Light in the Shadows - Cats are Liquid: A Better Place - Celeste - Chronology - Closure - Creaks - Dark Echo - Dead Cells - Deadlight - Disney 1993-1994 platformers: - Aladdin - The Jungle Book - The Lion King - Dreaming Sarah - Dustforce DX - Earthworm Jim - Element4l - Elephantasy - Escape Goat series: - Escape Goat - Escape Goat 2 - Evan's Remains - Feist - Fez - Flat Kingdom - Forgotton Anne - Fossil Echo - Fotonica - Four Sided Fantasy - Giana Sisters series: - Giana Sisters: Twisted Dreams - Giana Sisters: Rise of the Owlverlord - Gris - Guacamelee - Hoa - Hollow Knight - Indivisible - Itorah - Kero Blaster series: - Kero Blaster - Pink Heaven - Pink Hour - La-Mulana - Limbo - Little Bug - Little Nightmares - Lost Ruins - Lost Words: Beyond the Page - Mable and the Wood - Mark of the Ninja - Minute of Islands - Mirror's Edge - Mobius - Momodora: Reverie Under the Moonlight - Mushroom 11 - My Rabbits Are Gone - Never Alone - Nihilumbra - Noita - NyxQuest: Kindred Spirits - Oddworld: Abe's Oddysee - One Hand Clapping - Ori and the Blind Forest - Out of Line - Owlboy - Papo and Yo - Pandemonium - Pikuniku - Pid - Pinstripe - Prince of Persia series: - Prince of Persia: The Sands of Time, supported in another collection: [https://git.vv221.fr/play.it/games-vv221/about/] - Prince of Persia (2008) - Project Feline - Psychonauts - Puddle - Rogue Legacy - Scarf - Seasons After Fall - Shantae and the Pirate's Curse - Shovel Knight - Space Tail: Every Journey Leads Home - Spelunky - Spiritfarer - SteamWorld setting: - SteamWorld Dig - SteamWorld Dig 2 - SteamWorld Heist, supported in another collection: [https://git.dotslashplay.it/games-action-adventure/about/] - SteamWorld Quest, supported in another collection: [https://git.dotslashplay.it/games-rpg/about/] - Steel Rats - Sunblaze - Sundered - Super Meat Boy - Supercow - Symphonia - Tag: The Power of Paint - Tandem: A Tale of Shadows - Teslagrad - The Adventures of Shuggy - The Deer God - The Girl and the Robot - The King's Bird - The Smurfs: Mission Vileaf - Thomas Was Alone - Time Loader - Tiny & Big in Grandpa's Leftovers - Tiny Hunter - Toki Tori 2 - Toren - Trine series: - Trine - Trine 2 - Tulpa - Volgarr the Viking - VVVVVV - Wandersong - WitchWay - Wonder Boy: The Dragon's Trap - World to the West - Yoku's Island Express - Yooka Laylee [https://git.dotslashplay.it/games-action-adventure/about/]: https://git.dotslashplay.it/games-action-adventure/about/ [https://git.dotslashplay.it/games-rpg/about/]: https://git.dotslashplay.it/games-rpg/about/ [https://git.vv221.fr/play.it/games-vv221/about/]: https://git.vv221.fr/play.it/games-vv221/about/ ## Contact information ### IRC channel Some ./play.it developers and users can be reached on IRC, channel is `#play.it` on network `irc.oftc.net`. The main language on this IRC channel is English, but most of us can speak French too. ### E-mail A contact e-mail for feedback can usually be found in each ./play.it game script, as well as in the library. Open one of these files with any text editor to see the contact e-mail. ## blackhole.vv222.fr Instead of getting access to this git repository, or any other ./play.it-related Web stuff, you might get redirected to blackhole.vv222.fr where you get a slow trickle of nonsensical French text with a couple hyperlinks. This is a trap for generative AI scraping bots that have been attacking ./play.it server relentlessly for a long time. If you get hit by this forced redirection this means you are trying to reach a Web page from an IP provided by a known bad ISP, one who already took part in mass attacks against our server. Then the most effective way to avoid the redirection is to use another ISP, one that is not providing resources to DDoS attacks in favour of generative AI companies. If you can not access Internet using another ISP then please get in touch through one of the contact methods listed above, and we can unblock either your IP or your whole ISP.