games/play-a-good-snowman-is-hard-to-build.sh0000700000000000000000000000743214471751340020044 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Good Snowman is Hard to Build # send your bug reports to bugs@dotslashplay.it ### script_version=20250228.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='a-good-snowman-is-hard-to-build' GAME_NAME='A Good Snowman is Hard to Build' ARCHIVE_BASE_ITCH_0_NAME='snowman-linux.tar.gz' ARCHIVE_BASE_ITCH_0_MD5='3136269cf9d5d81483705c433660b7ab' ARCHIVE_BASE_ITCH_0_SIZE='206249' ARCHIVE_BASE_ITCH_0_VERSION='1.0-itch.2025.02.26' ARCHIVE_BASE_ITCH_0_URL='https://draknek.itch.io/a-good-snowman' ## This DRM-free installer is no longer available for sale from humblebundle.com. ARCHIVE_BASE_HUMBLE_0_NAME='snowman-linux-1.0.8.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='4461dfdcaba9e8793e3044b458b0e301' ARCHIVE_BASE_HUMBLE_0_SIZE='120000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.8-humble160421' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='a-good-snowman-is-hard-to-build_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='8d595a7758ae8cd6dbc441ab79579fb4' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/a-good-snowman-is-hard-to-build/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 24x24 32x32 40x40 48x48 64x64 96x96 128x128 256x256 512x512 768x768' CONTENT_PATH_DEFAULT_ITCH='.' CONTENT_PATH_DEFAULT_HUMBLE='snowman' CONTENT_LIBS_FILES=' lime-legacy.ndll regexp.dso std.dso zlib.dso' CONTENT_LIBS_BIN64_RELATIVE_PATH='bin64' CONTENT_LIBS_BIN64_FILES="$CONTENT_LIBS_FILES" CONTENT_LIBS_BIN32_RELATIVE_PATH='bin32' CONTENT_LIBS_BIN32_FILES="$CONTENT_LIBS_FILES" CONTENT_GAME_BIN64_FILES=' bin64/Snowman' CONTENT_GAME_BIN32_FILES=' bin32/Snowman' CONTENT_GAME_DATA_FILES=' atlases crashdumper fonts libraries music resources sounds spritesheets manifest strings' APP_MAIN_EXE_BIN64='bin64/Snowman' APP_MAIN_EXE_BIN32='bin32/Snowman' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN32_ARCH='32' PKG_BIN64_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' 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 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6' PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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 content_inclusion_default ## The game engine looks for lime-legacy.ndll in a hardcoded path ln --symbolic \ "$(path_libraries)/lime-legacy.ndll" \ "$(package_path 'PKG_BIN64')$(path_game_data)" ln --symbolic \ "$(path_libraries)/lime-legacy.ndll" \ "$(package_path 'PKG_BIN32')$(path_game_data)" # Write launchers ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(launcher_tweak_sdl_override)" launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-a-monsters-expedition.sh0000700000000000000000000000376114471751340016413 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # A Monster's Expedition # send your bug reports to bugs@dotslashplay.it ### script_version=20241109.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='a-monsters-expedition' GAME_NAME='A Monsterʼs Expedition' ARCHIVE_BASE_0_NAME='a-monsters-expedition-linux.zip' ARCHIVE_BASE_0_MD5='0bf9d7b9d7df996024716145d5fa0074' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://draknek.itch.io/a-monsters-expedition' UNITY3D_NAME='a-monsters-expedition' CONTENT_PATH_DEFAULT='.' ## FIXME: The Unity3D plugins to include should be listed through UNITY3D_PLUGINS CONTENT_GAME0_BIN_FILES=" ${UNITY3D_NAME}_Data/Plugins" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## TODO: The dependencies list should be completed PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 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-place-full-of-cats.sh0000700000000000000000000001017414471751340015745 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # A Place Full of Cats series: # - A Building Full of Cats # - A Castle Full of Cats # - A Tower Full of Cats # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID_BUILDING='a-building-full-of-cats' GAME_NAME_BUILDING='A Building Full of Cats' GAME_ID_CASTLE='a-castle-full-of-cats' GAME_NAME_CASTLE='A Castle Full of Cats' GAME_ID_TOWER='a-tower-full-of-cats' GAME_NAME_TOWER='A Tower Full of Cats' ARCHIVE_BASE_BUILDING_0_NAME='setup_a_building_full_of_cats_1.01-gog_(64bit)_(62634).exe' ARCHIVE_BASE_BUILDING_0_MD5='0c1fc138578320932322f774670f655b' ARCHIVE_BASE_BUILDING_0_TYPE='innosetup' ARCHIVE_BASE_BUILDING_0_SIZE='150000' ARCHIVE_BASE_BUILDING_0_VERSION='1.01-gog62634' ARCHIVE_BASE_BUILDING_0_URL='https://www.gog.com/en/game/a_building_full_of_cats' ARCHIVE_BASE_CASTLE_0_NAME='setup_a_castle_full_of_cats_1.07_gog_w_leaderboards_(63211).exe' ARCHIVE_BASE_CASTLE_0_MD5='f0490493f27c903c5e07f87da5e1dde5' ARCHIVE_BASE_CASTLE_0_TYPE='innosetup' ARCHIVE_BASE_CASTLE_0_SIZE='300000' ARCHIVE_BASE_CASTLE_0_VERSION='1.07-gog63211' ARCHIVE_BASE_CASTLE_0_URL='https://www.gog.com/en/game/a_castle_full_of_cats' ARCHIVE_BASE_TOWER_0_NAME='setup_a_tower_full_of_cats_1.1.6_gog_version(patreon_off)_(74105).exe' ARCHIVE_BASE_TOWER_0_MD5='1d96428ba73472f2fd985a2ee65b47c6' ARCHIVE_BASE_TOWER_0_TYPE='innosetup' ARCHIVE_BASE_TOWER_0_SIZE='692173' ARCHIVE_BASE_TOWER_0_VERSION='1.1.6-gog74105' ARCHIVE_BASE_TOWER_0_URL='https://www.gog.com/game/a_tower_full_of_cats' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES_BUILDING=' building.exe' CONTENT_GAME_BIN_FILES_CASTLE=' castle.exe' CONTENT_GAME_BIN_FILES_TOWER=' tower.exe' ## The game fails to start if steam_api64.dll is missing CONTENT_GAME0_BIN_FILES=' steam_api64.dll' ## TODO: A Castle Full of Cats - Check if the Galaxy library is required CONTENT_GAME1_BIN_FILES_CASTLE=' galaxyconfig.json galaxy64.dll' ## A Tower Full of Cats - steam_api64.dll is linked against galaxy64.dll CONTENT_GAME1_BIN_FILES_TOWER=' galaxyconfig.json galaxy64.dll' CONTENT_GAME_DATA_FILES_BUILDING=' building.pck' CONTENT_GAME_DATA_FILES_CASTLE=' castle.pck' USER_PERSISTENT_FILES=' *.cfg' APP_MAIN_EXE_BUILDING='building.exe' APP_MAIN_EXE_CASTLE='castle.exe' APP_MAIN_EXE_TOWER='tower.exe' ## Warning: xxx_WRESTOOL_OPTIONS has no support for contextual values APP_MAIN_ICON_WRESTOOL_OPTIONS_CASTLE='--type=14 --name=GODOT_ICON --language=1033' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_TOWER=' PKG_BIN' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS_BUILDING=' PKG_DATA' PKG_BIN_DEPENDENCIES_SIBLINGS_CASTLE=' PKG_DATA' PKG_DATA_ID_BUILDING="${GAME_ID_BUILDING}-data" PKG_DATA_ID_CASTLE="${GAME_ID_CASTLE}-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 case "$(current_archive)" in ('ARCHIVE_BASE_TOWER_'*) # No icon can be extracted from A Tower Full of Cats binary, # as the binary file is much too big to be handled by wrestool. ;; (*) # Explicitly set the contextual value for wrestool options APP_MAIN_ICON_WRESTOOL_OPTIONS=$(context_value 'APP_MAIN_ICON_WRESTOOL_OPTIONS') content_inclusion_icons 'PKG_DATA' ;; esac 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-tiny-sticker-tale.sh0000755000000000000000000000350114471751340015745 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # A Tiny Sticker Tale # send your bug reports to bugs@dotslashplay.it ### script_version=20251013.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='a-tiny-sticker-tale' GAME_NAME='A Tiny Sticker Tale' ARCHIVE_BASE_0_NAME='setup_a_tiny_sticker_tale_1.0_(77192).exe' ARCHIVE_BASE_0_MD5='a0b7226398a1f86b0e86688835112265' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='746194' ARCHIVE_BASE_0_VERSION='1.1-gog77192' ARCHIVE_BASE_0_URL='https://www.gog.com/game/a_tiny_sticker_tale' UNITY3D_NAME='a tiny sticker tale' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Ogre Pixel/A Tiny Sticker Tale' 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-a-virus-named-tom.sh0000700000000000000000000000600114471751340015410 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Virus Named Tom # send your bug reports to bugs@dotslashplay.it ### script_version=20240917.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='a-virus-named-tom' GAME_NAME='A Virus Named Tom' ARCHIVE_BASE_0_NAME='avnt-09172013-bin' ARCHIVE_BASE_0_MD5='85d11d3f05ad966a06a7e2f77e2fee45' ## This MojoSetup installer is not using a Makeself wrapper. ARCHIVE_BASE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_0_SIZE='270000' ARCHIVE_BASE_0_VERSION='1.0-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/a-virus-named-tom' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_FILES=' libtheoraplay.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 Xml CircuitGame.exe AVNTCommon.dll Lidgren.Network.dll MonoGame.Framework.dll MySql.Data.dll SDL2#.dll SDL2#.dll.config Steamworks#.dll Steamworks#.dll.config TheoraPlay#.dll TheoraPlay#.dll.config' CONTENT_DOC_MAIN_FILES=' Linux.README' APP_MAIN_EXE='CircuitGame.exe' APP_MAIN_ICON='A Virus Named TOM.bmp' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' 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.Configuration.Install.dll System.Core.dll System.Data.dll System.Design.dll System.Drawing.dll System.Management.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.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_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libogg.so.0 libpthread.so.0 libtheoradec.so.1 libtheora.so.0 libvorbis.so.0' 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-a-wish-upon-a-star.sh0000700000000000000000000000436114471751340015506 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # A Wish Upon a Star # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='a-wish-upon-a-star' GAME_NAME='A Wish Upon a Star' ARCHIVE_BASE_64BIT_0_NAME='AWishUponAStar_WIN_v1_2_0.zip' ARCHIVE_BASE_64BIT_0_MD5='1c76b283aabf5d64bc05fbf489cf3a25' ARCHIVE_BASE_64BIT_0_SIZE='260000' ARCHIVE_BASE_64BIT_0_VERSION='1.2.0-itch.2018.07.07' ARCHIVE_BASE_64BIT_0_URL='https://fabiandenter.itch.io/wish-upon-a-star' ARCHIVE_BASE_32BIT_0_NAME='AWishUponAStar_v1_2_0_WIN32.zip' ARCHIVE_BASE_32BIT_0_MD5='6644015a399d7485f7c73491f9462854' ARCHIVE_BASE_32BIT_0_SIZE='260000' ARCHIVE_BASE_32BIT_0_VERSION='1.2.0-itch.2018.07.07' ARCHIVE_BASE_32BIT_0_URL='https://fabiandenter.itch.io/wish-upon-a-star' UNITY3D_NAME='AWishUponAStar' CONTENT_PATH_DEFAULT_64BIT='AWishUponAStar_WIN_v1_2_0' CONTENT_PATH_DEFAULT_32BIT='AWishUponAStar_v1_2_0_WIN32' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Fabian Denter\A Wish Upon A Star' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_32BIT='32' PKG_BIN_ARCH_64BIT='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-about-love-hate-and-the-other-ones.sh0000700000000000000000000000623714471751340020551 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2019 Antoine Le Gonidec set -o errexit ### # About Love, Hate and the Other Ones # send your bug reports to bugs@dotslashplay.it ### script_version=20240917.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='about-love-hate-and-the-other-ones' GAME_NAME='About Love, Hate and the Other Ones' ARCHIVE_BASE_0_NAME='aboutloveandhate-1.3.1.deb' ARCHIVE_BASE_0_MD5='65c314a2a970b5c787d4e7e2a837e211' ARCHIVE_BASE_0_SIZE='570000' ARCHIVE_BASE_0_VERSION='1.3.1-humble150312' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/about-love-hate-and-the-other-ones' CONTENT_PATH_DEFAULT='usr/local/games/loveandhate' CONTENT_GAME_BIN64_PATH="${CONTENT_PATH_DEFAULT}/bin64" CONTENT_GAME_BIN64_FILES=' loveandhate' CONTENT_GAME_BIN32_PATH="${CONTENT_PATH_DEFAULT}/bin32" CONTENT_GAME_BIN32_FILES=' loveandhate' CONTENT_GAME_DATA_FILES=' bin' CONTENT_DOC_DATA_FILES=' README' FAKE_HOME_PERSISTENT_DIRECTORIES=' .aboutloveandhate' APP_MAIN_EXE='loveandhate' APP_MAIN_ICONS_LIST='APP_MAIN_ICON_16 APP_MAIN_ICON_24 APP_MAIN_ICON_32 APP_MAIN_ICON_48 APP_MAIN_ICON_64 APP_MAIN_ICON_128 APP_MAIN_ICON_256' APP_MAIN_ICON_16='../../../share/icons/hicolor/16x16/apps/loveandhate.png' APP_MAIN_ICON_24='../../../share/icons/hicolor/24x24/apps/loveandhate.png' APP_MAIN_ICON_32='../../../share/icons/hicolor/32x32/apps/loveandhate.png' APP_MAIN_ICON_48='../../../share/icons/hicolor/48x48/apps/loveandhate.png' APP_MAIN_ICON_64='../../../share/icons/hicolor/64x64/apps/loveandhate.png' APP_MAIN_ICON_128='../../../share/icons/hicolor/128x128/apps/loveandhate.png' APP_MAIN_ICON_256='../../../share/icons/hicolor/256x256/apps/loveandhate.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 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libX11.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 # 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-affinity.sh0000700000000000000000000000333014471751340013756 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Affinity # send your bug reports to bugs@dotslashplay.it ### script_version=20250801.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='affinity' GAME_NAME='Affinity' ARCHIVE_BASE_0_NAME='Affinity.zip' ARCHIVE_BASE_0_MD5='af34703d92f8a7b36d276a2ebad8c17b' ARCHIVE_BASE_0_SIZE='5700000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://boldbrushgames.itch.io/affinity' UNITY3D_NAME='Affinity' CONTENT_PATH_DEFAULT='Affinity' USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/saves" 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 # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-antichamber.sh0000700000000000000000000000574514471751340014436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Antichamber # send your bug reports to bugs@dotslashplay.it ### script_version=20241024.2 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='antichamber' GAME_NAME='Antichamber' ARCHIVE_BASE_0_NAME='antichamber_1.01_linux_1392664980.sh' ARCHIVE_BASE_0_MD5='37bca01c411d813c8729259b7db2dba0' ARCHIVE_BASE_0_SIZE='690000' ARCHIVE_BASE_0_VERSION='1.01-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/antichamber' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_PATH='data/x86/Binaries/Linux/lib' ## - The game binary is linked against libsteam_api.so, ## so we can not drop it. ## - The libSDL2_mixer-2.0.so.0 library is a custom build, ## it must be included to avoid the following error: ## undefined symbol: MinorityMix_SetPosition CONTENT_LIBS_BIN_FILES=' libPhysXCooking.so libPhysXCore.so libSDL2_mixer-2.0.so.0 libsteam_api.so libtcmalloc.so.0' CONTENT_GAME_BIN_PATH='data/x86' CONTENT_GAME_BIN_FILES=' Binaries/Linux/UDKGame-Linux' CONTENT_GAME_DATA_PATH='data/noarch' CONTENT_GAME_DATA_FILES=' Engine UDKGame AntichamberIcon.bmp AntichamberIcon.png' CONTENT_DOC_DATA_PATH='data/noarch' CONTENT_DOC_DATA_FILES=' README.linux BuildVersion.txt UpdateLog.txt' APP_MAIN_EXE='Binaries/Linux/UDKGame-Linux' APP_MAIN_ICON='noarch/AntichamberIcon.png' ## Work around the game engine incompatibility with the wayland backend of SDL APP_MAIN_PRERUN=' # Work around the game engine incompatibility with 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 libogg.so.0 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.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" # 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 ./UDKGame-Linux "$@" EOF } launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-arrow-patterns.sh0000700000000000000000000000441714471751340015144 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Arrow Patterns # send your bug reports to bugs@dotslashplay.it ### script_version=20241217.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='arrow-patterns' GAME_NAME='Arrow Patterns' ARCHIVE_BASE_1_NAME='setup_arrow_patterns_1.2_(72714).exe' ARCHIVE_BASE_1_MD5='1d67bfe9488ccaadbba781b809626304' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='20117' ARCHIVE_BASE_1_VERSION='1.2-gog72714' ARCHIVE_BASE_1_URL='https://www.gog.com/game/arrow_patterns' ARCHIVE_BASE_0_NAME='setup_arrow_patterns_1.0.0_(67004).exe' ARCHIVE_BASE_0_MD5='236ff841e84ba5bf09c5e47b517de840' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='21027' ARCHIVE_BASE_0_VERSION='1.0.0-gog67004' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' almixer.dll coronalabs.corona.native.dll lua.dll openal32.dll plugin_hwcursor.dll pthreads.dll arrow patterns.exe' CONTENT_GAME_DATA_FILES=' resources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/AleC Games/Arrow Patterns users/${USER}/AppData/Local/AleC Games/Arrow Patterns' APP_MAIN_EXE='arrow patterns.exe' APP_MAIN_ICON='resources/icon-win32.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" # 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-arrow.sh0000700000000000000000000000426114471751340013303 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Arrow # send your bug reports to bugs@dotslashplay.it ### script_version=20241217.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='arrow' GAME_NAME='Arrow' ARCHIVE_BASE_1_NAME='setup_arrow_1.4_(72714).exe' ARCHIVE_BASE_1_MD5='0ef643cae5b5ed1c4eb945878bb286f4' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='19128' ARCHIVE_BASE_1_VERSION='1.4-gog72714' ARCHIVE_BASE_1_URL='https://www.gog.com/game/arrow' ARCHIVE_BASE_0_NAME='setup_arrow_1.3_(70348).exe' ARCHIVE_BASE_0_MD5='8a697981bef580f95f8aa6cf13a7ccf2' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='18955' ARCHIVE_BASE_0_VERSION='1.3-gog70348' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' almixer.dll coronalabs.corona.native.dll lua.dll openal32.dll plugin_hwcursor.dll pthreads.dll arrow.exe' CONTENT_GAME_DATA_FILES=' resources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/AleC Games/Arrow users/${USER}/AppData/Local/AleC Games/Arrow' APP_MAIN_EXE='arrow.exe' APP_MAIN_ICON='resources/icon-win32.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" # 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-baba-is-you.sh0000700000000000000000000000631514471751340014263 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 Erwann Duclos # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2023 HS-157 set -o errexit ### # Baba Is You # send your bug reports to bugs@dotslashplay.it ### script_version=20240804.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='baba-is-you' GAME_NAME='Baba Is You' ARCHIVE_BASE_1_NAME='BIY_linux.tar.gz' ARCHIVE_BASE_1_MD5='d32487c5a6789c6c6b24064088708cab' ARCHIVE_BASE_1_SIZE='121230' ARCHIVE_BASE_1_VERSION='478f-itch.2024.02.24' ARCHIVE_BASE_1_URL='https://hempuli.itch.io/baba' ## Support for this archive is disabled until ./play.it can handle name collisions, ## cf. https://forge.dotslashplay.it/play.it/scripts/-/issues/355 #ARCHIVE_BASE_0_NAME='BIY_linux.tar.gz' #ARCHIVE_BASE_0_MD5='555d408a45b47d68042bb82e9a2ebcfc' #ARCHIVE_BASE_0_SIZE='150000' #ARCHIVE_BASE_0_VERSION='477-itch.2023.03.07' CONTENT_PATH_DEFAULT='Baba Is You' CONTENT_GAME_BIN64_PATH="${CONTENT_PATH_DEFAULT}/bin64" CONTENT_GAME_BIN64_FILES=' Chowdren' CONTENT_GAME_BIN32_PATH="${CONTENT_PATH_DEFAULT}/bin32" CONTENT_GAME_BIN32_FILES=' Chowdren' CONTENT_GAME_DATA_FILES=' Data icon.bmp Assets.dat gamecontrollerdb.txt' APP_MAIN_EXE_BIN64='Chowdren' APP_MAIN_EXE_BIN32='Chowdren' APP_MAIN_ICON='icon.bmp' ## Work around the shipped SDL lack of support for Wayland. ## Using system-provided SDL is not an option because with it the game fails to render anything, with the following error: ## Could not create OpenGL context: Could not create EGL context (call to eglCreateContext failed, reporting an error of EGL_BAD_ATTRIBUTE) APP_MAIN_PRERUN="${APP_MAIN_PRERUN:-}"' # Work around the shipped SDL lack of support for Wayland if [ "${SDL_VIDEODRIVER:-}" = "wayland" ]; then unset SDL_VIDEODRIVER fi ' 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 libGL.so.1 libm.so.6 libpthread.so.0' 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 # 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-back-to-bed.sh0000700000000000000000000000460414471751340014222 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Back to Bed # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='back-to-bed' GAME_NAME='Back to Bed' ARCHIVE_BASE_0_NAME='Back to Bed Linux Universal 1.1.6.zip' ARCHIVE_BASE_0_MD5='27947f187ecf27a5ce8ed98dff3bef8e' ARCHIVE_BASE_0_SIZE='558397' ARCHIVE_BASE_0_VERSION='1.1.6-itch1' ARCHIVE_BASE_0_URL='https://bedtimedigitalgames.itch.io/back-to-bed' UNITY3D_NAME='BackToBed' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='Back to Bed Linux Universal 1.1.6' CONTENT_DOC_DATA_FILES=' version.txt' 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 # 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-besiege.sh0000700000000000000000000000456614471751340013564 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Besiege # send your bug reports to bugs@dotslashplay.it ### script_version=20240607.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='besiege' GAME_NAME='Besiege' ARCHIVE_BASE_0_NAME='besiege_v1_05_12536_39273.sh' ARCHIVE_BASE_0_MD5='96d7e8ac29aa1f0bab020610d1a83c90' ARCHIVE_BASE_0_SIZE='2772414' ARCHIVE_BASE_0_VERSION='1.05-gog39273' ARCHIVE_BASE_0_URL='https://www.gog.com/game/besiege' UNITY3D_NAME='Besiege' UNITY3D_PLUGINS=' libRakNet.so ScreenSelector.so' ## TODO: Check if the Steam libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_FILES=' Besiege_Data/CompletedLevels.txt Besiege_Data/*.xml' USER_PERSISTENT_DIRECTORIES=' Besiege_Data/Mods' 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 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" # 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-bit-rat-singularity.sh0000700000000000000000000000471014471751340016062 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # BIT RAT: Singularity # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='bit-rat-singularity' GAME_NAME='BIT RAT: Singularity' ARCHIVE_BASE_0_NAME='bit_rat_singularity_linux.zip' ARCHIVE_BASE_0_MD5='a2780bc1b25a6b07116dc739139bb561' ARCHIVE_BASE_0_SIZE='33000' ARCHIVE_BASE_0_VERSION='1.0-itch1' ARCHIVE_BASE_0_URL='https://bucketdrumgames.itch.io/bitrat' CONTENT_PATH_DEFAULT='bit_rat_singularity' CONTENT_GAME_BIN_FILES=' runner' CONTENT_GAME_DATA_FILES=' assets' APP_MAIN_EXE='runner' APP_MAIN_ICON='assets/icon.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 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' # Build 512×512 icon from the 1024×1024 provided one 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 # Include game data ## Build 512×512 icon from the 1024×1024 provided one APP_MAIN_ICONS_LIST="$(application_icons_list 'APP_MAIN') APP_MAIN_ICON_512" APP_MAIN_ICON_512='assets/icon_512.png' ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" convert "$APP_MAIN_ICON" -resize 512 "$APP_MAIN_ICON_512" ) 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-blocks-that-matter.sh0000755000000000000000000001070314471751340015666 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Blocks That Matter # send your bug reports to bugs@dotslashplay.it ### script_version=20250305.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='blocks-that-matter' GAME_NAME='Blocks That Matter' ARCHIVE_BASE_GOG_0_NAME='gog_blocks_that_matter_2.0.0.3.sh' ARCHIVE_BASE_GOG_0_MD5='af9cec2b6104720c32718c02be120657' ARCHIVE_BASE_GOG_0_SIZE='200000' ARCHIVE_BASE_GOG_0_VERSION='1.1.0.4c-gog2.0.0.3' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/blocks_that_matter' ARCHIVE_BASE_HUMBLE_0_NAME='BlocksThatMatter_linux_1.1.0.3.zip' ARCHIVE_BASE_HUMBLE_0_MD5='a3c8509ba8b3ffc52522a1eac3dc0f10' ARCHIVE_BASE_HUMBLE_0_SIZE='190000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.1.0.3-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/blocks-that-matter' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='Blocks That Matter linux 1.1.0.3' ## Include shipped libraries that can not be replaced by system ones. CONTENT_LIBS_LIBS32_FILES=' libjinput-linux.so liblwjgl.so' CONTENT_LIBS_LIBS64_FILES=' libjinput-linux64.so liblwjgl64.so' CONTENT_GAME_MAIN_FILES=' BTM_lib BTM.jar BTM.png BTM.bftm config/*.xml' CONTENT_DOC_MAIN_RELATIVE_PATH='README' CONTENT_DOC_MAIN_FILES=' *.txt' USER_PERSISTENT_FILES=' config/*.xml' APP_MAIN_TYPE='java' APP_MAIN_EXE='BTM.jar' APP_MAIN_ICON='BTM.png' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libopenal.so.1' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_LIBS_ID="${GAME_ID}-libs" PKG_LIBS64_ID="$PKG_LIBS_ID" PKG_LIBS32_ID="$PKG_LIBS_ID" PKG_LIBS64_ARCH='64' PKG_LIBS32_ARCH='32' PKG_LIBS_DEPENDENCIES_LIBRARIES=' libc.so.6 libm.so.6 libpthread.so.0 libX11.so.6 libXcursor.so.1 libXext.so.6 libXrandr.so.2 libXxf86vm.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" # Run the default initialization actions initialization_default "$@" # Extract game data archive_extraction_default # Include game data content_inclusion_icons content_inclusion_default # Write launchers ## The game binary looks for libopenal.so (32-bit) and libopenal64.so (64-bit) instead of libopenal.so.1 ## Unversioned libopenal.so is already provided by the base library packages on Arch Linux and Gentoo. case "$(option_value 'package')" in ('arch') library_source='/usr/lib/libopenal.so.1' library_destination="$(package_path 'PKG_LIBS64')$(path_libraries)/libopenal64.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$library_source" "$library_destination" ;; ('deb') library_source_32bit='/usr/lib/i386-linux-gnu/libopenal.so.1' library_source_64bit='/usr/lib/x86_64-linux-gnu/libopenal.so.1' library_destination_32bit="$(package_path 'PKG_LIBS32')$(path_libraries)/libopenal.so" library_destination_64bit="$(package_path 'PKG_LIBS64')$(path_libraries)/libopenal64.so" mkdir --parents \ "$(dirname "$library_destination_32bit")" \ "$(dirname "$library_destination_64bit")" ln --symbolic "$library_source_32bit" "$library_destination_32bit" ln --symbolic "$library_source_64bit" "$library_destination_64bit" ;; ('gentoo'|'egentoo') library_source='/usr/lib64/libopenal.so.1' library_destination="$(package_path 'PKG_LIBS64')$(path_libraries)/libopenal64.so" mkdir --parents "$(dirname "$library_destination")" ln --symbolic "$library_source" "$library_destination" ;; esac ## The path to liblwjgl.so needs to be given on the command line APP_MAIN_JAVA_OPTIONS="$(application_java_options 'APP_MAIN') -Dorg.lwjgl.librarypath='$(path_libraries)'" launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-candle.sh0000700000000000000000000000422414471751340013376 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Candle # send your bug reports to bugs@dotslashplay.it ### script_version=20241101.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='candle' GAME_NAME='Candle' ## This installer is no longer available for sale from gog.com since 2024-10-31, ## cf. https://www.gog.com/forum/general/urgent_delisting_candle/post1 ARCHIVE_BASE_0_NAME='gog_candle_2.3.0.5.sh' ARCHIVE_BASE_0_MD5='4d60d0a24f5932207f6406a8ad0545be' ARCHIVE_BASE_0_SIZE='11000000' ARCHIVE_BASE_0_VERSION='1.1.17-gog2.3.0.5' UNITY3D_NAME='Candle' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MOVIES_FILES=" ${UNITY3D_NAME}_Data/StreamingAssets" PACKAGES_LIST=' PKG_BIN PKG_MOVIES PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_MOVIES 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_MOVIES_ID="${GAME_ID}-movies" PKG_MOVIES_DESCRIPTION='movies' 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-card-city-nights.sh0000755000000000000000000000412414471751340015332 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Card City Nights # send your bug reports to bugs@dotslashplay.it ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='card-city-nights' GAME_NAME='Card City Nights' ARCHIVE_BASE_0_NAME='cardcitynights_linux.zip' ARCHIVE_BASE_0_MD5='c843bd5642e2448e3a2c3e56c053fc84' ARCHIVE_BASE_0_SIZE='241947' ARCHIVE_BASE_0_VERSION='1.0.4-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/card-city-nights' UNITY3D_NAME='ccn' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' 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" 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' # 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-cats-hidden-in-places-expansions.sh0000700000000000000000000000342214471751340020370 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Cats Hidden in Places expansions: # - Cats Hidden in Paris - Extra level # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_PARIS='cats-hidden-in-paris' GAME_NAME_PARIS='Cats Hidden in Paris' EXPANSION_ID_PARIS='extra-level' EXPANSION_NAME_PARIS='Extra level' # Cats Hidden in Paris - Extra level ARCHIVE_BASE_PARIS_0_NAME='setup_cats_hidden_in_paris_-_extra_level_1.0_gog_dlc_fix6_(69829).exe' ARCHIVE_BASE_PARIS_0_MD5='d440ba3300af973579e5cef269b94962' ARCHIVE_BASE_PARIS_0_TYPE='innosetup' ARCHIVE_BASE_PARIS_0_SIZE='6687' ARCHIVE_BASE_PARIS_0_VERSION='1.0-gog69829' ARCHIVE_BASE_PARIS_0_URL='https://www.gog.com/game/cats_hidden_in_paris_extra_level' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES_PARIS=' goggame-2143975614.info' PKG_PARENT_ID_PARIS="$GAME_ID_PARIS" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # 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_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-cats-hidden-in-places.sh0000700000000000000000000001302714471751340016205 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Cats Hidden in Places: # - Cats Hidden in Paris # - Cats Hidden in Italy # - Cats Hidden in Bali # - Cats Hidden in Maple Hollow # - Cats Hidden in Georgia # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_PARIS='cats-hidden-in-paris' GAME_NAME_PARIS='Cats Hidden in Paris' GAME_ID_ITALY='cats-hidden-in-italy' GAME_NAME_ITALY='Cats Hidden in Italy' GAME_ID_BALI='cats-hidden-in-bali' GAME_NAME_BALI='Cats Hidden in Bali' GAME_ID_MAPLE='cats-hidden-in-maple-hollow' GAME_NAME_MAPLE='Cats Hidden in Maple Hollow' GAME_ID_GEORGIA='cats-hidden-in-georgia' GAME_NAME_GEORGIA='Cats Hidden in Georgia' # Cats Hidden in Paris ARCHIVE_BASE_PARIS_0_NAME='setup_cats_hidden_in_paris_1.0_gog_dlc_fix6_(69829).exe' ARCHIVE_BASE_PARIS_0_MD5='6b55ff57a52f1edd2990133737c870cd' ARCHIVE_BASE_PARIS_0_TYPE='innosetup' ARCHIVE_BASE_PARIS_0_SIZE='106572' ARCHIVE_BASE_PARIS_0_VERSION='1.0-gog69829' ARCHIVE_BASE_PARIS_0_URL='https://www.gog.com/game/cats_hidden_in_paris' # Cats Hidden in Italy ARCHIVE_BASE_ITALY_0_NAME='setup_cats_hidden_in_italy_1.0_gog_savefix_proper_(69657).exe' ARCHIVE_BASE_ITALY_0_MD5='7564fdad50e6e655cb16bca17db30058' ARCHIVE_BASE_ITALY_0_TYPE='innosetup' ARCHIVE_BASE_ITALY_0_SIZE='102010' ARCHIVE_BASE_ITALY_0_VERSION='1.0-gog69657' ARCHIVE_BASE_ITALY_0_URL='https://www.gog.com/game/cats_hidden_in_italy' # Cats Hidden in Bali ARCHIVE_BASE_BALI_0_NAME='setup_cats_hidden_in_bali_1.0_gog_(69565).exe' ARCHIVE_BASE_BALI_0_MD5='23ce61713a61919f9724a3377feca967' ARCHIVE_BASE_BALI_0_TYPE='innosetup' ARCHIVE_BASE_BALI_0_SIZE='104429' ARCHIVE_BASE_BALI_0_VERSION='1.0-gog69565' ARCHIVE_BASE_BALI_0_URL='https://www.gog.com/game/cats_hidden_in_bali' # Cats Hidden in Maple Hollow ARCHIVE_BASE_MAPLE_0_NAME='setup_cats_hidden_in_maple_hollow_1.0_gog_(69635).exe' ARCHIVE_BASE_MAPLE_0_MD5='2a3c9c4b7bc81efd01d62e45cf8f43e3' ARCHIVE_BASE_MAPLE_0_TYPE='innosetup' ARCHIVE_BASE_MAPLE_0_SIZE='97744' ARCHIVE_BASE_MAPLE_0_VERSION='1.0-gog69635' ARCHIVE_BASE_MAPLE_0_URL='https://www.gog.com/game/cats_hidden_in_maple_hollow' # Cats Hidden in Georgia ARCHIVE_BASE_GEORGIA_0_NAME='setup_cats_hidden_in_georgia_0313_gog_(71893).exe' ARCHIVE_BASE_GEORGIA_0_MD5='20dd463acabc0ad5cdaf0bfa958dfb4f' ARCHIVE_BASE_GEORGIA_0_TYPE='innosetup' ARCHIVE_BASE_GEORGIA_0_SIZE='120629' ARCHIVE_BASE_GEORGIA_0_VERSION='0313-gog71893' ARCHIVE_BASE_GEORGIA_0_URL='https://www.gog.com/game/cats_hidden_in_georgia' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES_PARIS=' Cats Hidden in Paris.exe' CONTENT_GAME_BIN_FILES_ITALY=' Cats Hidden in Italy.exe' CONTENT_GAME_BIN_FILES_BALI=' Cats Hidden in Bali.exe' CONTENT_GAME_BIN_FILES_MAPLE=' Cats Hidden in Maple Hollow.exe' CONTENT_GAME_BIN_FILES_GEORGIA=' Cats Hidden in Georgia.exe' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' Modules/advapi32.dll Modules/cctrans.dll Modules/kernel32.dll Modules/mmf2d3d8.dll Modules/mmf2d3d9.dll Modules/mmfs2.dll Modules/user32.dll' # TODO: Check if the Galaxy library is required. CONTENT_GAME1_BIN_FILES=' Modules/Galaxy.dll' # TODO: Check if the Steam library is required. CONTENT_GAME2_BIN_FILES=' Modules/steam_api.dll' CONTENT_GAME3_BIN_FILES=' Modules/*.sft Modules/*.mfx Modules/*.mvx' CONTENT_GAME_DATA_FILES_PARIS=' Cats Hidden in Paris.dat' CONTENT_GAME_DATA_FILES_ITALY=' Cats Hidden in Italy.dat' CONTENT_GAME_DATA_FILES_BALI=' Cats Hidden in Bali.dat' CONTENT_GAME_DATA_FILES_MAPLE=' Cats Hidden in Maple Hollow.dat' CONTENT_GAME_DATA_FILES_GEORGIA=' Cats Hidden in Georgia.dat' CONTENT_GAME0_DATA_FILES=' sounds' WINE_PERSISTENT_DIRECTORIES_PARIS=' users/${USER}/AppData/Roaming/Cats Hidden in Paris' WINE_PERSISTENT_DIRECTORIES_ITALY=' users/${USER}/AppData/Roaming/Cats Hidden in Italy' WINE_PERSISTENT_DIRECTORIES_BALI=' users/${USER}/AppData/Roaming/Cats Hidden in Bali' WINE_PERSISTENT_DIRECTORIES_MAPLE=' users/${USER}/AppData/Roaming/Cats Hidden in Maple Hollow' WINE_PERSISTENT_DIRECTORIES_GEORGIA=' users/${USER}/AppData/Roaming/Cats Hidden in Georgia' APP_MAIN_EXE_PARIS='Cats Hidden in Paris.exe' APP_MAIN_EXE_ITALY='Cats Hidden in Italy.exe' APP_MAIN_EXE_BALI='Cats Hidden in Bali.exe' APP_MAIN_EXE_MAPLE='Cats Hidden in Maple Hollow.exe' APP_MAIN_EXE_GEORGIA='Cats Hidden in Georgia.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID_PARIS="${GAME_ID_PARIS}-data" PKG_DATA_ID_ITALY="${GAME_ID_ITALY}-data" PKG_DATA_ID_BALI="${GAME_ID_BALI}-data" PKG_DATA_ID_MAPLE="${GAME_ID_MAPLE}-data" PKG_DATA_ID_GEORGIA="${GAME_ID_GEORGIA}-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-chants-of-sennaar.sh0000755000000000000000000000350314471751340015470 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Chants of Sennaar # send your bug reports to bugs@dotslashplay.it ### script_version=20251203.2 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='chants-of-sennaar' GAME_NAME='Chants of Sennaar' ARCHIVE_BASE_0_NAME='setup_chants_of_sennaar_1.0.0.9_r4_(64bit)_(85665).exe' ARCHIVE_BASE_0_MD5='e2d0a2d2fb1770bb03240a5ffac7f812' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='628740' ARCHIVE_BASE_0_VERSION='1.0.0.9-gog85665' ARCHIVE_BASE_0_URL='https://www.gog.com/game/chants_of_sennaar' UNITY3D_NAME='chants of sennaar' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Rundisc/Chants Of Sennaar' 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-cloud-gardens.sh0000700000000000000000000000325614471751340014703 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Cloud Gardens # send your bug reports to bugs@dotslashplay.it ### script_version=20240808.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='cloud-gardens' GAME_NAME='Cloud Gardens' ARCHIVE_BASE_0_NAME='f09f8cb1-windows.zip' ARCHIVE_BASE_0_MD5='d37797bda416ef5495441aabf2f906ea' ARCHIVE_BASE_0_SIZE='640000' ARCHIVE_BASE_0_VERSION='1.1.1-itch.2022.03.09' ARCHIVE_BASE_0_URL='https://noio.itch.io/cloud-gardens' UNITY3D_NAME='Cloud Gardens' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/noio/Cloud Gardens' 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-codemancer.sh0000755000000000000000000000367314471751340014271 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Codemancer # send your bug reports to bugs@dotslashplay.it ### script_version=20250906.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='codemancer' GAME_NAME='Codemancer' ARCHIVE_BASE_0_NAME='Codemancer.msi' ARCHIVE_BASE_0_MD5='727dfcf3640ce064f455a023c1c50e1e' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.0.2-itch.2020.03.17' ARCHIVE_BASE_0_URL='https://importantlittlegames.itch.io/codemancer-ch-1' CONTENT_PATH_DEFAULT='appdir:.' CONTENT_GAME_BIN_FILES=' adobe air codemancer chapter 1.exe' CONTENT_GAME_DATA_FILES=' assets meta-inf mimetype icon.ico *.swf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/CodemancerChapter1' APP_MAIN_EXE='codemancer chapter 1.exe' APP_MAIN_ICON='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" # 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-contraption-maker.sh0000700000000000000000000001115414471751340015605 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Contraption Maker # send your bug reports to bugs@dotslashplay.it ### script_version=20251201.2 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='contraption-maker' GAME_NAME='Contraption Maker' ARCHIVE_BASE_GOG_2_NAME='contraption_maker_1_4_46_86756.sh' ARCHIVE_BASE_GOG_2_MD5='d7d78e22cdf2592b23834edbf1f76780' ARCHIVE_BASE_GOG_2_SIZE='381365' ARCHIVE_BASE_GOG_2_VERSION='1.4.46-gog86756' ARCHIVE_BASE_GOG_2_URL='https://www.gog.com/game/contraption_maker' ARCHIVE_BASE_GOG_1_NAME='contraption_maker_1_4_11_70403.sh' ARCHIVE_BASE_GOG_1_MD5='14d482ccff969ae97cdf8d4b0d6d4f74' ARCHIVE_BASE_GOG_1_SIZE='308082' ARCHIVE_BASE_GOG_1_VERSION='1.4.11-gog70403' ARCHIVE_BASE_GOG_0_NAME='contraption_maker_1_4_9_67880.sh' ARCHIVE_BASE_GOG_0_MD5='8ab8c87a6d1a0e122ea9432a7a74d96c' ARCHIVE_BASE_GOG_0_SIZE='320396' ARCHIVE_BASE_GOG_0_VERSION='1.4.9.0-gog67880' ## This DRM-free installer is no longer available from humblebundle.com, ## they now only sell this game to Steam users. ARCHIVE_BASE_HUMBLE_0_NAME='ContraptionMaker-linux-11410.sh' ARCHIVE_BASE_HUMBLE_0_MD5='7d7a7a4a56cfff722d0654563aee482a' ARCHIVE_BASE_HUMBLE_0_SIZE='251700' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0-humble.2015.04.07' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_GAME_BIN_RELATIVE_PATH_HUMBLE='x86_64' CONTENT_GAME_BIN_FILES_GOG=' ContraptionMaker' CONTENT_GAME_BIN_FILES_HUMBLE=' ContraptionMakerLauncher' CONTENT_GAME_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_GAME_DATA_FILES_GOG=' assets' CONTENT_GAME_DATA_FILES_HUMBLE=' assets ContraptionMakerPatcher_staging ContraptionMaker_staging icon.png' CONTENT_DOC_DATA_RELATIVE_PATH_HUMBLE='noarch' CONTENT_DOC_DATA_FILES_HUMBLE=' eula.txt' # Work around a crash on XWayland due to the old shipped GLFW build # cf. https://forge.dotslashplay.it/play.it/games-puzzle/-/issues/7 ## TODO: Check if it is still required with the current game build LD_PRELOAD_SOURCE=' #define _GNU_SOURCE #include #include XkbDescPtr XkbGetKeyboard(Display *display, unsigned int _, unsigned int device_spec) { XkbDescPtr desc = XkbGetMap(display, 0, device_spec); XkbGetNames(display, XkbKeyNamesMask, desc); return desc; } void XkbFreeKeyboard(XkbDescPtr xkb, unsigned int which, Bool free_all) { XkbFreeNames(xkb, XkbKeyNamesMask, free_all); XkbFreeClientMap(xkb, which, free_all); } ' APP_MAIN_EXE_GOG='ContraptionMaker' APP_MAIN_EXE_HUMBLE='ContraptionMakerLauncher' APP_MAIN_ICON_GOG='assets/gui/skins/default/mainmenu/mainmenu_logo_icon.png' APP_MAIN_ICON_HUMBLE='noarch/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 libfontconfig.so.1 libgcc_s.so.1 libGL.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libssl.so.1.0.0 libstdc++.so.6 libX11.so.6 libXcursor.so.1 libXinerama.so.1 libXi.so.6 libXrandr.so.2 libXxf86vm.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 # Include game data. ## Prepare icons for inclusion. icon_source="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/$(icon_path 'APP_MAIN_ICON')" icon_temp_file="${PLAYIT_WORKDIR}/gamedata/$(content_path_default)/temp_icon.png" case "$(current_archive)" in ## gog.com - Convert the shipped icon to use a square ratio. ('ARCHIVE_BASE_GOG_'*) convert \ -background none -gravity center "$icon_source" \ -resize 192x192 -extent 192x192 "$icon_temp_file" ;; ## humblebundle.com - Convert the shipped icon to a smaller size. ('ARCHIVE_BASE_HUMBLE_'*) convert \ "$icon_source" \ -resize 512x512 "$icon_temp_file" ;; esac mv "$icon_temp_file" "$icon_source" 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-cosmic-express.sh0000700000000000000000000000533614471751340015121 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Cosmic Express # send your bug reports to bugs@dotslashplay.it ### script_version=20240925.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='cosmic-express' GAME_NAME='Cosmic Express' ARCHIVE_BASE_ITCH_0_NAME='cosmic-express-linux.zip' ARCHIVE_BASE_ITCH_0_MD5='145789ba0550e5a7e440577f0aec7963' ARCHIVE_BASE_ITCH_0_SIZE='243517' ARCHIVE_BASE_ITCH_0_VERSION='1.0.4-itch.2017.04.04' ARCHIVE_BASE_ITCH_0_URL='https://draknek.itch.io/cosmic-express' ## This DRM-free archive is no longer available from humblebundle.com, ## they now only sell Steam keys for this game. ARCHIVE_BASE_HUMBLE_0_NAME='cosmic-express-linux-1.0.4.zip' ARCHIVE_BASE_HUMBLE_0_MD5='145789ba0550e5a7e440577f0aec7963' ARCHIVE_BASE_HUMBLE_0_SIZE='860000' ARCHIVE_BASE_HUMBLE_0_VERSION='1.0.4-humble' UNITY3D_NAME='Cosmic Express' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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 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" # 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-cotrio.sh0000700000000000000000000000337614471751340013456 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Cotrio # send your bug reports to bugs@dotslashplay.it ### script_version=20250801.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='cotrio' GAME_NAME='Cotrio' ARCHIVE_BASE_0_NAME='Cotrio by Bart Bialek PC x64.zip' ARCHIVE_BASE_0_MD5='6773aa0537f1d53b319817763db7f0e0' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='1.0-itch.2018.10.28' ARCHIVE_BASE_0_URL='https://bialek.itch.io/cotrio' UNITY3D_NAME='Cotrio' CONTENT_PATH_DEFAULT='PCx64' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Bkbl Bartosz Białek\Cotrio' 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 # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-crime-o-clock.sh0000755000000000000000000000373314471751340014612 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # Crime O'Clock # send your bug reports to bugs@dotslashplay.it ### script_version=20251008.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='crime-o-clock' GAME_NAME='Crime O’Clock' ARCHIVE_BASE_0_NAME='setup_crime_oclock_1.3.2_(64bit)_(68484).exe' ARCHIVE_BASE_0_MD5='5facc36de5b0de6c6fd7b616c0e8ec54' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1691934' ARCHIVE_BASE_0_VERSION='1.3.2-gog68484' ARCHIVE_BASE_0_URL='https://www.gog.com/game/crime_oclock' UNITY3D_NAME="crime o'clock" CONTENT_PATH_DEFAULT='.' ## The game crashes on launch if steam_api64 library is not included ## and steam_api64.dll is linked against Galaxy64.dll. CONTENT_GAME0_BIN_FILES=' galaxy64.dll' WINE_PERSISTENT_DIRECTORIES=" users/\${USER}/AppData/LocalLow/Bad Seed SRL/Crime O'Clock" 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 temporary files. working_directory_cleanup exit 0 games/play-cube-escape.sh0000700000000000000000000000470614471751340014331 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Cube Escape # send your bug reports to bugs@dotslashplay.it ### script_version=20260418.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='cube-escape' GAME_NAME='Cube Escape' ARCHIVE_BASE_0_NAME='setup_cube_escape_collection_1.0_(43930).exe' ARCHIVE_BASE_0_MD5='bd5035262ff2b9adc3a1887d8168ebaf' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.0-gog43930' ARCHIVE_BASE_0_URL='https://www.gog.com/game/cube_escape_collection' # AIR_NAME is not supported by the library yet, # the current game script is a prototype. # (./play.it 2.35) AIR_NAME='Cube Escape Collection' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=" Adobe AIR META-INF mimetype ${AIR_NAME}.exe" # TODO: Empty file, check if it is required. CONTENT_GAME0_BIN_PATH='app' CONTENT_GAME0_BIN_FILES=' Adobe AIR/Versions/1.0/Resources/adobecp.vch' CONTENT_GAME_DATA_FILES=" ${AIR_NAME}.swf" CONTENT_GAME0_DATA_FILES=' sounds.swf cube-escape-translations.xml' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/Documents/Rusty Lake/CubeEscapeCollection' APP_MAIN_EXE="${AIR_NAME}.exe" APP_MAIN_ICONS_LIST=' APP_MAIN_ICON_16 APP_MAIN_ICON_32 APP_MAIN_ICON_48 APP_MAIN_ICON_128' APP_MAIN_ICON_16='icons/Icon16.png' APP_MAIN_ICON_32='icons/Icon32.png' APP_MAIN_ICON_48='icons/Icon48.png' APP_MAIN_ICON_128='icons/Icon128.png' 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. 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-deaths-life.sh0000700000000000000000000000351714471751340014341 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Death's Life # send your bug reports to bugs@dotslashplay.it ### script_version=20250307.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='deaths-life' GAME_NAME='Death’s Life' ARCHIVE_BASE_0_NAME='deaths-life-win.zip' ARCHIVE_BASE_0_MD5='6a5742a023b47110d9eb3c47388b262b' ARCHIVE_BASE_0_SIZE='290000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://umbugames.itch.io/deaths-life' UNITY3D_NAME='Deaths Life' CONTENT_PATH_DEFAULT='.' ## The game crashes early if Steam libraries are missing. CONTENT_GAME0_BIN_FILES=' steam_api64.dll' USER_PERSISTENT_DIRECTORIES=' Deaths Life_Data/Save' 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-donut-county.sh0000700000000000000000000000345514471751340014625 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Donut County # send your bug reports to bugs@dotslashplay.it ### script_version=20250307.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='donut-county' GAME_NAME='Donut County' ARCHIVE_BASE_0_NAME='setup_donut_county_1.1.0_(64bit)_(25035).exe' ARCHIVE_BASE_0_MD5='4a4b84b7ac128e5af59b64a4bfffabe5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='460000' ARCHIVE_BASE_0_VERSION='1.1.0-gog25035' ARCHIVE_BASE_0_URL='https://www.gog.com/game/donut_county' UNITY3D_NAME='donutcounty' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Annapurna Interactive/Donut County' 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-doodle-god.sh0000700000000000000000000000414614471751340014170 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Doodle God # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.4 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='doodle-god' GAME_NAME='Doodle God' # This archive used to be available from freebies.indiegala.com. ARCHIVE_BASE_0_NAME='doodle-god_win.zip' ARCHIVE_BASE_0_MD5='cdba1abf1c909c7145da975dac82945d' # unzip can not be used for this archive, # because it does not treat "\" as a path separator. ARCHIVE_BASE_0_EXTRACTOR='unar' ARCHIVE_BASE_0_SIZE='160000' ARCHIVE_BASE_0_VERSION='3.1.64-indiegala1' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' DoodleGod.exe' # TODO: Install libraries in a standard path. # TODO: Drop unused libraries. CONTENT_GAME0_BIN_FILES=' fmodex.dll fmodexL.dll freeglut.dll FreeImage.dll FreeType-6.dll RedShell.dll Zlib.dll' CONTENT_GAME_DATA_FILES=' data' # Despite the misleading name, this path seems to include game progress status. USER_PERSISTENT_DIRECTORIES=' temp' APP_MAIN_EXE='DoodleGod.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. 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-doors-paradox.sh0000700000000000000000000000544614471751340014741 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Doors: Paradox # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='doors-paradox' GAME_NAME='Doors: Paradox' ARCHIVE_BASE_1_NAME='setup_doors_paradox_1.01_(65794).exe' ARCHIVE_BASE_1_MD5='cdae131a2fb76a2c3cee4176acfb4b8f' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_doors_paradox_1.01_(65794)-1.bin' ARCHIVE_BASE_1_PART1_MD5='bf9609151ca9b9daa4517db4b3643fdc' ARCHIVE_BASE_1_SIZE='4161487' ARCHIVE_BASE_1_VERSION='1.01-gog65794' ARCHIVE_BASE_1_URL='https://www.gog.com/game/doors_paradox' UNITY3D_NAME='Doors Paradox' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' libOni.dll' # Without the Steam library, the game crashes on level completion. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" # TODO: Check if the Galaxy library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Big Loop Studios/Doors_ Paradox' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-down-in-bermuda.sh0000700000000000000000000000354214471751340015142 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Down in Bermuda # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='down-in-bermuda' GAME_NAME='Down in Bermuda' ARCHIVE_BASE_0_NAME='setup_down_in_bermuda_1.6.3_(340)_(64bit)_(44306).exe' ARCHIVE_BASE_0_MD5='814b6cc189d0277899ac3dce355aec4f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_VERSION='1.6.3.340-gog44306' ARCHIVE_BASE_0_SIZE='490000' ARCHIVE_BASE_0_URL='https://www.gog.com/game/down_in_bermuda' UNITY3D_NAME='downinbermuda' CONTENT_PATH_DEFAULT='.' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Yak & Co\Down in Bermuda' 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-dr-livingstone-i-presume.sh0000700000000000000000000001512514471751340017022 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Dr Livingstone, I Presume? # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='dr-livingstone-i-presume' GAME_NAME='Dr Livingstone, I Presume?' GAME_ID_DEMO="${GAME_ID}-demo" GAME_NAME_DEMO="$GAME_NAME (demo)" ARCHIVE_BASE_0_NAME='setup_dr_livingstone_i_presume_220419_0803_(55205).exe' ARCHIVE_BASE_0_MD5='d6fdb1ce7ee00f5068b1d93f4592dad0' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_dr_livingstone_i_presume_220419_0803_(55205)-1.bin' ARCHIVE_BASE_0_PART1_MD5='36b0f92cde1b8ccbd42f339fbc752ada' ARCHIVE_BASE_0_SIZE='5300000' ARCHIVE_BASE_0_VERSION='2022.04.19-gog55205' ARCHIVE_BASE_0_URL='https://www.gog.com/game/dr_livingstone_i_presume' # This free demo used to be distributed by GOG.com. ARCHIVE_BASE_DEMO_0_NAME='setup_dr_livingstone_i_presume_demo_210726_1631_(48828).exe' ARCHIVE_BASE_DEMO_0_MD5='57f69d1473e4c24706fe2cc70c56d62b' ARCHIVE_BASE_DEMO_0_TYPE='innosetup' ARCHIVE_BASE_DEMO_0_PART1_NAME='setup_dr_livingstone_i_presume_demo_210726_1631_(48828)-1.bin' ARCHIVE_BASE_DEMO_0_PART1_MD5='4adc9914d1629ff3849f9d1d1f139b5c' ARCHIVE_BASE_DEMO_0_SIZE='3800000' ARCHIVE_BASE_DEMO_0_VERSION='2021.07.26-gog48828' UNREALENGINE4_NAME='DrLivingstone' # Experimental support for Unreal Engine 4 shipped libraries. # No support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNREALENGINE4_LIBRARIES_THIRDPARTY=' DbgHelp/dbghelp.dll NVIDIA/NVaftermath/Win64/GFSDK_Aftermath_Lib.x64.dll Ogg/Win64/VS2015/libogg_64.dll PhysX3/Win64/VS2015/APEX_Clothing_x64.dll PhysX3/Win64/VS2015/ApexFramework_x64.dll PhysX3/Win64/VS2015/APEX_Legacy_x64.dll PhysX3/Win64/VS2015/NvCloth_x64.dll PhysX3/Win64/VS2015/PhysX3Common_x64.dll PhysX3/Win64/VS2015/PhysX3Cooking_x64.dll PhysX3/Win64/VS2015/PhysX3_x64.dll PhysX3/Win64/VS2015/PxFoundation_x64.dll PhysX3/Win64/VS2015/PxPvdSDK_x64.dll Steamworks/Steamv147/Win64/steam_api64.dll Vorbis/Win64/VS2015/libvorbis_64.dll Vorbis/Win64/VS2015/libvorbisfile_64.dll Windows/XAudio2_9/x64/xaudio2_9redist.dll' # TODO: Check if the Steam library is required. UNREALENGINE4_LIBRARIES_THIRDPARTY="$UNREALENGINE4_LIBRARIES_THIRDPARTY Steamworks/Steamv147/Win64/steam_api64.dll" UNREALENGINE4_LIBRARIES_PLUGINS=' OnlineSubsystemGOG/Source/ThirdParty/GalaxySDK/Libraries/Galaxy64.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkAudioInput.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkCompressor.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkDelay.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkExpander.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkFlanger.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkGain.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkGuitarDistortion.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkHarmonizer.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkMatrixReverb.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkMotion.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkParametricEQ.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkPeakLimiter.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkPitchShifter.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkRecorder.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkReflect.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkRoomVerb.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSilenceGenerator.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSineTone.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSoundEngineDLL.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSoundSeedAir.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSoundSeedImpact.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkStereoDelay.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkSynthOne.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkTimeStretch.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkToneGen.dll Wwise/ThirdParty/x64_vc160/Release/bin/AkTremolo.dll Wwise/ThirdParty/x64_vc160/Release/bin/Auro.dll Wwise/ThirdParty/x64_vc160/Release/bin/iZotope.dll Wwise/ThirdParty/x64_vc160/Release/bin/McDSP.dll' # TODO: Check if the Galaxy library is required. UNREALENGINE4_LIBRARIES_PLUGINS="$UNREALENGINE4_LIBRARIES_PLUGINS OnlineSubsystemGOG/Source/ThirdParty/GalaxySDK/Libraries/Galaxy64.dll" CONTENT_PATH_DEFAULT='.' # Prevent inclusion of unused libraries and debug symbols. # (./play.it 2.35) CONTENT_GAME_BIN_FILES=" ${UNREALENGINE4_NAME}/Binaries/Win64/${UNREALENGINE4_NAME}-Win64-Shipping.exe" APP_MAIN_EXE="${UNREALENGINE4_NAME}/Binaries/Win64/${UNREALENGINE4_NAME}-Win64-Shipping.exe" APP_MAIN_ICON_WRESTOOL_OPTIONS='--type=14 --name=123 --language=1033' 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_ID_DEMO="${GAME_ID_DEMO}-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' # Include shipped libraries. CONTENT_UNREALENGINE4_THIRDPARTY_FILES=$( printf '%s' "$UNREALENGINE4_LIBRARIES_THIRDPARTY" | list_clean | sed --expression='s;^;Engine/Binaries/ThirdParty/;' ) CONTENT_UNREALENGINE4_PLUGINS_FILES=$( printf '%s' "$UNREALENGINE4_LIBRARIES_PLUGINS" | list_clean | sed --expression="s;^;$(unrealengine4_name)/Plugins/;" ) content_inclusion 'UNREALENGINE4_THIRDPARTY' 'PKG_BIN' "$(path_libraries)" content_inclusion 'UNREALENGINE4_PLUGINS' 'PKG_BIN' "$(path_libraries)" 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-dracula-love-kills.sh0000700000000000000000000000555314471751340015650 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Dracula: Love Kills # send your bug reports to bugs@dotslashplay.it ### script_version=20250307.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='dracula-love-kills' GAME_NAME='Dracula: Love Kills' ARCHIVE_BASE_EN_0_NAME='setup_dracula_love_kills_1.0_(31713).exe' ARCHIVE_BASE_EN_0_MD5='df1dc685677ed169914c9a1d96f47e32' ARCHIVE_BASE_EN_0_SIZE='467145' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_VERSION='1.0-gog31713' ARCHIVE_BASE_EN_0_URL='https://www.gog.com/game/dracula_love_kills' ARCHIVE_BASE_FR_0_NAME='setup_dracula_love_kills_1.0_(french)_(31713).exe' ARCHIVE_BASE_FR_0_MD5='7f7d9011c141b5658d2d09ccdb43b45a' ARCHIVE_BASE_FR_0_SIZE='467193' ARCHIVE_BASE_FR_0_TYPE='innosetup' ARCHIVE_BASE_FR_0_VERSION='1.0-gog31713' ARCHIVE_BASE_FR_0_URL='https://www.gog.com/game/dracula_love_kills' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' d3dx9_42.dll msvcr71.dll dracula_love_kills.exe' CONTENT_GAME_L10N_FILES=' game.ini 000/game.pak 000/sounds.pak' CONTENT_GAME_L10N_FILES_EN="$CONTENT_GAME_L10N_FILES 000/en.pak 000/sounds_en.pak 000/logo_en.pak" CONTENT_GAME_L10N_FILES_FR="$CONTENT_GAME_L10N_FILES 000/fr.pak 000/sounds_fr.pak" CONTENT_GAME_DATA_FILES=' branding cursor shaders.0050 user.ini data.txt 000/movie.pak 000/texture.pak' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Frogwares/Dracula. Love Kills' APP_MAIN_EXE='dracula_love_kills.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' 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-eets-munchies.sh0000700000000000000000000000476014471751340014726 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Eets Munchies # send your bug reports to bugs@dotslashplay.it ### script_version=20241103.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='eets-munchies' GAME_NAME='Eets Munchies' ARCHIVE_BASE_32BIT_0_NAME='eets2-32x_linux_1394496804.tar' ARCHIVE_BASE_32BIT_0_MD5='cdbae24ea2579ff9169f2b3d68be8a09' ARCHIVE_BASE_32BIT_0_SIZE='740000' ARCHIVE_BASE_32BIT_0_VERSION='1.0-humble.2014.03.10' ARCHIVE_BASE_32BIT_0_URL='https://www.humblebundle.com/store/eets-munchies' ARCHIVE_BASE_64BIT_0_NAME='eets2-64x_linux_1394496804.tar' ARCHIVE_BASE_64BIT_0_MD5='ee7694ca24aabb4c3890123f8cb2474e' ARCHIVE_BASE_64BIT_0_SIZE='740000' ARCHIVE_BASE_64BIT_0_VERSION='1.0-humble.2014.03.10' ARCHIVE_BASE_64BIT_0_URL='https://www.humblebundle.com/store/eets-munchies' CONTENT_PATH_DEFAULT='eets2' CONTENT_LIBS_BIN_PATH="${CONTENT_PATH_DEFAULT}/bin/lib" CONTENT_LIBS_BIN_FILES_32BIT=' libfmodevent.so libfmodevent-4.44.18.so libfmodex.so libfmodex-4.44.18.so' CONTENT_LIBS_BIN_FILES_64BIT=' libfmodevent64.so libfmodevent64-4.44.18.so libfmodex64.so libfmodex64-4.44.18.so' CONTENT_GAME_BIN_FILES=' bin/eets2-bin' CONTENT_GAME_DATA_FILES=' Data *.json *.kwad *.lua *.png *.xpm' APP_MAIN_EXE='bin/eets2-bin' APP_MAIN_ICON='eets2.xpm' 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=' libc.so.6 libdl.so.2 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" # 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-else-heart-break.sh0000755000000000000000000000451314471751340015276 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2017 Mopi set -o errexit ### # else Heart.Break() # send your bug reports to bugs@dotslashplay.it ### script_version=20250409.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='else-heart-break' GAME_NAME='else Heart.Break()' ARCHIVE_BASE_0_NAME='ElseHeartbreakLinux.tgz' ARCHIVE_BASE_0_MD5='7030450cadac6234676967ae41f2a732' ARCHIVE_BASE_0_SIZE='1418045' ARCHIVE_BASE_0_VERSION='1.0.9-humble160129' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/else-heartbreak' UNITY3D_NAME='ElseHeartbreak' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='ElseHeartbreakLinux' ## TODO: Check if it is required to build a dedicated package for assets CONTENT_GAME_ASSETS_FILES=" ${UNITY3D_NAME}_Data/*.assets" USER_PERSISTENT_DIRECTORIES=" ${UNITY3D_NAME}_Data/InitData ${UNITY3D_NAME}_Data/Saves" PACKAGES_LIST=' PKG_BIN PKG_ASSETS PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_ASSETS 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_ASSETS_ID="${GAME_ID}-assets" PKG_ASSETS_DESCRIPTION='assets' 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-english-country-tune.sh0000700000000000000000000000461714471751340016261 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # English Country Tune # send your bug reports to bugs@dotslashplay.it ### script_version=20241123.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='english-country-tune' GAME_NAME='English Country Tune' ARCHIVE_BASE_0_NAME='EnglishCountryTune_Linux_1370040672.tar.gz' ARCHIVE_BASE_0_MD5='1097749402732c31348fd430b94e9350' ARCHIVE_BASE_0_SIZE='325208' ARCHIVE_BASE_0_VERSION='1.0-humble' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/english-country-tune' UNITY3D_NAME='English Country Tune' CONTENT_PATH_DEFAULT='English Country Tune' 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 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_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-enigmatis.sh0000700000000000000000000001543214471751340014133 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Enigmatis series: # - Enigmatis: The Ghosts of Maple Creek # - Enigmatis 2: The Mists of Ravenwood # - Enigmatis 3: The Shadow of Karkhala # send your bug reports to bugs@dotslashplay.it ### script_version=20241218.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_ENIGMATIS1='enigmatis-1' GAME_NAME_ENIGMATIS1='Enigmatis: The Ghosts of Maple Creek' GAME_ID_ENIGMATIS2='enigmatis-2' GAME_NAME_ENIGMATIS2='Enigmatis 2: The Mists of Ravenwood' GAME_ID_ENIGMATIS3='enigmatis-3' GAME_NAME_ENIGMATIS3='Enigmatis 3: The Shadow of Karkhala' ARCHIVE_BASE_ENIGMATIS1_EN_0_NAME='enigmatis_the_ghosts_of_maple_creek_en_gog_1_22618.sh' ARCHIVE_BASE_ENIGMATIS1_EN_0_MD5='f689351491589ff01153d7e81200954c' ARCHIVE_BASE_ENIGMATIS1_EN_0_SIZE='508525' ARCHIVE_BASE_ENIGMATIS1_EN_0_VERSION='1.0-gog22618' ARCHIVE_BASE_ENIGMATIS1_EN_0_URL='https://www.gog.com/game/enigmatis_the_ghosts_of_maple_creek' ARCHIVE_BASE_ENIGMATIS1_FR_0_NAME='enigmatis_the_ghosts_of_maple_creek_fr_gog_1_22618.sh' ARCHIVE_BASE_ENIGMATIS1_FR_0_MD5='062a547532f2be20d3868acd554fefaa' ARCHIVE_BASE_ENIGMATIS1_FR_0_SIZE='508495' ARCHIVE_BASE_ENIGMATIS1_FR_0_VERSION='1.0-gog22618' ARCHIVE_BASE_ENIGMATIS1_FR_0_URL='https://www.gog.com/game/enigmatis_the_ghosts_of_maple_creek' ARCHIVE_BASE_ENIGMATIS2_EN_0_NAME='enigmatis_2_the_mists_of_ravenwood_en_gog_1_22643.sh' ARCHIVE_BASE_ENIGMATIS2_EN_0_MD5='3b632c015135e9dd361c045de98efd34' ARCHIVE_BASE_ENIGMATIS2_EN_0_SIZE='1620915' ARCHIVE_BASE_ENIGMATIS2_EN_0_VERSION='1.0-gog22643' ARCHIVE_BASE_ENIGMATIS2_EN_0_URL='https://www.gog.com/game/enigmatis_2_the_mists_of_ravenwood' ARCHIVE_BASE_ENIGMATIS2_FR_0_NAME='enigmatis_2_the_mists_of_ravenwood_fr_gog_1_22643.sh' ARCHIVE_BASE_ENIGMATIS2_FR_0_MD5='2feeafc1a69c4ca11a37c631bf8701bb' ARCHIVE_BASE_ENIGMATIS2_FR_0_SIZE='1620922' ARCHIVE_BASE_ENIGMATIS2_FR_0_VERSION='1.0-gog22643' ARCHIVE_BASE_ENIGMATIS2_FR_0_URL='https://www.gog.com/game/enigmatis_2_the_mists_of_ravenwood' ARCHIVE_BASE_ENIGMATIS3_EN_0_NAME='enigmatis_3_the_shadow_of_karkhala_en_gog_1_22690.sh' ARCHIVE_BASE_ENIGMATIS3_EN_0_MD5='2a140d0ad6e3de74484d105c02959940' ARCHIVE_BASE_ENIGMATIS3_EN_0_SIZE='2917314' ARCHIVE_BASE_ENIGMATIS3_EN_0_VERSION='1.0-gog22690' ARCHIVE_BASE_ENIGMATIS3_EN_0_URL='https://www.gog.com/game/enigmatis_3_the_shadow_of_karkhala' ARCHIVE_BASE_ENIGMATIS3_FR_0_NAME='enigmatis_3_the_shadow_of_karkhala_fr_gog_1_22690.sh' ARCHIVE_BASE_ENIGMATIS3_FR_0_MD5='5d7ebdf1bc2cf2769ed4ebd9bb4755a0' ARCHIVE_BASE_ENIGMATIS3_FR_0_SIZE='2917443' ARCHIVE_BASE_ENIGMATIS3_FR_0_VERSION='1.0-gog22690' ARCHIVE_BASE_ENIGMATIS3_FR_0_URL='https://www.gog.com/game/enigmatis_3_the_shadow_of_karkhala' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' *_amd64' CONTENT_GAME_BIN32_FILES=' *_i386' CONTENT_GAME_L10N_FILES=' Game_??.cub Game_768_??.cub Game_900_??.cub Game_1080_??.cub Game_1080_900_??.cub' CONTENT_GAME_DATA_FILES=' Game.cub Game_768.cub Game_900.cub Game_1080.cub Game_1080_900.cub *.json' FAKE_HOME_PERSISTENT_DIRECTORIES=' .Artifex Mundi' APPLICATIONS_LIST='APP_MAIN' APP_MAIN_EXE_BIN64_ENIGMATIS1='Enigmatis_TheGhostsOfMapleCreek_amd64' APP_MAIN_EXE_BIN64_ENIGMATIS2='Enigmatis_TheMistsOfRavenwood_amd64' APP_MAIN_EXE_BIN64_ENIGMATIS3='Enigmatis3_amd64' APP_MAIN_EXE_BIN32_ENIGMATIS1='Enigmatis_TheGhostsOfMapleCreek_i386' APP_MAIN_EXE_BIN32_ENIGMATIS2='Enigmatis_TheMistsOfRavenwood_i386' APP_MAIN_EXE_BIN32_ENIGMATIS3='Enigmatis3_i386' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_L10N PKG_DATA' PKG_DATA_DESCRIPTION='data' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE 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 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_ENIGMATIS3="$PKG_BIN_DEPENDENCIES_LIBRARIES libidn.so.11" PKG_BIN64_DEPENDENCIES_LIBRARIES_ENIGMATIS3="$PKG_BIN_DEPENDENCIES_LIBRARIES_ENIGMATIS3" PKG_BIN32_DEPENDENCIES_LIBRARIES_ENIGMATIS3="$PKG_BIN_DEPENDENCIES_LIBRARIES_ENIGMATIS3" PKG_L10N_BASE_ID_ENIGMATIS1="${GAME_ID_ENIGMATIS1}-l10n" PKG_L10N_BASE_ID_ENIGMATIS2="${GAME_ID_ENIGMATIS2}-l10n" PKG_L10N_BASE_ID_ENIGMATIS3="${GAME_ID_ENIGMATIS3}-l10n" PKG_L10N_ID_ENIGMATIS1_EN="${PKG_L10N_BASE_ID_ENIGMATIS1}-en" PKG_L10N_ID_ENIGMATIS1_FR="${PKG_L10N_BASE_ID_ENIGMATIS1}-fr" PKG_L10N_ID_ENIGMATIS2_EN="${PKG_L10N_BASE_ID_ENIGMATIS2}-en" PKG_L10N_ID_ENIGMATIS2_FR="${PKG_L10N_BASE_ID_ENIGMATIS2}-fr" PKG_L10N_ID_ENIGMATIS3_EN="${PKG_L10N_BASE_ID_ENIGMATIS3}-en" PKG_L10N_ID_ENIGMATIS3_FR="${PKG_L10N_BASE_ID_ENIGMATIS3}-fr" PKG_L10N_PROVIDES_ENIGMATIS1=" $PKG_L10N_BASE_ID_ENIGMATIS1" PKG_L10N_PROVIDES_ENIGMATIS2=" $PKG_L10N_BASE_ID_ENIGMATIS2" PKG_L10N_PROVIDES_ENIGMATIS3=" $PKG_L10N_BASE_ID_ENIGMATIS3" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='English localization' PKG_L10N_DESCRIPTION_ENIGMATIS1_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_ENIGMATIS1_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_ENIGMATIS2_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_ENIGMATIS2_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_ENIGMATIS3_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_ENIGMATIS3_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_ENIGMATIS1="${GAME_ID_ENIGMATIS1}-data" PKG_DATA_ID_ENIGMATIS2="${GAME_ID_ENIGMATIS2}-data" PKG_DATA_ID_ENIGMATIS3="${GAME_ID_ENIGMATIS3}-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 APP_MAIN_EXE_BIN64=$(context_value 'APP_MAIN_EXE_BIN64') APP_MAIN_EXE_BIN32=$(context_value 'APP_MAIN_EXE_BIN32') launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-faerie-solitaire.sh0000700000000000000000000000676214471751340015405 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Faerie Solitaire: # - Faerie Solitaire Harvest # - Faerie Solitaire Remastered # send your bug reports to bugs@dotslashplay.it ### script_version=20241203.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID_REMASTERED='faerie-solitaire-remastered' GAME_NAME_REMASTERED='Faerie Solitaire Remastered' GAME_ID_HARVEST='faerie-solitaire-harvest' GAME_NAME_HARVEST='Faerie Solitaire Harvest' ARCHIVE_BASE_REMASTERED_0_NAME='FaerieSolitaireRemastered_x86_64-linux.zip' ARCHIVE_BASE_REMASTERED_0_MD5='a225276e98b580bf76afa1d1b0f2780b' ARCHIVE_BASE_REMASTERED_0_SIZE='143721' ARCHIVE_BASE_REMASTERED_0_VERSION='2.0.19.12.15-itch.2019.12.19' ARCHIVE_BASE_REMASTERED_0_URL='https://subsoap.itch.io/faerie-solitaire-remastered-linux' ARCHIVE_BASE_HARVEST_0_NAME='FaerieSolitaireHarvest_x86_64-linux.tar.gz' ARCHIVE_BASE_HARVEST_0_MD5='8871ffc902d5ce3896cca715eebb3fd9' ARCHIVE_BASE_HARVEST_0_SIZE='173848' ARCHIVE_BASE_HARVEST_0_VERSION='1.1.19.9.21-itch.2019.09.21' ARCHIVE_BASE_HARVEST_0_URL='https://puppygames001.itch.io/faerie-solitaire-harvest' CONTENT_PATH_DEFAULT_REMASTERED='Faerie Solitaire Remastered' CONTENT_PATH_DEFAULT_HARVEST='FaerieSolitaireHarvest' CONTENT_LIBS_BIN_FILES_HARVEST=' libfmod.so libfmodstudio.so' CONTENT_GAME_BIN_FILES_REMASTERED=' FaerieSolitaireRemastered.x86_64' CONTENT_GAME_BIN_FILES_HARVEST=' FaerieSolitaireHarvest.x86_64' CONTENT_GAME_DATA_FILES=' game.arcd game.arci game.dmanifest game.projectc game.public.der' CONTENT_GAME0_DATA_FILES_HARVEST=' assets/banks/master.bank assets/banks/master.strings.bank' APP_MAIN_EXE_REMASTERED='FaerieSolitaireRemastered.x86_64' APP_MAIN_EXE_HARVEST='FaerieSolitaireHarvest.x86_64' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES_REMASTERED=' libc.so.6 libdl.so.2 libgcc_s.so.1 libGL.so.1 libGLU.so.1 libm.so.6 libopenal.so.1 libpthread.so.0 libstdc++.so.6 libX11.so.6 libXext.so.6' PKG_BIN_DEPENDENCIES_LIBRARIES_HARVEST=' libc.so.6 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 libstdc++.so.6 libX11.so.6 libXext.so.6' PKG_DATA_ID_REMASTERED="${GAME_ID_REMASTERED}-data" PKG_DATA_ID_HARVEST="${GAME_ID_HARVEST}-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_default ## Fearie Solitaire Harvest - The game engine looks for FMOD libraries in a hardcoded path case "$(current_archive)" in ('ARCHIVE_BASE_HARVEST_'*) ln --symbolic "$(path_libraries)/libfmod.so" "$(package_path 'PKG_BIN')$(path_game_data)" ln --symbolic "$(path_libraries)/libfmodstudio.so" "$(package_path 'PKG_BIN')$(path_game_data)" ;; esac # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-filament.sh0000700000000000000000000000350614471751340013751 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Filament # send your bug reports to bugs@dotslashplay.it ### script_version=20240619.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='filament' GAME_NAME='Filament' ARCHIVE_BASE_0_NAME='filament_1_0_2825_39570.sh' ARCHIVE_BASE_0_MD5='b4d3dfcdb34c007e3317ce474d105a89' ARCHIVE_BASE_0_SIZE='1313564' ARCHIVE_BASE_0_VERSION='1.0.2825-gog39570' ARCHIVE_BASE_0_URL='https://www.gog.com/game/filament' UNREALENGINE4_NAME='Filament' CONTENT_PATH_DEFAULT='data/noarch/game' APP_MAIN_EXE='Filament/Binaries/Linux/Filament-Linux-Shipping' 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 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-fill-multicolor.sh0000700000000000000000000000443514471751340015271 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Fill Multicolor # send your bug reports to bugs@dotslashplay.it ### script_version=20241224.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='fill-multicolor' GAME_NAME='Fill Multicolor' ARCHIVE_BASE_1_NAME='setup_fill_multicolor_1.0.7_(77444).exe' ARCHIVE_BASE_1_MD5='b98a3ab69230a60c456d4c4eb2448a9c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='16000' ARCHIVE_BASE_1_VERSION='1.0.7-gog77444' ARCHIVE_BASE_1_URL='https://www.gog.com/game/fill_multicolor' ARCHIVE_BASE_0_NAME='setup_fill_multicolor_1.0.1_(70326).exe' ARCHIVE_BASE_0_MD5='c934cb4e7bf11097cb4a18a422bc805e' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='14335' ARCHIVE_BASE_0_VERSION='1.0.1-gog70326' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' almixer.dll coronalabs.corona.native.dll lua.dll openal32.dll plugin_hwcursor.dll pthreads.dll fill multicolor.exe' CONTENT_GAME_DATA_FILES=' resources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/AleC Games/Fill Multicolor users/${USER}/AppData/Local/AleC Games/Fill Multicolor' APP_MAIN_EXE='fill multicolor.exe' APP_MAIN_ICON='resources/icon-win32.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" # 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-flux-caves.sh0000755000000000000000000000415214471751340014237 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Flux Caves # send your bug reports to bugs@dotslashplay.it ### script_version=20240617.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='flux-caves' GAME_NAME='Flux Caves' ARCHIVE_BASE_0_NAME='108_Linux_Full.zip' ARCHIVE_BASE_0_MD5='695038dfa472774ecfda4371100b2eb9' ARCHIVE_BASE_0_SIZE='1033362' ARCHIVE_BASE_0_VERSION='1.08-itch1' ARCHIVE_BASE_0_URL='https://fubenalvo.itch.io/fluxcaves' UNITY3D_NAME='fluxcaves' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='108_Linux_Full' 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=' 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' # 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-fragments-of-euclid.sh0000755000000000000000000000434014471751340016014 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Fragments of Euclid # send your bug reports to bugs@dotslashplay.it ### script_version=20240606.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='fragments-of-euclid' GAME_NAME='Fragments of Euclid' ARCHIVE_BASE_0_NAME='fragments-of-euclid-linux.zip' ARCHIVE_BASE_0_MD5='2a786a3ffad74015842d85e74e2bee7f' ARCHIVE_BASE_0_SIZE='240183' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://nusan.itch.io/fragments-of-euclid' UNITY3D_NAME='FragmentsOfEuclid' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' CONTENT_DOC_DATA_FILES=' readme.txt' 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 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" # 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-freshly-frosted.sh0000755000000000000000000000532514471751340015305 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2026 Antoine Le Gonidec set -o errexit ### # Freshly Frosted # send your bug reports to bugs@dotslashplay.it ### script_version=20260402.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='freshly-frosted' GAME_NAME='Freshly Frosted' ARCHIVE_BASE_0_NAME='setup_freshly_frosted_1.01_(80289).exe' ARCHIVE_BASE_0_MD5='ee7b4e6d05219ba99569bf2d9065ce3f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='335482' ARCHIVE_BASE_0_VERSION='1.01-gog80289' ARCHIVE_BASE_0_URL='https://www.gog.com/game/freshly_frosted' UNITY3D_NAME='Freshly Frosted' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' CgSDK_2017.dll DynamicLibraryLoaderHelper.dll EOSSDK-Win64-Shipping.dll GfxPluginNativeRender-x64.dll Rewired_DirectInput.dll xaudio2_9redist.dll' # TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/The Quantum Astrophysicists Guild/Freshly Frosted' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-fugue.sh0000755000000000000000000000441614471751340013300 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Fugue # send your bug reports to bugs@dotslashplay.it ### script_version=20250906.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='fugue' GAME_NAME='Fugue' ARCHIVE_BASE_0_NAME='fugue-linux-universal.zip' ARCHIVE_BASE_0_MD5='f950781fcb9db71a14d58199f984f770' ARCHIVE_BASE_0_SIZE='330000' ARCHIVE_BASE_0_VERSION='1.5-itch' ARCHIVE_BASE_0_URL='https://jimjastajay.itch.io/fugue' UNITY3D_NAME='Fugue' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' ## TODO: Check if the Steam libraries can be dropped. CONTENT_LIBS_BIN64_FILES=' libsteam_api.so' CONTENT_LIBS_BIN32_FILES=' libsteam_api64.so' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_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 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_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 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-garden-in.sh0000755000000000000000000000421514471751340014026 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Garden In # send your bug reports to bugs@dotslashplay.it ### script_version=20241105.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='garden-in' GAME_NAME='Garden In!' ARCHIVE_BASE_1_NAME='setup_garden_in_1.3.6.1_(64bit)_(73207).exe' ARCHIVE_BASE_1_MD5='dc2cacf13ccf7e758463af3039c1d565' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='917331' ARCHIVE_BASE_1_VERSION='1.3.6.1-gog73207' ARCHIVE_BASE_1_URL='https://www.gog.com/game/garden_in' ARCHIVE_BASE_0_NAME='setup_garden_in_1.0.6.2_(64bit)_(63850).exe' ARCHIVE_BASE_0_MD5='1ed753d195f563e2a530f07743ae7a4f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='780000' ARCHIVE_BASE_0_VERSION='1.0.6.2-gog63850' UNREALENGINE4_NAME='gardenin' CONTENT_PATH_DEFAULT='windowsnoeditor' 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-gnog.sh0000700000000000000000000000361514471751340013105 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Gnog # send your bug reports to bugs@dotslashplay.it ### script_version=20250828.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='gnog' GAME_NAME='GNOG' ARCHIVE_BASE_0_NAME='gnog-win.zip' ARCHIVE_BASE_0_MD5='b3ec6cf96b200ef12604eaffb26e7753' ARCHIVE_BASE_0_SIZE='1800000' ARCHIVE_BASE_0_VERSION='1.0.6-itch.2019.08.13' ARCHIVE_BASE_0_URL='https://ko-op.itch.io/gnog' UNITY3D_NAME='gnog' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/KO_OP/GNOG' 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' ## 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 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-gorogoa.sh0000700000000000000000000000502314471751340013603 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Gorogoa # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='gorogoa' GAME_NAME='Gorogoa' ARCHIVE_BASE_0_NAME='setup_gorogoa_1.1.0_(20406).exe' ARCHIVE_BASE_0_MD5='8238721619553923c75dafbcaec11018' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='550000' ARCHIVE_BASE_0_VERSION='1.1.0-gog20406' ARCHIVE_BASE_0_URL='https://www.gog.com/game/gorogoa' UNITY3D_NAME='Gorogoa' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Check if Galaxy libraries are required. UNITY3D_PLUGINS=' Galaxy.dll GalaxyCSharpGlue.dll GalaxyPeer.dll' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Local/GOG.com/Galaxy/Applications/50686913489464392/Storage' 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. 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-grim-legends.sh0000700000000000000000000001437714471751340014537 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Grim Legends series: # - Grim Legends: The Forsaken Bride # - Grim Legends 2: Song of the Dark Swan # - Grim Legends 3: The Dark City # send your bug reports to bugs@dotslashplay.it ### script_version=20241224.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID_BRIDE='grim-legends-1' GAME_NAME_BRIDE='Grim Legends: The Forsaken Bride' GAME_ID_SWAN='grim-legends-2' GAME_NAME_SWAN='Grim Legends 2: Song of the Dark Swan' GAME_ID_CITY='grim-legends-3' GAME_NAME_CITY='Grim Legends 3: The Dark City' ARCHIVE_BASE_BRIDE_EN_0_NAME='grim_legends_the_forsaken_bride_gog_1_25983.sh' ARCHIVE_BASE_BRIDE_EN_0_MD5='3200efbc08fd59726bf9cedaadc8dee4' ARCHIVE_BASE_BRIDE_EN_0_SIZE='2507375' ARCHIVE_BASE_BRIDE_EN_0_VERSION='1.0-gog25983' ARCHIVE_BASE_BRIDE_EN_0_URL='https://www.gog.com/game/grim_legends_the_forsaken_bride' ARCHIVE_BASE_BRIDE_FR_0_NAME='grim_legends_the_forsaken_bride_french_gog_1_25983.sh' ARCHIVE_BASE_BRIDE_FR_0_MD5='ef7c7798d16b384eae58f89c8c09a753' ARCHIVE_BASE_BRIDE_FR_0_SIZE='2507374' ARCHIVE_BASE_BRIDE_FR_0_VERSION='1.0-gog25983' ARCHIVE_BASE_BRIDE_FR_0_URL='https://www.gog.com/game/grim_legends_the_forsaken_bride' ARCHIVE_BASE_SWAN_EN_0_NAME='grim_legends_2_song_of_the_dark_swan_gog_1_25983.sh' ARCHIVE_BASE_SWAN_EN_0_MD5='6add597284fece79a12410cd50c914d8' ARCHIVE_BASE_SWAN_EN_0_SIZE='1007775' ARCHIVE_BASE_SWAN_EN_0_VERSION='1.0-gog25983' ARCHIVE_BASE_SWAN_EN_0_URL='https://www.gog.com/game/grim_legends_2_song_of_the_dark_swan' ARCHIVE_BASE_SWAN_FR_0_NAME='grim_legends_2_song_of_the_dark_swan_french_gog_1_25983.sh' ARCHIVE_BASE_SWAN_FR_0_MD5='c87bffef7cbd2450ebda37cb5242b9af' ARCHIVE_BASE_SWAN_FR_0_SIZE='1007755' ARCHIVE_BASE_SWAN_FR_0_VERSION='1.0-gog25983' ARCHIVE_BASE_SWAN_FR_0_URL='https://www.gog.com/game/grim_legends_2_song_of_the_dark_swan' ARCHIVE_BASE_CITY_EN_0_NAME='grim_legends_3_the_dark_city_gog_1_25984.sh' ARCHIVE_BASE_CITY_EN_0_MD5='57cb3309f7207a6d2a1a7db811d63117' ARCHIVE_BASE_CITY_EN_0_SIZE='1131903' ARCHIVE_BASE_CITY_EN_0_VERSION='1.0-gog25984' ARCHIVE_BASE_CITY_EN_0_URL='https://www.gog.com/game/grim_legends_3_the_dark_city' ARCHIVE_BASE_CITY_FR_0_NAME='grim_legends_3_the_dark_city_french_gog_1_25984.sh' ARCHIVE_BASE_CITY_FR_0_MD5='9c6d027fe97b10d6dbc7b1544288aaea' ARCHIVE_BASE_CITY_FR_0_SIZE='1132071' ARCHIVE_BASE_CITY_FR_0_VERSION='1.0-gog25984' ARCHIVE_BASE_CITY_FR_0_URL='https://www.gog.com/game/grim_legends_3_the_dark_city' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' *_amd64' CONTENT_GAME_BIN32_FILES=' *_i386' CONTENT_GAME_L10N_FILES=' Game_??.cub Game_768_??.cub Game_900_??.cub Game_1080_??.cub Game_1080_900_??.cub' CONTENT_GAME_DATA_FILES=' Game Game.cub Game_768.cub Game_900.cub Game_1080.cub Game_1080_900.cub *.json' FAKE_HOME_PERSISTENT_DIRECTORIES=' .Artifex Mundi' APP_MAIN_EXE_BIN64_BRIDE='GrimLegends_TheForsakenBride_amd64' APP_MAIN_EXE_BIN64_SWAN='GrimLegends_SongOfTheDarkSwan_amd64' APP_MAIN_EXE_BIN64_CITY='DarkCity_amd64' APP_MAIN_EXE_BIN32_BRIDE='GrimLegends_TheForsakenBride_i386' APP_MAIN_EXE_BIN32_SWAN='GrimLegends_SongOfTheDarkSwan_i386' APP_MAIN_EXE_BIN32_CITY='DarkCity_i386' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN64 PKG_BIN32 PKG_L10N PKG_DATA' PKG_BIN64_ARCH='64' PKG_BIN32_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE 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 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_CITY="$PKG_BIN_DEPENDENCIES_LIBRARIES libidn.so.11" PKG_BIN64_DEPENDENCIES_LIBRARIES_CITY="$PKG_BIN_DEPENDENCIES_LIBRARIES_CITY" PKG_BIN32_DEPENDENCIES_LIBRARIES_CITY="$PKG_BIN_DEPENDENCIES_LIBRARIES_CITY" PKG_L10N_BASE_ID_BRIDE="${GAME_ID_BRIDE}-l10n" PKG_L10N_BASE_ID_SWAN="${GAME_ID_SWAN}-l10n" PKG_L10N_BASE_ID_CITY="${GAME_ID_CITY}-l10n" PKG_L10N_ID_BRIDE_EN="${PKG_L10N_BASE_ID_BRIDE}-en" PKG_L10N_ID_BRIDE_FR="${PKG_L10N_BASE_ID_BRIDE}-fr" PKG_L10N_ID_SWAN_EN="${PKG_L10N_BASE_ID_SWAN}-en" PKG_L10N_ID_SWAN_FR="${PKG_L10N_BASE_ID_SWAN}-fr" PKG_L10N_ID_CITY_EN="${PKG_L10N_BASE_ID_CITY}-en" PKG_L10N_ID_CITY_FR="${PKG_L10N_BASE_ID_CITY}-fr" PKG_L10N_PROVIDES_BRIDE=" $PKG_L10N_BASE_ID_BRIDE" PKG_L10N_PROVIDES_SWAN=" $PKG_L10N_BASE_ID_SWAN" PKG_L10N_PROVIDES_CITY=" $PKG_L10N_BASE_ID_CITY" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='English localization' PKG_L10N_DESCRIPTION_BRIDE_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_BRIDE_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_SWAN_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_SWAN_FR="$PKG_L10N_DESCRIPTION_FR" PKG_L10N_DESCRIPTION_CITY_EN="$PKG_L10N_DESCRIPTION_EN" PKG_L10N_DESCRIPTION_CITY_FR="$PKG_L10N_DESCRIPTION_FR" PKG_DATA_ID_BRIDE="${GAME_ID_BRIDE}-data" PKG_DATA_ID_SWAN="${GAME_ID_SWAN}-data" PKG_DATA_ID_CITY="${GAME_ID_CITY}-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 APP_MAIN_EXE_BIN64=$(context_value 'APP_MAIN_EXE_BIN64') APP_MAIN_EXE_BIN32=$(context_value 'APP_MAIN_EXE_BIN32') launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-helltaker.sh0000700000000000000000000000424114471751340014122 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Emmanuel Gil Peyrot # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Helltaker # send your bug reports to bugs@dotslashplay.it ### script_version=20250307.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='helltaker' GAME_NAME='Helltaker' ARCHIVE_BASE_0_NAME='helltaker_lnx.zip' ARCHIVE_BASE_0_MD5='114d9b631637057f1e0674615754bc50' ARCHIVE_BASE_0_SIZE='350000' ARCHIVE_BASE_0_VERSION='1.0-itch.2021.06.01' ARCHIVE_BASE_0_URL='https://vanripper.itch.io/helltaker' UNITY3D_NAME='helltaker_lnx' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_DATA_FILES=' local localHM' 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 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_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-her-story.sh0000700000000000000000000000347714471751340014115 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Her Story # send your bug reports to bugs@dotslashplay.it ### script_version=20250513.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='her-story' GAME_NAME='Her Story' ARCHIVE_BASE_0_NAME='setup_her_story_gog-1_(17775).exe' ARCHIVE_BASE_0_MD5='b987b276d64db2dd85a053a2883e2ded' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1595948' ARCHIVE_BASE_0_VERSION='1.0-gog17775' ARCHIVE_BASE_0_URL='https://www.gog.com/game/her_story' UNITY3D_NAME='herstory' CONTENT_PATH_DEFAULT='app' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Sam Barlow/HerStory' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS=' video/x-msvideo' 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-hidden-paws.sh0000700000000000000000000000404614471751340014355 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Hidden Paws # send your bug reports to bugs@dotslashplay.it ### script_version=20241016.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='hidden-paws' GAME_NAME='Hidden Paws' ARCHIVE_BASE_1_NAME='HiddenPaws.zip' ARCHIVE_BASE_1_MD5='24821800ac3a2ae506de8660e0a628c6' ARCHIVE_BASE_1_SIZE='502654' ARCHIVE_BASE_1_VERSION='1.0-itch.2020.11.19' ARCHIVE_BASE_1_URL='https://manichyena.itch.io/hidden-paws' ## ./play.it 2.30 does not have support for multiple archives sharing a same name ## cf. https://forge.dotslashplay.it/play.it/play.it/-/issues/355 #ARCHIVE_BASE_0_NAME='HiddenPaws.zip' #ARCHIVE_BASE_0_MD5='ae78aab96f9cebf5ecee47846505acc0' #ARCHIVE_BASE_0_SIZE='410000' #ARCHIVE_BASE_0_VERSION='1.0-itch' UNITY3D_NAME='Hidden Paws' UNITY3D_NAME_0='HiddenPaws' CONTENT_PATH_DEFAULT='HiddenPaws' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Manic Hyena/Hidden Paws' 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-hidden-through-time-series-expansions.sh0000700000000000000000000001111414471751340021466 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2021 Mopi set -o errexit ### # Hidden Through Time expansions: # - Viking Tales # - Legends of Japan # - Road to Rome # - Pirate Treasures # - Aztec Rituals # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='hidden-through-time-1' GAME_NAME='Hidden Through Time' EXPANSION_ID_VIKING='viking-tales' EXPANSION_NAME_VIKING='Viking Tales' EXPANSION_ID_JAPAN='legends-of-japan' EXPANSION_NAME_JAPAN='Legends of Japan' EXPANSION_ID_ROME='road-to-rome' EXPANSION_NAME_ROME='Road to Rome' EXPANSION_ID_PIRATES='pirate-treasures' EXPANSION_NAME_PIRATES='Pirate Treasures' EXPANSION_ID_AZTEC='aztec-rituals' EXPANSION_NAME_AZTEC='Aztec Rituals' # Viking Tales ARCHIVE_BASE_VIKING_1_NAME='setup_hidden_through_time_-_viking_tales_1.0.9b_(56935).exe' ARCHIVE_BASE_VIKING_1_MD5='ab9b8a7349085128affe778fcc0f84e9' ARCHIVE_BASE_VIKING_1_TYPE='innosetup' ARCHIVE_BASE_VIKING_1_SIZE='10457' ARCHIVE_BASE_VIKING_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_VIKING_1_URL='https://www.gog.com/game/hidden_through_time_viking_tales' ARCHIVE_BASE_VIKING_0_NAME='setup_hidden_through_time_-_viking_tales_1.0.7_(46929).exe' ARCHIVE_BASE_VIKING_0_MD5='0367e7a34d784d6aca0f54e56bd0d47e' ARCHIVE_BASE_VIKING_0_TYPE='innosetup' ARCHIVE_BASE_VIKING_0_SIZE='7200' ARCHIVE_BASE_VIKING_0_VERSION='1.0.7-gog46929' # Legends of Japan ARCHIVE_BASE_JAPAN_1_NAME='setup_hidden_through_time_-_legends_of_japan_1.0.9b_(56935).exe' ARCHIVE_BASE_JAPAN_1_MD5='f5c129fcb7f481badd11465d726b018a' ARCHIVE_BASE_JAPAN_1_TYPE='innosetup' ARCHIVE_BASE_JAPAN_1_SIZE='10413' ARCHIVE_BASE_JAPAN_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_JAPAN_1_URL='https://www.gog.com/game/hidden_through_time_legends_of_japan' ARCHIVE_BASE_JAPAN_0_NAME='setup_hidden_through_time_-_legends_of_japan_1.0.7_(46929).exe' ARCHIVE_BASE_JAPAN_0_MD5='d05628b0410b21559e8aebc99e1543c6' ARCHIVE_BASE_JAPAN_0_TYPE='innosetup' ARCHIVE_BASE_JAPAN_0_SIZE='7400' ARCHIVE_BASE_JAPAN_0_VERSION='1.0.7-gog46929' # Road to Rome ARCHIVE_BASE_ROME_1_NAME='setup_hidden_through_time_road_to_rome_1.0.9b_(56935).exe' ARCHIVE_BASE_ROME_1_MD5='6a0f909d0759c4f899cefcd0bac0ebe9' ARCHIVE_BASE_ROME_1_TYPE='innosetup' ARCHIVE_BASE_ROME_1_SIZE='10594' ARCHIVE_BASE_ROME_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_ROME_1_URL='https://www.gog.com/game/hidden_through_time_road_to_rome' ARCHIVE_BASE_ROME_0_NAME='setup_hidden_through_time_road_to_rome_1.0.7_(46929).exe' ARCHIVE_BASE_ROME_0_MD5='2e08360a0232df11d7016fe0ef2b5629' ARCHIVE_BASE_ROME_0_TYPE='innosetup' ARCHIVE_BASE_ROME_0_SIZE='8200' ARCHIVE_BASE_ROME_0_VERSION='1.0.7-gog46929' # Pirate Treasures ARCHIVE_BASE_PIRATES_1_NAME='setup_hidden_through_time_-_pirate_treasures_1.0.9b_(56935).exe' ARCHIVE_BASE_PIRATES_1_MD5='d9f92a4d9673a1a5236d242ea0240a6d' ARCHIVE_BASE_PIRATES_1_TYPE='innosetup' ARCHIVE_BASE_PIRATES_1_SIZE='6620' ARCHIVE_BASE_PIRATES_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_PIRATES_1_URL='https://www.gog.com/game/hidden_through_time_pirate_treasures' # Aztec Rituals ARCHIVE_BASE_AZTEC_1_NAME='setup_hidden_through_time_-_aztec_rituals_1.0.9b_(56935).exe' ARCHIVE_BASE_AZTEC_1_MD5='378bd5618bbbe3f3d2746593cd988c52' ARCHIVE_BASE_AZTEC_1_TYPE='innosetup' ARCHIVE_BASE_AZTEC_1_SIZE='7043' ARCHIVE_BASE_AZTEC_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_AZTEC_1_URL='https://www.gog.com/game/hidden_through_time_aztec_rituals' CONTENT_GAME_MAIN_PATH='.' CONTENT_GAME_MAIN_FILES=' goggame-*.info' PKG_PARENT_ID="$GAME_ID" PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_PARENT' # Easier upgrades from pre-20240220.4 packages PKG_MAIN_PROVIDES_VIKING=' hidden-through-time-viking-tales' PKG_MAIN_PROVIDES_JAPAN=' hidden-through-time-legends-of-japan' PKG_MAIN_PROVIDES_ROME=' hidden-through-time-road-to-rome' # 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_default # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-hidden-through-time-series.sh0000700000000000000000000000624114471751340017306 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Hidden Through Time series: # - Hidden Through Time # - Hidden Through Time 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260422.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_EPISODE1='hidden-through-time-1' GAME_ID_EPISODE2='hidden-through-time-2' GAME_NAME_EPISODE1='Hidden Through Time' GAME_NAME_EPISODE2='Hidden Through Time 2: Myths & Magic' ARCHIVE_BASE_EPISODE1_1_NAME='setup_hidden_through_time_1.0.9b_(56935).exe' ARCHIVE_BASE_EPISODE1_1_MD5='fafb6b639f687a13c2c6c293550a0ec6' ARCHIVE_BASE_EPISODE1_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_1_SIZE='632768' ARCHIVE_BASE_EPISODE1_1_VERSION='1.0.9b-gog56935' ARCHIVE_BASE_EPISODE1_1_URL='https://www.gog.com/game/hidden_through_time' ARCHIVE_BASE_EPISODE1_0_NAME='setup_hidden_through_time_1.0.7_(46929).exe' ARCHIVE_BASE_EPISODE1_0_MD5='f64269fa2f3627fe5ad74cae5ff11869' ARCHIVE_BASE_EPISODE1_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_0_SIZE='520000' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0.7-gog46929' ARCHIVE_BASE_EPISODE2_0_NAME='setup_hidden_through_time_2_myths__magic_1.0.30a_(64bit)_(68025).exe' ARCHIVE_BASE_EPISODE2_0_MD5='20b5488ad9f819ea3e008f8df2a28ab1' ARCHIVE_BASE_EPISODE2_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_0_SIZE='682606' ARCHIVE_BASE_EPISODE2_0_VERSION='1.0.30a-gog68025' ARCHIVE_BASE_EPISODE2_0_URL='https://www.gog.com/game/hidden_through_time_2_myths_magic' UNITY3D_NAME_EPISODE1='Hidden' UNITY3D_NAME_EPISODE2='HTT2' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' USER_PERSISTENT_DIRECTORIES_EPISODE2=" ${UNITY3D_NAME_EPISODE2}_Data/Saves" WINE_PERSISTENT_DIRECTORIES_EPISODE1=' users/${USER}/AppData/LocalLow/Crazy Monkey Studios/Hidden Through Time' WINE_PERSISTENT_DIRECTORIES_EPISODE2=' users/${USER}/AppData/LocalLow/Rogueside/HTT2' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' # Easier upgrades from pre-20240220.1 packages PKG_BIN_PROVIDES_EPISODE1=' hidden-through-time' PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_DESCRIPTION='data' # Easier upgrades from pre-20240220.1 packages PKG_DATA_PROVIDES_EPISODE1=' hidden-through-time-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-huniepop.sh0000700000000000000000000000430614471751340014000 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2016 Antoine Le Gonidec set -o errexit ### # HuniePop # send your bug reports to bugs@dotslashplay.it ### script_version=20240610.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='huniepop' GAME_NAME='HuniePop' ARCHIVE_BASE_1_NAME='gog_huniepop_2.0.0.3.sh' ARCHIVE_BASE_1_MD5='d229aea2b601137537f7be46c7327660' ARCHIVE_BASE_1_SIZE='926917' ARCHIVE_BASE_1_VERSION='1.2.0-gog2.0.0.3' ARCHIVE_BASE_1_URL='https://www.gog.com/game/huniepop' ARCHIVE_BASE_0_NAME='gog_huniepop_2.0.0.2.sh' ARCHIVE_BASE_0_MD5='020cd6a015bd79a907f6c607102d797a' ARCHIVE_BASE_0_SIZE='940000' ARCHIVE_BASE_0_VERSION='1.2.0-gog2.0.0.2' UNITY3D_NAME='HuniePop' ## TODO: Check if the Steam libraries are required. UNITY3D_PLUGINS=' libCSteamworks.so libsteam_api.so' CONTENT_PATH_DEFAULT='data/noarch/game' 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" 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' ## TODO: Check if lsb_release is still required to prevent a failure to launch on Arch Linux. PKG_BIN_DEPENDENCIES_COMMANDS=' lsb_release' # 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-inbento.sh0000700000000000000000000000344114471751340013606 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2025 Antoine Le Gonidec set -o errexit ### # inbento # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='inbento' GAME_NAME='inbento' ARCHIVE_BASE_0_NAME='setup_inbento_1.1.1_(63470).exe' ARCHIVE_BASE_0_MD5='5f9d0f77c7a0361e1b75c37d9741b814' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.1.1-gog63470' ARCHIVE_BASE_0_URL='https://www.gog.com/en/game/inbento' UNITY3D_NAME='inbento' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Afterburn/inbento' 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-infinifactory.sh0000755000000000000000000000456714471751340015040 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Infinifactory # send your bug reports to bugs@dotslashplay.it ### script_version=20241019.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='infinifactory' GAME_NAME='Infinifactory' ARCHIVE_BASE_0_NAME='infinifactory_11_14_2020_43258.sh' ARCHIVE_BASE_0_MD5='c0b873dde4f29d49f0c7aa3fec2b1384' ARCHIVE_BASE_0_SIZE='1700000' ARCHIVE_BASE_0_VERSION='2020.11.14-gog43258' ARCHIVE_BASE_0_URL='https://www.gog.com/game/infinifactory' UNITY3D_NAME='infinifactory' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' 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_SIBLING="$PKG_BIN_DEPENDENCIES_SIBLINGS" PKG_BIN32_DEPENDENCIES_SIBLING="$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" # 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-interrogation.sh0000700000000000000000000000515014471751340015033 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Interrogation: You Will Be Deceived # send your bug reports to bugs@dotslashplay.it ### script_version=20240929.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='interrogation' GAME_NAME='Interrogation: You Will Be Deceived' ARCHIVE_BASE_0_NAME='interrogation_you_will_be_deceived_1_1_9_a1704342_39945.sh' ARCHIVE_BASE_0_MD5='6e5c4d0ed24129d10a7781d034665b89' ARCHIVE_BASE_0_SIZE='630000' ARCHIVE_BASE_0_VERSION='1.1.9.a1704342-gog39954' ARCHIVE_BASE_0_URL='https://www.gog.com/game/interrogation_you_will_be_deceived' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_LIBS_BIN_FILES=' libfmod.so libfmodstudio.so' ## The game binary is linked against libGalaxy64.so. CONTENT_LIBS_BIN_FILES="${CONTENT_LIBS_BIN_FILES:-} libGalaxy64.so" CONTENT_GAME_BIN_FILES=' Interrogation.x86_64' CONTENT_GAME_DATA_FILES=' banks game.*' CONTENT_DOC_FILES=' licenses.html' APP_MAIN_EXE='Interrogation.x86_64' APP_MAIN_ICON='../support/icon.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## A link to libfmod.so.12 is omitted, the shipped libfmod.so is probably used for it. PKG_BIN_DEPENDENCIES_LIBRARIES=' libc.so.6 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 libstdc++.so.6 libX11.so.6 libXext.so.6 libXi.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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default ## The game engine looks for some libraries in a hardcoded path ln --symbolic "$(path_libraries)/libfmod.so" "$(package_path 'PKG_BIN')$(path_game_data)" ln --symbolic "$(path_libraries)/libfmodstudio.so" "$(package_path 'PKG_BIN')$(path_game_data)" # Write launchers launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-kerbal-space-program.sh0000755000000000000000000000731214471751340016161 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # Kerbal Space Program # send your bug reports to bugs@dotslashplay.it ### script_version=20241216.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='kerbal-space-program' GAME_NAME='Kerbal Space Program' ARCHIVE_BASE_0_NAME='kerbal_space_program_1_12_5_03190_61624.sh' ARCHIVE_BASE_0_MD5='0dc96f1a59f1f8b8cb43b3e8ed58b05a' ARCHIVE_BASE_0_SIZE='4873634' ARCHIVE_BASE_0_VERSION='1.12.5-gog61624' ARCHIVE_BASE_0_URL='https://www.gog.com/game/kerbal_space_program' ARCHIVE_BASE_OLDLIBS_3_NAME='kerbal_space_program_1_10_1_02939_41941.sh' ARCHIVE_BASE_OLDLIBS_3_MD5='fe71449cc6478ae7cbfbf0a718c9daa3' ARCHIVE_BASE_OLDLIBS_3_SIZE='4000000' ARCHIVE_BASE_OLDLIBS_3_VERSION='1.10.1-gog41941' ARCHIVE_BASE_OLDLIBS_2_NAME='kerbal_space_program_1_10_0_02917_39410.sh' ARCHIVE_BASE_OLDLIBS_2_MD5='40d7ea6e6c112a95954b3178030599b0' ARCHIVE_BASE_OLDLIBS_2_SIZE='4000000' ARCHIVE_BASE_OLDLIBS_2_VERSION='1.10.0-gog39410' ARCHIVE_BASE_OLDLIBS_1_NAME='kerbal_space_program_1_9_1_02788_36309.sh' ARCHIVE_BASE_OLDLIBS_1_MD5='6157d3ebad90960893e4aa177b8518de' ARCHIVE_BASE_OLDLIBS_1_SIZE='3700000' ARCHIVE_BASE_OLDLIBS_1_VERSION='1.9.1-gog36309' ARCHIVE_BASE_OLDLIBS_0_NAME='kerbal_space_program_1_8_1_02694_33460.sh' ARCHIVE_BASE_OLDLIBS_0_MD5='195abb84de4a916192190858d0796c50' ARCHIVE_BASE_OLDLIBS_0_SIZE='3400000' ARCHIVE_BASE_OLDLIBS_0_VERSION='1.8.1-gog33460' UNITY3D_NAME='KSP' UNITY3D_PLUGINS=' libkeyboard.so liblingoona.grammar.kerbal.so' UNITY3D_PLUGINS_OLDLIBS=' libkeyboard.so liblingoona.grammar.kerbal.so ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME0_DATA_FILES=' GameData Internals Missions Parts Resources Ships saves sounds *.cfg' CONTENT_DOC_DATA_FILES=' LegalNotice.txt readme.txt' USER_PERSISTENT_DIRECTORIES=' saves sounds' ## The game fails to load if it does not have write access to GameData/Squad/KSPedia files. USER_PERSISTENT_DIRECTORIES="${USER_PERSISTENT_DIRECTORIES:-} GameData/Squad/KSPedia" USER_PERSISTENT_FILES=' *.cfg *.mu' 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 libstdc++.so.6 libz.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_OLDLIBS=' 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_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-lake-ridden.sh0000700000000000000000000000605414471751340014332 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Lake Ridden # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='lake-ridden' GAME_NAME='Lake Ridden' ARCHIVE_BASE_1_NAME='setup_lake_ridden_1.7.1853_(64bit)_(45634).exe' ARCHIVE_BASE_1_MD5='e5629cee62ab9e90c59a079697674fa4' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='2700000' ARCHIVE_BASE_1_VERSION='1.7.1853-gog45634' ARCHIVE_BASE_1_URL='https://www.gog.com/game/lake_ridden' ARCHIVE_BASE_0_NAME='setup_lake_ridden_1.6.1526_(64bit)_(25884).exe' ARCHIVE_BASE_0_MD5='12b62c3399e51b27b5f91d9276d1aabe' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2100000' ARCHIVE_BASE_0_VERSION='1.6.1526-gog25884' UNITY3D_NAME='LakeRidden' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' libelias.dll Rewired_DirectInput.dll' # Without the Steam library, the game crashes on level completion. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll GalaxyCSharpGlue.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Midnight Hub/Lake Ridden' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Midnight Hub\Lake Ridden' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-links-puzzle.sh0000700000000000000000000000437714471751340014630 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Links Puzzle # send your bug reports to bugs@dotslashplay.it ### script_version=20241217.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='links-puzzle' GAME_NAME='Links Puzzle' ARCHIVE_BASE_1_NAME='setup_links_puzzle_1.0.2_(72721).exe' ARCHIVE_BASE_1_MD5='5bc0a87e2bdfcf204feda0cb3d3e9ad8' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='26071' ARCHIVE_BASE_1_VERSION='1.0.2-gog72721' ARCHIVE_BASE_1_URL='https://www.gog.com/game/links_puzzle' ARCHIVE_BASE_0_NAME='setup_links_puzzle_1.0.1_(70326).exe' ARCHIVE_BASE_0_MD5='60c9021cdf833b2ee3feeead1f0ffe56' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='24412' ARCHIVE_BASE_0_VERSION='1.0.1-gog70326' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' almixer.dll coronalabs.corona.native.dll lua.dll openal32.dll plugin_hwcursor.dll pthreads.dll links puzzle.exe' CONTENT_GAME_DATA_FILES=' resources' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/AleC Games/Links Puzzle users/${USER}/AppData/Local/AleC Games/Links Puzzle' APP_MAIN_EXE='links puzzle.exe' APP_MAIN_ICON='resources/icon-win32.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" # 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-lumino-city.sh0000755000000000000000000000443514471751340014437 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Lumino City # send your bug reports to bugs@dotslashplay.it ### script_version=20260418.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='lumino-city' GAME_NAME='Lumino City' ARCHIVE_BASE_0_NAME='setup_lumino_city_1.0_(21180).exe' ARCHIVE_BASE_0_MD5='32f0e9251c7936180321f30811bab8d9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='930000' ARCHIVE_BASE_0_VERSION='1.0-gog21180' ARCHIVE_BASE_0_URL='https://www.gog.com/game/lumino_city' # AIR_NAME is not supported by the library yet, # the current game script is a prototype. # (./play.it 2.35) AIR_NAME='Lumino City' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=" Adobe AIR META-INF mimetype ${AIR_NAME}.exe" CONTENT_GAME_DATA_FILES=' assets LumeMenu.swf' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/com.stateofplaygames.LuminoCity' APP_MAIN_EXE="${AIR_NAME}.exe" APP_MAIN_ICONS_LIST=' APP_MAIN_ICON_128 APP_MAIN_ICON_152 APP_MAIN_ICON_512 APP_MAIN_ICON_1024' APP_MAIN_ICON_128='assets/icons/LuminoCity-128.png' APP_MAIN_ICON_152='assets/icons/LuminoCity-152.png' APP_MAIN_ICON_512='assets/icons/LuminoCity-512.png' APP_MAIN_ICON_1024='assets/icons/LuminoCity-1024.png' 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. 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-lumo.sh0000700000000000000000000000461414471751340013127 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Lumo # send your bug reports to bugs@dotslashplay.it ### script_version=20240806.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='lumo' GAME_NAME='Lumo' ARCHIVE_BASE_0_NAME='gog_lumo_2.3.0.4.sh' ARCHIVE_BASE_0_MD5='76cf720f68446eca8d89dc58cc9c4f7b' ARCHIVE_BASE_0_SIZE='3328323' ARCHIVE_BASE_0_VERSION='1.7018-gog2.3.0.4' ARCHIVE_BASE_0_URL='https://www.gog.com/game/lumo' UNITY3D_NAME='Lumo' UNITY3D_PLUGINS=' libfmod.so libfmodstudio.so ScreenSelector.so' ## TODO: Check if the Steam plugins are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_DIRECTORIES=' tdi' 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" # 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-luna.sh0000755000000000000000000000360114471751340013117 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Luna # send your bug reports to bugs@dotslashplay.it ### script_version=20250814.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='luna' GAME_NAME='Luna' ARCHIVE_BASE_1_NAME='Luna.zip' ARCHIVE_BASE_1_MD5='7bdef26b52591152dc6fce2fe4464b7d' ARCHIVE_BASE_1_SIZE='2359275' ARCHIVE_BASE_1_VERSION='1.0-itch.2021.04.22' ARCHIVE_BASE_1_URL='https://funomena.itch.io/luna' ARCHIVE_BASE_0_NAME='Luna.zip' ARCHIVE_BASE_0_MD5='05dbd9bf3b74d53159fa41bdbc7c26d7' ARCHIVE_BASE_0_SIZE='2300000' ARCHIVE_BASE_0_VERSION='1.0-itch.1' UNITY3D_NAME='luna' UNITY3D_NAME_0='Luna' CONTENT_PATH_DEFAULT='Luna' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Funomena/Luna' 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 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-lyne.sh0000700000000000000000000000770114471751340013122 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Lyne # send your bug reports to bugs@dotslashplay.it ### script_version=20241224.3 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='lyne' GAME_NAME='Lyne' ARCHIVE_BASE_ITCH_0_NAME='LYNE_linux.zip' ARCHIVE_BASE_ITCH_0_MD5='71ffe45ef87ce65c3f8b29987aa602db' ARCHIVE_BASE_ITCH_0_SIZE='168723' ARCHIVE_BASE_ITCH_0_VERSION='1.5.0-itch.2024.08.16' ARCHIVE_BASE_ITCH_0_URL='https://thomasbowker.itch.io/lyne' ARCHIVE_BASE_HUMBLE_0_NAME='LYNE_145_linux.tar.gz' ARCHIVE_BASE_HUMBLE_0_MD5='85c9ca3cd3c7dda1d351c8ab0441d877' ARCHIVE_BASE_HUMBLE_0_SIZE='142863' ARCHIVE_BASE_HUMBLE_0_VERSION='1.4.5-humble1' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/lyne' ARCHIVE_BASE_HUMBLE_MULTIARCH_0_NAME='LYNE_120_lin.zip' ARCHIVE_BASE_HUMBLE_MULTIARCH_0_MD5='f05951586a5b8cf42e20e0e6f04e65da' ARCHIVE_BASE_HUMBLE_MULTIARCH_0_SIZE='110000' ARCHIVE_BASE_HUMBLE_MULTIARCH_0_VERSION='1.2.0.30-humble171211' UNITY3D_NAME='LYNE' UNITY3D_PLUGINS_HUMBLE_MULTIARCH=' ScreenSelector.so' CONTENT_PATH_DEFAULT_ITCH='.' CONTENT_PATH_DEFAULT_HUMBLE='LYNE_145_lin' CONTENT_PATH_DEFAULT_HUMBLE_MULTIARCH='LYNE_120_lin' CONTENT_GAME0_BIN_FILES_ITCH=' LYNE.x64' CONTENT_GAME0_BIN_FILES_HUMBLE_0=' LYNE.x64' CONTENT_DOC_DATA_FILES=' readme.txt' APP_MAIN_EXE_ITCH_0='LYNE.x64' APP_MAIN_EXE_HUMBLE_0='LYNE.x64' ## Force windowed mode to prevent mouse input problems APP_MAIN_OPTIONS='-screen-fullscreen 0' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_HUMBLE_MULTIARCH=' PKG_BIN64 PKG_BIN32 PKG_DATA' PKG_BIN_ARCH='64' 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_ITCH=' libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1' PKG_BIN_DEPENDENCIES_LIBRARIES_HUMBLE=' 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_HUMBLE_MULTIARCH=' 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_HUMBLE_MULTIARCH="$PKG_BIN_DEPENDENCIES_LIBRARIES_HUMBLE_MULTIARCH" PKG_BIN32_DEPENDENCIES_LIBRARIES_HUMBLE_MULTIARCH="$PKG_BIN_DEPENDENCIES_LIBRARIES_HUMBLE_MULTIARCH" 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)" # Prevent the inclusion of Steam libraries case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_MULTIARCH_'*) # The multiarch archives rely on UNITY3D_PLUGINS to exclude unwanted libraries. ;; (*) rm --recursive "$(unity3d_name)_Data/Plugins" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers case "$(current_archive)" in ('ARCHIVE_BASE_HUMBLE_MULTIARCH_'*) launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' ;; (*) launchers_generation 'PKG_BIN' ;; esac # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-lynn-the-girl-drawn-on-puzzles.sh0000700000000000000000000000400614471751340020074 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Lynn, The Girl Drawn On Puzzles # send your bug reports to bugs@dotslashplay.it ### script_version=20250520.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='lynn-the-girl-drawn-on-puzzles' GAME_NAME='Lynn, The Girl Drawn On Puzzles' ARCHIVE_BASE_0_NAME='setup_lynn__the_girl_drawn_on_puzzles_1.0.01_(64bit)_(66351).exe' ARCHIVE_BASE_0_MD5='2bf80a446117e86f15a95b74612dd7c3' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='945180' ARCHIVE_BASE_0_VERSION='1.0.01-gog66351' ARCHIVE_BASE_0_URL='https://www.gog.com/game/lynn_the_girl_drawn_on_puzzles' UNITY3D_NAME='lynn' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/boing/lynn' ## Ensure support for non-ASCII characters. WINE_WINETRICKS_VERBS='arial' 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" # 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-mind-path-to-thalamus.sh0000755000000000000000000000366314471751340016305 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Mind: Path to Thalamus # send your bug reports to bugs@dotslashplay.it ### script_version=20240604.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='mind-path-to-thalamus' GAME_NAME='MIND: Path to thalamus' ## This game is no longer available for sale from gog.com. ARCHIVE_BASE_0_NAME='gog_mind_path_to_thalamus_enhanced_edition_2.1.0.4.sh' ARCHIVE_BASE_0_MD5='fbd4fe06a4f4d46236d84a95a9af8f47' ARCHIVE_BASE_0_SIZE='8000000' ARCHIVE_BASE_0_VERSION='2016.06.17-gog2.1.0.4' UNREALENGINE4_NAME='Mind_Pathtothalamus' CONTENT_PATH_DEFAULT='data/noarch/game' APP_MAIN_EXE='Mind_Pathtothalamus/Binaries/Linux/Mind_Pathtothalamus' 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 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6' # 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-mini-metro.sh0000755000000000000000000000447314471751340014250 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2020 Alarig Le Lay set -o errexit ### # Mini Metro # send your bug reports to bugs@dotslashplay.it ### script_version=20250521.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='mini-metro' GAME_NAME='Mini Metro' ARCHIVE_BASE_1_NAME='MiniMetro-release-53-linux.tar.gz' ARCHIVE_BASE_1_MD5='67f52adb9cacd494bb79c76cfb36931d' ARCHIVE_BASE_1_SIZE='330000' ARCHIVE_BASE_1_VERSION='53-humble1' ARCHIVE_BASE_1_URL='https://www.humblebundle.com/store/mini-metro' ARCHIVE_BASE_0_NAME='MiniMetro-release-50a-linux.tar.gz' ARCHIVE_BASE_0_MD5='93577776ea002a6e0a8dc482486ff174' ARCHIVE_BASE_0_SIZE='320000' ARCHIVE_BASE_0_VERSION='50a-humble1' UNITY3D_NAME='Mini Metro' UNITY3D_PLUGINS=' libminimetrox.so' CONTENT_PATH_DEFAULT='.' ## The game fails to run with the wayland backend of SDL, ## spamming errors about libminimetrox.so. APP_MAIN_PRERUN=' # The game fails to run with 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' 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-morphopolis.sh0000700000000000000000000000460114471751340014522 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Morphopolis # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='morphopolis' GAME_NAME='Morphopolis' ARCHIVE_BASE_0_NAME='setup_morphopolis_1.0_(22453).exe' ARCHIVE_BASE_0_MD5='325f1bbbcc1c7a657530d70db9f1bb1a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1200000' ARCHIVE_BASE_0_VERSION='1.0-gog22453' ARCHIVE_BASE_0_URL='https://www.gog.com/game/morphopolis' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' irrklang.dll project.exe app.config.txt app.icf' CONTENT_GAME_DATA_FILES=' anims font sounds textures *.xml' USER_PERSISTENT_FILES=' app.config.txt' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Morphopolis' APP_MAIN_EXE='project.exe' APP_MAIN_ICON='app/goggame-1559432711.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' # icotool is used for icon .ico → .png conversion REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} icotool" # 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 ## Work around "insufficient image data" issue with convert from imagemagick. icon_extract_png_from_ico() { local icon destination icon="$1" destination="$2" local icon_file icon_file=$(icon_full_path "$icon") icotool --extract --output="$destination" "$icon_file" } 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-mousecraft.sh0000700000000000000000000000520314471751340014316 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # MouseCraft # send your bug reports to bugs@dotslashplay.it ### script_version=20241201.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='mousecraft' GAME_NAME='MouseCraft' ARCHIVE_BASE_0_NAME='gog_mousecraft_2.1.0.7.sh' ARCHIVE_BASE_0_MD5='5d99353d6ef0db693cc3a492cfb8ae4c' ARCHIVE_BASE_0_SIZE='861107' ARCHIVE_BASE_0_VERSION='1.20-gog2.1.0.7' ARCHIVE_BASE_0_URL='https://www.gog.com/game/mousecraft' UNITY3D_NAME='MouseCraft' 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' 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 package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-murder-by-numbers.sh0000755000000000000000000000551714471751340015547 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Murder by Numbers # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='murder-by-numbers' GAME_NAME='Murder by Numbers' ARCHIVE_BASE_1_NAME='setup_murder_by_numbers_1.27_(60443).exe' ARCHIVE_BASE_1_MD5='7ea694aac58b4fe28ca03fafb22ff879' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='942971' ARCHIVE_BASE_1_VERSION='1.27-gog60443' ARCHIVE_BASE_1_URL='https://www.gog.com/game/murder_by_numbers' ARCHIVE_BASE_0_NAME='setup_murder_by_numbers_1.26_(39758).exe' ARCHIVE_BASE_0_MD5='46ad317048a0f9d51d2811ec4bb104ff' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='950000' ARCHIVE_BASE_0_VERSION='1.26-gog39758' UNITY3D_NAME='MurderByNumbers' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Check if Galaxy libraries are required. UNITY3D_PLUGINS=' Galaxy.dll GalaxyCSharpGlue.dll' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Mediatonic/Murder by Numbers' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' 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. 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-murder-mystery-machine.sh0000700000000000000000000000415614471751340016566 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Murder Mystery Machine # send your bug reports to bugs@dotslashplay.it ### script_version=20250803.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='murder-mystery-machine' GAME_NAME='Murder Mystery Machine' ARCHIVE_BASE_1_NAME='setup_murder_mystery_machine_1.0.3_(67137).exe' ARCHIVE_BASE_1_MD5='da0f831f7fba786c49478e67edca4db9' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='2721341' ARCHIVE_BASE_1_VERSION='1.0.3-gog67137' ARCHIVE_BASE_1_URL='https://www.gog.com/game/murder_mystery_machine' ARCHIVE_BASE_0_NAME='setup_murder_mystery_machine_1.0.3_(52168).exe' ARCHIVE_BASE_0_MD5='69ded10c35ef888f13823fe5ebc8d2ac' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='2800000' ARCHIVE_BASE_0_VERSION='1.0.3-gog52168' UNITY3D_NAME='murdermysterymachine' CONTENT_PATH_DEFAULT='.' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Blazing Griffin/Murder Mystery Machine' 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 temporary files. working_directory_cleanup exit 0 games/play-museum-of-mechanics-lockpicking.sh0000755000000000000000000000426014471751340020322 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Museum of Mechanics: Lockpicking # send your bug reports to bugs@dotslashplay.it ### script_version=20241203.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='museum-of-mechanics-lockpicking' GAME_NAME='Museum of Mechanics: Lockpicking' ARCHIVE_BASE_1_NAME='museum-of-mechanics-lockpicking-linux.zip' ARCHIVE_BASE_1_MD5='5b6d381d975867c75b797ec9ba3f45e1' ARCHIVE_BASE_1_SIZE='282860' ARCHIVE_BASE_1_VERSION='0.6.5-itch.2021.07.21' ARCHIVE_BASE_1_URL='https://dimbulbgames.itch.io/museum-of-mechanics-lockpicking' ARCHIVE_BASE_0_NAME='museum-of-mechanics-lockpicking-linux.zip' ARCHIVE_BASE_0_MD5='6e47b913932abbba3d132c9d849b79fd' ARCHIVE_BASE_0_SIZE='156246' ARCHIVE_BASE_0_VERSION='0.2.2-itch.2020.08.29' UNITY3D_NAME='Museum_Of_Mechanics' ## This game does not ship any Unity3D plugin. CONTENT_PATH_DEFAULT='Museum of Mechanics - Linux' 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 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-my-brother-rabbit.sh0000700000000000000000000000465214471751340015506 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # My Brother Rabbit # send your bug reports to bugs@dotslashplay.it ### script_version=20241016.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='my-brother-rabbit' GAME_NAME='My Brother Rabbit' ARCHIVE_BASE_0_NAME='my_brother_rabbit_gog_2_23945.sh' ARCHIVE_BASE_0_MD5='e8dd42bb3ac4e10c56cd5da36cb60c99' ARCHIVE_BASE_0_SIZE='860634' ARCHIVE_BASE_0_VERSION='2-gog23945' ARCHIVE_BASE_0_URL='https://www.gog.com/game/my_brother_rabbit' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' MyBrotherRabbit_amd64' CONTENT_GAME_BIN32_FILES=' MyBrotherRabbit_i386' CONTENT_GAME_DATA_FILES=' linux game.json game.sparkconfig' APP_MAIN_EXE_BIN32='MyBrotherRabbit_i386' APP_MAIN_EXE_BIN64='MyBrotherRabbit_amd64' APP_MAIN_ICON='../support/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 libdl.so.2 libgcc_s.so.1 libGL.so.1 libidn.so.11 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.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" # 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-myths-of-orion.sh0000700000000000000000000000411414471751340015040 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Myths Of Orion: Light From The North # send your bug reports to bugs@dotslashplay.it ### script_version=20241219.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='myths-of-orion' GAME_NAME='Myths Of Orion: Light From The North' ARCHIVE_BASE_0_NAME='myths_of_orion_light_from_the_north_1_11_7_7_75947.sh' ARCHIVE_BASE_0_MD5='e2ea5b1cb3b0a8f5ad62f6020902cd1a' ARCHIVE_BASE_0_SIZE='522971' ARCHIVE_BASE_0_VERSION='1.11.7.7-gog75947' ARCHIVE_BASE_0_URL='https://www.gog.com/game/myths_of_orion_light_from_the_north' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' cfg witch_gog_linux_x64' CONTENT_GAME_DATA_FILES=' data icon.png' CONTENT_DOC_DATA_FILES=' linux_readme.txt version.txt' APP_MAIN_EXE='witch_gog_linux_x64' APP_MAIN_ICON='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 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-nightmares-from-the-deep.sh0000700000000000000000000001073114471751340016743 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Nightmares From the Deep series: # - Nightmares From the Deep 1: The Cursed Heart # - Nightmares From the Deep 2: The Siren's Call # - Nightmares From the Deep 3: Davy Jones # send your bug reports to bugs@dotslashplay.it ### script_version=20241016.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='nightmares-from-the-deep' GAME_ID_EPISODE1="${GAME_ID}-1" GAME_ID_EPISODE2="${GAME_ID}-2" GAME_ID_EPISODE3="${GAME_ID}-3" GAME_NAME='Nightmares From the Deep' GAME_NAME_EPISODE1="${GAME_NAME}: The Cursed Heart" GAME_NAME_EPISODE2="${GAME_NAME} 2: The Sirenʼs Call" GAME_NAME_EPISODE3="${GAME_NAME} 3: Davy Jones" ## This installer used to be sold by gog.com, ## but has been dropped from their store on 2022-01-30. ARCHIVE_BASE_EPISODE1_0_NAME='nightmares_from_the_deep_the_cursed_heart_en_gog_1_22620.sh' ARCHIVE_BASE_EPISODE1_0_MD5='9978e7f6b340574f855d530c65752bab' ARCHIVE_BASE_EPISODE1_0_SIZE='1000000' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0-gog22620' ## This installer used to be sold by gog.com, ## but has been dropped from their store on 2022-01-30. ARCHIVE_BASE_EPISODE2_0_NAME='nightmares_from_the_deep_2_the_siren_s_call_en_gog_1_22645.sh' ARCHIVE_BASE_EPISODE2_0_MD5='668260739c20276cfaac8dc3c6efdbb6' ARCHIVE_BASE_EPISODE2_0_SIZE='1200000' ARCHIVE_BASE_EPISODE2_0_VERSION='1.0-gog22645' ## This installer used to be sold by gog.com, ## but has been dropped from their store on 2022-01-30. ARCHIVE_BASE_EPISODE3_0_NAME='nightmares_from_the_deep_3_davy_jones_en_gog_1_22689.sh' ARCHIVE_BASE_EPISODE3_0_MD5='e5d0d8122840ba20e5d23d4c0524b6b0' ARCHIVE_BASE_EPISODE3_0_SIZE='1500000' ARCHIVE_BASE_EPISODE3_0_VERSION='1.0-gog22689' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' NightmaresFromTheDeep_*_amd64' CONTENT_GAME_BIN32_FILES=' NightmaresFromTheDeep_*_i386' CONTENT_GAME_DATA_FILES=' Game out Game.cub Game_en.cub game.json' FAKE_HOME_PERSISTENT_DIRECTORIES=' .Artifex Mundi' APP_MAIN_EXE_BIN64_EPISODE1='NightmaresFromTheDeep_TheCursedHeart_amd64' APP_MAIN_EXE_BIN64_EPISODE2='NightmaresFromTheDeep_TheSirensCall_amd64' APP_MAIN_EXE_BIN64_EPISODE3='NightmaresFromTheDeep_DavyJones_amd64' APP_MAIN_EXE_BIN32_EPISODE1='NightmaresFromTheDeep_TheCursedHeart_i386' APP_MAIN_EXE_BIN32_EPISODE2='NightmaresFromTheDeep_TheSirensCall_i386' APP_MAIN_EXE_BIN32_EPISODE3='NightmaresFromTheDeep_DavyJones_i386' APP_MAIN_ICON='../support/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 libdl.so.2 libgcc_s.so.1 libGL.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libX11.so.6 libXext.so.6 libXinerama.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN_DEPENDENCIES_LIBRARIES_EPISODE1="$PKG_BIN_DEPENDENCIES_LIBRARIES libidn.so.11" PKG_BIN64_DEPENDENCIES_LIBRARIES_EPISODE1="$PKG_BIN_DEPENDENCIES_LIBRARIES_EPISODE1" PKG_BIN32_DEPENDENCIES_LIBRARIES_EPISODE1="$PKG_BIN_DEPENDENCIES_LIBRARIES_EPISODE1" PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_ID_EPISODE3="${GAME_ID_EPISODE3}-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 APP_MAIN_EXE_BIN64=$(context_value 'APP_MAIN_EXE_BIN64') APP_MAIN_EXE_BIN32=$(context_value 'APP_MAIN_EXE_BIN32') launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-old-mans-journey.sh0000755000000000000000000000336414471751340015371 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Old Man's Journey # send your bug reports to bugs@dotslashplay.it ### script_version=20240915.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='old-mans-journey' GAME_NAME='Old Man’s Journey' ARCHIVE_BASE_0_NAME='OldMansJourney-Win-20180525.zip' ARCHIVE_BASE_0_MD5='841fb588cd62511fcc32291adc3a7f68' ARCHIVE_BASE_0_SIZE='580000' ARCHIVE_BASE_0_VERSION='20180525-itch' ARCHIVE_BASE_0_URL='https://brokenrules.itch.io/old-mans-journey' UNITY3D_NAME='Old Mans Journey' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Broken Rules/Old Man' 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-one-action-heroes.sh0000700000000000000000000000463514471751340015475 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # One Action Heroes # send your bug reports to bugs@dotslashplay.it ### script_version=20240929.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='one-action-heroes' GAME_NAME='One Action Heroes' ARCHIVE_BASE_0_NAME='One Action Heroes (linux).zip' ARCHIVE_BASE_0_MD5='12e501d79f2dcfe38a7ae7b789397390' ARCHIVE_BASE_0_SIZE='100000' ARCHIVE_BASE_0_VERSION='1.1.1-itch' ARCHIVE_BASE_0_URL='https://tapehead-co.itch.io/one-action-heroes' UNITY3D_NAME='One Action Heroes' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='One Action Heroes (linux)' 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_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 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_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-oneshot.sh0000755000000000000000000000512014471751340013635 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Oneshot # send your bug reports to bugs@dotslashplay.it ### script_version=20240910.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='oneshot' GAME_NAME='Oneshot' ARCHIVE_BASE_0_NAME='OneShot.AppImage' ARCHIVE_BASE_0_MD5='165fe1ea589d835b1dedc9947d43eb8f' ARCHIVE_BASE_0_SIZE='360168' ARCHIVE_BASE_0_VERSION='1.0-itch.2020.06.19' ARCHIVE_BASE_0_URL='https://futurecat.itch.io/oneshot' CONTENT_PATH_DEFAULT='usr/bin' CONTENT_LIBS_BIN_PATH='usr/lib' CONTENT_LIBS_BIN_FILES=' libruby.so.2.5 libxfconf-0.so.2' CONTENT_GAME_BIN_FILES=' _______ oneshot' CONTENT_GAME_DATA_FILES=' Audio Data Fonts Graphics Languages testing_saves testing_saves_postgame Wallpaper _______.png' CONTENT_DOC_DATA_PATH='usr/share/doc' CONTENT_DOC_DATA_FILES=' */copyright' ## The game engine fails to follow symlinks, leading to crashes APP_MAIN_PREFIX_TYPE='none' APP_MAIN_EXE='oneshot' APP_MAIN_ICON='_______.png' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_BIN_DEPENDENCIES_LIBRARIES=' libcrypt.so.1 libc.so.6 libdbus-glib-1.so.2 libdl.so.2 libgcc_s.so.1 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 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.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 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 ## Force the use of system-provided SDL APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') # Force the use of the system SDL library export SDL_DYNAMIC_API='$(path_libraries_system)/libSDL2-2.0.so.0' " launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-pan-pan.sh0000700000000000000000000000441714471751340013506 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Pan-Pan # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='pan-pan' GAME_NAME='Pan-Pan' ARCHIVE_BASE_1_NAME='gog_pan_pan_2.1.0.3.sh' ARCHIVE_BASE_1_MD5='8ed86bee78bd42b531d2969c898d0dc4' ARCHIVE_BASE_1_SIZE='120000' ARCHIVE_BASE_1_VERSION='1.0.3-gog2.1.0.3' ARCHIVE_BASE_1_URL='https://www.gog.com/game/panpan' ARCHIVE_BASE_0_NAME='gog_pan_pan_2.1.0.2.sh' ARCHIVE_BASE_0_MD5='a258086331e913f8cf8110983da234d1' ARCHIVE_BASE_0_SIZE='120000' ARCHIVE_BASE_0_VERSION='1.0.3-gog2.1.0.2' UNITY3D_NAME='PAN-PAN' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game does not start if the CSteamworks library is not provided. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.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 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 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-panmorphia.sh0000700000000000000000000000352514471751340014311 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Panmorphia # send your bug reports to bugs@dotslashplay.it ### script_version=20240617.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='panmorphia' GAME_NAME='Panmorphia' ARCHIVE_BASE_0_NAME='Panmorphia_LinuxNew.zip' ARCHIVE_BASE_0_MD5='09b08b517c792ca4ea4f0ccf5151fd95' ARCHIVE_BASE_0_SIZE='245308' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://lkmad.itch.io/panmorphia' UNITY3D_NAME='Panmorphia' UNITY3D_PLUGINS=' 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_DEPS="$PKG_DATA_ID" 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 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-papers-please.sh0000755000000000000000000000375614471751340014734 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Papers, Please # send your bug reports to bugs@dotslashplay.it ### script_version=20241209.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='papers-please' GAME_NAME='Papers, Please' ARCHIVE_BASE_0_NAME='papers-please_1.4.11.124_x64.tgz' ARCHIVE_BASE_0_MD5='694d7b4fcc0766df3c7c28dbc2154b94' ARCHIVE_BASE_0_SIZE='95754' ARCHIVE_BASE_0_VERSION='1.4.11.124-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/papers-please' UNITY3D_NAME='PapersPlease' CONTENT_PATH_DEFAULT='papers-please' CONTENT_DOC_DATA_FILES=' LICENSE README' 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' 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)" # Prevent the inclusion of the empty Plugins directory rmdir "$(unity3d_name)_Data/Plugins" ) # 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-pavilion.sh0000755000000000000000000000413114471751340014000 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Pavilion # send your bug reports to bugs@dotslashplay.it ### script_version=20240619.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='pavilion' GAME_NAME='Pavilion' ARCHIVE_BASE_0_NAME='Pavilion_Linux_v1.31' ARCHIVE_BASE_0_MD5='82fb0659f230ab2b01e79aeb80df1ec3' ARCHIVE_BASE_0_TYPE='zip' ARCHIVE_BASE_0_SIZE='1820996' ARCHIVE_BASE_0_VERSION='1.31-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/pavilion' UNITY3D_NAME='pavilion' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='Pavilion Linux(v1.31)' CONTENT_DOC_DATA_FILES=' RELEASE_NOTES.txt' 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" 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' # 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-pixross.sh0000700000000000000000000000377314471751340013667 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Pixross # send your bug reports to bugs@dotslashplay.it ### script_version=20241108.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='pixross' GAME_NAME='Pixross' ARCHIVE_BASE_0_NAME='Pixross-1.3.0 (Linux).zip' ARCHIVE_BASE_0_MD5='c0dbe9011d184404c4e85f080f417161' ARCHIVE_BASE_0_SIZE='80960' ARCHIVE_BASE_0_VERSION='1.3.0-itch' ARCHIVE_BASE_0_URL='https://kenney.itch.io/pixross' UNITY3D_NAME='Pixross' UNITY3D_PLUGINS=' ScreenSelector.so' ## TODO: Check if the Steam library is required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.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 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 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-plant-daddy.sh0000755000000000000000000000453514471751340014370 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Plant Daddy # send your bug reports to bugs@dotslashplay.it ### script_version=20250921.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='plant-daddy' GAME_NAME='Plant Daddy' ARCHIVE_BASE_2_NAME='plantdaddy-linux-1.2.2.zip' ARCHIVE_BASE_2_MD5='e64ec41dec67d889cfac4763147af384' ARCHIVE_BASE_2_SIZE='130000' ARCHIVE_BASE_2_VERSION='1.2.2-itch1' ARCHIVE_BASE_2_URL='https://overfull.itch.io/plantdaddy' ARCHIVE_BASE_1_NAME='plantdaddy-linux-1.2.1.zip' ARCHIVE_BASE_1_MD5='1a863b49a4fe6e4c5ad136d808912058' ARCHIVE_BASE_1_SIZE='140000' ARCHIVE_BASE_1_VERSION='1.2.1-itch1' ARCHIVE_BASE_0_NAME='plantdaddy-linux-1.2.0.zip' ARCHIVE_BASE_0_MD5='b626d5a0512cc0334749de3ec137c492' ARCHIVE_BASE_0_SIZE='140000' ARCHIVE_BASE_0_VERSION='1.2.0-itch1' UNITY3D_NAME='plantdaddy' UNITY3D_NAME_0='plantdaddy-linux-1.2' UNITY3D_PLUGINS=' libStandaloneFileBrowser.so' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_BIN_FILES_0=" plantdaddy-linux-1.2.0" APP_MAIN_EXE_0='plantdaddy-linux-1.2.0' 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 libglib-2.0.so.0 libgobject-2.0.so.0 libgtk-3.so.0 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. 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-please-fix-the-road.sh0000700000000000000000000000376014471751340015712 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Please Fix The Road # send your bug reports to bugs@dotslashplay.it ### script_version=20240929.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='please-fix-the-road' GAME_NAME='Please Fix the Road' ARCHIVE_BASE_0_NAME='please_fix_the_road_1_1_7_56794.sh' ARCHIVE_BASE_0_MD5='090724f6715935a3db3c012e2969538e' ARCHIVE_BASE_0_SIZE='480000' ARCHIVE_BASE_0_VERSION='1.1.7-gog56794' ARCHIVE_BASE_0_URL='https://www.gog.com/en/game/please_fix_the_road' UNITY3D_NAME='Please Fix The Road' ## The Steam library must be included to avoid game crashes UNITY3D_PLUGINS=' libsteam_api.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 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 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-poly-bridge.sh0000755000000000000000000000476014471751340014404 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Poly Bridge # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.2 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='poly-bridge' GAME_NAME='Poly Bridge' ## This DRM-free archive is no longer sold by Humble Bundle ARCHIVE_BASE_0_NAME='polybridge-105-linux.zip' ARCHIVE_BASE_0_MD5='cb7644e3ee055addaa4e7a8a727282cb' ARCHIVE_BASE_0_SIZE='254181' ARCHIVE_BASE_0_VERSION='105-humble180330' UNITY3D_NAME='polybridge' UNITY3D_PLUGINS=' libfastlz.so liblz4.so liblzma.so libzipw.so ScreenSelector.so' ## TODO: Check if the Steam libraries are required UNITY3D_PLUGINS="$UNITY3D_PLUGINS libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='polybridge-105-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 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="$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-puzzle-agent-series.sh0000755000000000000000000000646714471751340016112 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Puzzle Agent series: # - Puzzle Agent # - Puzzle Agent 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.5 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_EPISODE1='puzzle-agent-1' GAME_NAME_EPISODE1='Puzzle Agent' GAME_ID_EPISODE2='puzzle-agent-2' GAME_NAME_EPISODE2='Puzzle Agent 2' ARCHIVE_BASE_EPISODE1_1_NAME='setup_puzzle_agent_1.0_(21444).exe' ARCHIVE_BASE_EPISODE1_1_MD5='b986c9a9ed5bce6f8329cc76965ee295' ARCHIVE_BASE_EPISODE1_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_1_SIZE='260000' ARCHIVE_BASE_EPISODE1_1_VERSION='1.0-gog21444' ARCHIVE_BASE_EPISODE1_1_URL='https://www.gog.com/game/puzzle_agent' ARCHIVE_BASE_EPISODE1_0_NAME='setup_puzzle_agent_2.0.0.3.exe' ARCHIVE_BASE_EPISODE1_0_MD5='68155b4aff9aa9e28c107f5b2ff994b5' ARCHIVE_BASE_EPISODE1_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_0_SIZE='260000' ARCHIVE_BASE_EPISODE1_0_VERSION='1.0-gog2.0.0.3' ARCHIVE_BASE_EPISODE2_0_NAME='setup_puzzle_agent_2_1.0_(21444).exe' ARCHIVE_BASE_EPISODE2_0_MD5='f3065abf496f53be933c2ab8a2b70dd7' ARCHIVE_BASE_EPISODE2_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_0_SIZE='410000' ARCHIVE_BASE_EPISODE2_0_VERSION='1.0-gog21444' ARCHIVE_BASE_EPISODE2_0_URL='https://www.gog.com/game/puzzle_agent_2' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_EPISODE1_0='app' CONTENT_GAME_BIN_FILES_EPISODE1=' Grickle101.exe' CONTENT_GAME_BIN_FILES_EPISODE2=' Grickle102.exe' # Grickle10*.exe requirements # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' steam_api.dll' # TODO: Drop unused libraries. CONTENT_GAME1_BIN_FILES=' fmodex.dll' CONTENT_GAME_DATA_FILES=' Pack' WINE_PERSISTENT_DIRECTORIES_EPISODE1=' users/${USER}/Documents/Telltale Games/puzzle-agent-1' WINE_PERSISTENT_DIRECTORIES_EPISODE2=' users/${USER}/Documents/Telltale Games/puzzle-agent-2' # TODO: Check if/why a virtual desktop is required. WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE_EPISODE1='Grickle101.exe' APP_MAIN_EXE_EPISODE2='Grickle102.exe' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' # Easier upgrades from pre-20210928.2 packages. PKG_BIN_PROVIDES_EPISODE1=' puzzle-agent' PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_DESCRIPTION='data' # Easier upgrades from pre-20210928.2 packages. PKG_DATA_PROVIDES_EPISODE1=' puzzle-agent-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-qube-1.sh0000755000000000000000000001151214471751340013252 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2020 BetaRays # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Q.U.B.E. # send your bug reports to bugs@dotslashplay.it ### script_version=20250520.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='qube-1' GAME_NAME='Q.U.B.E.' ARCHIVE_BASE_0_NAME='QUBE-Linux-2015052901.sh' ARCHIVE_BASE_0_MD5='5da6f592bad4aa71c6e2a469f7435453' ARCHIVE_BASE_0_VERSION='2.8-humble2015052901' ARCHIVE_BASE_0_SIZE='1269181' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/qube-directors-cut' CONTENT_PATH_DEFAULT='data' CONTENT_LIBS_BIN_RELATIVE_PATH='x86/Binaries/Linux/lib' CONTENT_LIBS_BIN_FILES=' libPhysXCooking.so libPhysXCore.so libPhysXExtensions.so.1 libPhysXLoader.so.1 libtcmalloc.so.0' ## The game ships a patched SDL2_Mixer that has an additional symbol: MinorityMix_SetPosition, ## the SDL2_Mixer source code has no reference to it (only Mix_SetPosition) ## and online searching only shows similar problems with other Unreal Engine games. CONTENT_LIBS0_BIN_RELATIVE_PATH='x86/Binaries/Linux/lib' CONTENT_LIBS0_BIN_FILES=' libSDL2_mixer-2.0.so.0' ## The game binary is linked against libsteam_api.so, so this library can not be dropped. CONTENT_LIBS1_BIN_RELATIVE_PATH='x86/Binaries/Linux/lib' CONTENT_LIBS1_BIN_FILES=' libsteam_api.so' CONTENT_GAME_BIN_RELATIVE_PATH='noarch' CONTENT_GAME_BIN_FILES=' Engine' CONTENT_GAME0_BIN_RELATIVE_PATH='x86' CONTENT_GAME0_BIN_FILES=' Binaries/Linux/QUBEGame-Linux' CONTENT_GAME_DATA_RELATIVE_PATH='noarch' CONTENT_GAME_DATA_FILES=' QUBEGame QUBEIcon.*' CONTENT_DOC_DATA_RELATIVE_PATH='noarch' CONTENT_DOC_DATA_FILES=' README.linux BuildVersion.txt UpdateLog.txt' USER_PERSISTENT_FILES=' Binaries/Linux/SaveGame.bin' APP_MAIN_EXE='Binaries/Linux/QUBEGame-Linux' APP_MAIN_ICON='noarch/QUBEIcon.png' ## Trying to run the game with the wayland backend of SDL leads to a segmentation fault: ## #0 Scaleform::Render::RHI::HAL::CreateRenderTargetFromViewport (this=0xfb8a7e0, InRT=0xa94be44, useSceneDepth=true) at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/GFxUI/Src/Render/RHI_HALSetup.cpp:416 ## #1 0x08e1e22f in FGFxSetHudRenderTarget::Execute (this=0x9d92fc0) at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/GFxUI/Src/ScaleformEngine.cpp:1298 ## #2 0x0840d144 in RenderingThreadMain () at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/Engine/Src/RenderingThread.cpp:218 ## #3 0x08429bf8 in FRenderingThread::Run (this=0xfa293e0) at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/Engine/Src/RenderingThread.cpp:352 ## #4 0x08eba1bb in FRunnableThreadLinux::Run (this=this@entry=0xdaa3bd0) at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/Linux/Src/LinuxThreading.cpp:831 ## #5 0x08eba1ff in FRunnableThreadLinux::_ThreadProc (pThis=0xdaa3bd0) at /samba/ue3builds/MINIFRIDGE/projects/UE3_QUBE/Development/Src/../../Development/Src/Linux/Src/LinuxThreading.cpp:803 ## #6 0xf748e781 in start_thread (arg=) at ./nptl/pthread_create.c:448 ## #7 0xf7524df8 in __GI___clone3 () at ../sysdeps/unix/sysv/linux/i386/clone3.S:111 APP_MAIN_PRERUN=' # Trying to run the game with the wayland backend of SDL leads to a segmentation fault. 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 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.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 ## Run the game binary from its parent directory game_exec_line() { cat <<- 'EOF' cd Binaries/Linux ./QUBEGame-Linux "$@" EOF } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-qube-2.sh0000755000000000000000000000524714471751340013263 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Q.U.B.E. 2 # send your bug reports to bugs@dotslashplay.it ### script_version=20251210.1 PLAYIT_COMPATIBILITY_LEVEL='2.34' GAME_ID='qube-2' GAME_NAME='Q.U.B.E. 2' ARCHIVE_BASE_1_NAME='setup_q.u.b.e._2_1.8_(64bit)_(33108).exe' ARCHIVE_BASE_1_MD5='38e53c42845f1ea44ca2939d2d48571b' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_q.u.b.e._2_1.8_(64bit)_(33108)-1.bin' ARCHIVE_BASE_1_PART1_MD5='838dbb204cd6eca9488d502ec16f28d0' ARCHIVE_BASE_1_SIZE='3800000' ARCHIVE_BASE_1_VERSION='1.8-gog33108' ARCHIVE_BASE_1_URL='https://www.gog.com/game/qube_2' ARCHIVE_BASE_0_NAME='setup_q.u.b.e._2_1.6_with_overlay_(64bit)_(23818).exe' ARCHIVE_BASE_0_MD5='b62f5e18bff2e9abcb591e1921538989' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_q.u.b.e._2_1.6_with_overlay_(64bit)_(23818)-1.bin' ARCHIVE_BASE_0_PART1_MD5='7a397b6e7c20a13c00af2ee964952609' ARCHIVE_BASE_0_SIZE='3700000' ARCHIVE_BASE_0_VERSION='1.6-gog23818' UNREALENGINE4_NAME='qube' CONTENT_PATH_DEFAULT='.' APP_MAIN_EXE="${UNREALENGINE4_NAME}/binaries/win64/${UNREALENGINE4_NAME}-win64-shipping.exe" PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' ## TODO: Check that native libopenal.so.1 is actually required. PKG_BIN_DEPENDENCIES_LIBRARIES=' libopenal.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 # Include game data. content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers. launchers_generation # Build packages. ## Display the post-installation warning about wine build flags on Gentoo. case "$(option_value 'package')" in ('gentoo') PKG_BIN_POSTINST_WARNINGS='You might need to compile wine with the openal or faudio USE flag.' ;; esac packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-quench.sh0000755000000000000000000000325714471751340013452 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Quench # send your bug reports to bugs@dotslashplay.it ### script_version=20240707.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='quench' GAME_NAME='Quench' ARCHIVE_BASE_0_NAME='quench-win.zip' ARCHIVE_BASE_0_MD5='51acb509e73ab3a9dd2183554f094cf2' ARCHIVE_BASE_0_SIZE='1000000' ARCHIVE_BASE_0_VERSION='1.1.0-itch.2019.08.16' ARCHIVE_BASE_0_URL='https://axoninteractive.itch.io/quench' UNITY3D_NAME='Quench' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Axon Interactive/Quench' 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-quiet-as-a-stone.sh0000755000000000000000000000332214471751340015254 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Quiet as a Stone # send your bug reports to bugs@dotslashplay.it ### script_version=20251124.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='quiet-as-a-stone' GAME_NAME='Quiet as a Stone' ARCHIVE_BASE_0_NAME='quietasastone-win64.zip' ARCHIVE_BASE_0_MD5='72cd64e689dd398afaa9909abb15cb15' ARCHIVE_BASE_0_SIZE='1500000' ARCHIVE_BASE_0_VERSION='0.6.1-itch.2019.07.19' ARCHIVE_BASE_0_URL='https://distantlantern.itch.io/quietasastone' UNITY3D_NAME='QuietasaStone' 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 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 package. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-regency-solitaire.sh0000700000000000000000000000427414471751340015602 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # Regency Solitaire # send your bug reports to bugs@dotslashplay.it ### script_version=20240929.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='regency-solitaire' GAME_NAME='Regency Solitaire' ARCHIVE_BASE_0_NAME='RegencySolitaireV117b_1472495785.tar.gz' ARCHIVE_BASE_0_MD5='15e8377d2cac99a52407cb399bd1ee7c' ARCHIVE_BASE_0_SIZE='71000' ARCHIVE_BASE_0_VERSION='1.17b-humble160829' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/regency-solitaire' ## Optional icons pack ARCHIVE_OPTIONAL_ICONS_NAME='regency-solitaire_icons.tar.gz' ARCHIVE_OPTIONAL_ICONS_MD5='01a7c7b168e2cb315d2058ff5e6a53aa' ARCHIVE_OPTIONAL_ICONS_URL='https://downloads.dotslashplay.it/games/regency-solitaire/' CONTENT_ICONS_PATH='.' CONTENT_ICONS_FILES=' 16x16 32x32 48x48 256x256' CONTENT_PATH_DEFAULT='RegencySolitaireV117b' CONTENT_GAME_BIN_FILES=' RegencySolitaire' CONTENT_GAME_DATA_FILES=' data' APP_MAIN_EXE='RegencySolitaire' 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 libGL.so.1 libGLU.so.1 libm.so.6 libpthread.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" # 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-rime.sh0000755000000000000000000000520614471751340013117 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Rime # send your bug reports to bugs@dotslashplay.it ### script_version=20250530.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='rime-game' GAME_NAME='RiME' ARCHIVE_BASE_1_NAME='setup_rime_1.04_(a)_(40568).exe' ARCHIVE_BASE_1_MD5='04c89d5de10df3c16c5e9b3512d559aa' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_rime_1.04_(a)_(40568)-1.bin' ARCHIVE_BASE_1_PART1_MD5='aa40d7bf862088c92b9a0dbe09c42012' ARCHIVE_BASE_1_PART2_NAME='setup_rime_1.04_(a)_(40568)-2.bin' ARCHIVE_BASE_1_PART2_MD5='c9cad9754731585b3e68a305eef4bd01' ARCHIVE_BASE_1_SIZE='7800000' ARCHIVE_BASE_1_VERSION='1.04-gog40568' ARCHIVE_BASE_1_URL='https://www.gog.com/game/rime' ARCHIVE_BASE_0_NAME='setup_rime_152498_signed_(14865).exe' ARCHIVE_BASE_0_MD5='303d41314564c753fcef92260c3e20f8' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_rime_152498_signed_(14865)-1.bin' ARCHIVE_BASE_0_PART1_MD5='ea9fc9eeaeeb2d7c58eab42cef31bb2e' ARCHIVE_BASE_0_PART2_NAME='setup_rime_152498_signed_(14865)-2.bin' ARCHIVE_BASE_0_PART2_MD5='b65792a122d267cc799e9b044605c1a1' ARCHIVE_BASE_0_SIZE='8000000' ARCHIVE_BASE_0_VERSION='1.04-gog14865' UNREALENGINE4_NAME='sirengame' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' APP_MAIN_EXE='sirengame/binaries/win64/rime.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 ## Do not install the Visual C++ Runtime, to prevent an error related to MSVCP140.dll. (WINE 10.0) unrealengine4_wine_winetricks_verbs_default() { return 0; } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-rusty-lake-series.sh0000700000000000000000000000761014471751340015542 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Rusty Lake series: # - Rusty Lake Hotel # - Rusty Lake Roots # - Rusty Lake Paradise # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_BASE='rusty-lake' GAME_ID_HOTEL="${GAME_ID_BASE}-hotel" GAME_ID_ROOTS="${GAME_ID_BASE}-roots" GAME_ID_PARADISE="${GAME_ID_BASE}-paradise" GAME_NAME_BASE='Rusty Lake' GAME_NAME_HOTEL="$GAME_NAME_BASE Hotel" GAME_NAME_ROOTS="$GAME_NAME_BASE Roots" GAME_NAME_PARADISE="$GAME_NAME_BASE Paradise" ARCHIVE_BASE_HOTEL_0_NAME='setup_rusty_lake_hotel_gog-1_(30681).exe' ARCHIVE_BASE_HOTEL_0_MD5='a6121ae5cd353c8e86342e7b45cef9b4' ARCHIVE_BASE_HOTEL_0_TYPE='innosetup' ARCHIVE_BASE_HOTEL_0_SIZE='58000' ARCHIVE_BASE_HOTEL_0_VERSION='1.0-gog30681' ARCHIVE_BASE_HOTEL_0_URL='https://www.gog.com/game/rusty_lake_hotel' ARCHIVE_BASE_ROOTS_0_NAME='setup_rusty_lake_roots_gog-1_(30681).exe' ARCHIVE_BASE_ROOTS_0_MD5='dae526768d941d55dc80700cc4d3a678' ARCHIVE_BASE_ROOTS_0_TYPE='innosetup' ARCHIVE_BASE_ROOTS_0_SIZE='110000' ARCHIVE_BASE_ROOTS_0_VERSION='1.0-gog30681' ARCHIVE_BASE_ROOTS_0_URL='https://www.gog.com/game/rusty_lake_roots' ARCHIVE_BASE_PARADISE_0_NAME='setup_rusty_lake_paradise_gog-1_(30704).exe' ARCHIVE_BASE_PARADISE_0_MD5='5ff0a14bcc068232cb9948987474b503' ARCHIVE_BASE_PARADISE_0_TYPE='innosetup' ARCHIVE_BASE_PARADISE_0_SIZE='130000' ARCHIVE_BASE_PARADISE_0_VERSION='1.0-gog30704' ARCHIVE_BASE_PARADISE_0_URL='https://www.gog.com/game/rusty_lake_paradise' # AIR_NAME is not supported by the library yet, # the current game script is a prototype. # (./play.it 2.35) AIR_NAME_HOTEL='RustyLakeHotel' AIR_NAME_ROOTS='RustyLakeRoots' AIR_NAME_PARADISE='RustyLakeParadise' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' Adobe AIR META-INF mimetype' CONTENT_GAME0_BIN_FILES_HOTEL=" ${AIR_NAME_HOTEL}.exe" CONTENT_GAME0_BIN_FILES_ROOTS=" ${AIR_NAME_ROOTS}.exe" CONTENT_GAME0_BIN_FILES_PARADISE=" ${AIR_NAME_PARADISE}.exe" CONTENT_GAME_DATA_FILES_HOTEL=" ${AIR_NAME_HOTEL}.swf" CONTENT_GAME_DATA_FILES_ROOTS=" ${AIR_NAME_ROOTS}.swf" CONTENT_GAME_DATA_FILES_PARADISE=' Paradise.swf paradise-translations.xml' CONTENT_DOC_DATA_FILES=' Rusty Lake * Read Me.pdf' APP_MAIN_EXE_HOTEL="${AIR_NAME_HOTEL}.exe" APP_MAIN_EXE_ROOTS="${AIR_NAME_ROOTS}.exe" APP_MAIN_EXE_PARADISE="${AIR_NAME_PARADISE}.exe" APP_MAIN_ICON_HOTEL='icons/Icon48.png' APP_MAIN_ICON_ROOTS='icons/icon48.png' APP_MAIN_ICON_PARADISE='icons/Icon48 (1).png' WINE_PERSISTENT_DIRECTORIES_HOTEL=' users/${USER}/AppData/Roaming/com.RustyLake.RustyLakeHotel' WINE_PERSISTENT_DIRECTORIES_ROOTS=' users/${USER}/Documents/Rusty Lake/Roots' WINE_PERSISTENT_DIRECTORIES_PARADISE=' users/${USER}/Documents/Rusty Lake/Paradise' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID_HOTEL="${GAME_ID_HOTEL}-data" PKG_DATA_ID_ROOTS="${GAME_ID_ROOTS}-data" PKG_DATA_ID_PARADISE="${GAME_ID_PARADISE}-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-save-room-organization-puzzle.sh0000700000000000000000000000346414471751340020116 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Save Room - Organization Puzzle # send your bug reports to bugs@dotslashplay.it ### script_version=20240930.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='save-room-organization-puzzle' GAME_NAME='Save Room - Organization Puzzle' ARCHIVE_BASE_0_NAME='save_room_organization_puzzle_1_0_61593.sh' ARCHIVE_BASE_0_MD5='00a148fa8e4339e800587d48847606e9' ARCHIVE_BASE_0_SIZE='520000' ARCHIVE_BASE_0_VERSION='1.0-gog61593' ARCHIVE_BASE_0_URL='https://www.gog.com/game/save_room_organization_puzzle' UNITY3D_NAME='Save Room GOG' 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_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-shenzhen-io.sh0000755000000000000000000000642314471751340014414 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Shenzhen I/O # send your bug reports to bugs@dotslashplay.it ### script_version=20240718.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='shenzhen-io' GAME_NAME='Shenzhen I/O' ARCHIVE_BASE_2_NAME='shenzhen_i_o_gog_4_26_03_2023_63470.sh' ARCHIVE_BASE_2_MD5='50afcbddbb5226c26d1bd4a2fc780f58' ARCHIVE_BASE_2_SIZE='449123' ARCHIVE_BASE_2_VERSION='2023.03.26-gog63470' ARCHIVE_BASE_2_URL='https://www.gog.com/game/shenzhen_io' ARCHIVE_BASE_1_NAME='shenzhen_i_o_gog_3_11_14_2020_43142.sh' ARCHIVE_BASE_1_MD5='e804f591f8a65193e54964d9186ab6e8' ARCHIVE_BASE_1_SIZE='460000' ARCHIVE_BASE_1_VERSION='2020.11.14-gog43142' ARCHIVE_BASE_0_NAME='shenzhen_io_en_13_02_18613.sh' ARCHIVE_BASE_0_MD5='d7a3ccb58512bdc511d4fe8977480ff9' ARCHIVE_BASE_0_SIZE='450000' ARCHIVE_BASE_0_VERSION='13.02-gog18613' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN64_FILES=' Shenzhen.bin.x86_64' CONTENT_GAME_BIN32_FILES=' Shenzhen.bin.x86' CONTENT_GAME_DATA_FILES=' Shenzhen.exe Shenzhen.exe.config Content PackedContent monoconfig monomachineconfig *.dll' CONTENT_DOC_DATA_FILES=' LICENSE.txt' ## Write access to some files is required. USER_PERSISTENT_DIRECTORIES=' Content/textures PackedContent/fonts' ## The shipped binaries are used instead of system-provided mono to avoid a crash when using the in-game command editor. ## See notes/shenzhen-io for details. APP_MAIN_EXE_BIN64='Shenzhen.bin.x86_64' APP_MAIN_EXE_BIN32='Shenzhen.bin.x86' APP_MAIN_ICON='Content/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=' ld-linux-x86-64.so.2 libc.so.6 libdl.so.2 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libSDL2_image-2.0.so.0 libSDL2_mixer-2.0.so.0 libvorbisfile.so.3' 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 # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Apply common Mono tweaks. APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN') $(mono_launcher_tweaks)" launchers_generation 'PKG_BIN64' launchers_generation 'PKG_BIN32' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-sherlock-holmes-and-the-hound-of-the-baskervilles.sh0000700000000000000000000000435714471751340023553 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sherlock Holmes and the Hound of the Baskervilles # send your bug reports to bugs@dotslashplay.it ### script_version=20241016.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='sherlock-holmes-and-the-hound-of-the-baskervilles' GAME_NAME='Sherlock Holmes and the Hound of the Baskervilles' ARCHIVE_BASE_0_NAME='setup_sherlock_holmes_and_the_hound_of_the_baskervilles_1.0_(31691).exe' ARCHIVE_BASE_0_MD5='26b5d3a72d919ffd084efbb660b7607d' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='340000' ARCHIVE_BASE_0_VERSION='1.0-gog31691' ARCHIVE_BASE_0_URL='https://www.gog.com/game/sherlock_holmes_and_the_hound_of_the_baskervilles' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' d3dx9_32.dll msvcr71.dll sherlockholmes_thehoundofthebaskervilles.exe game.ini user.ini' CONTENT_GAME_DATA_FILES=' 000 cursor game logo shaders.0050 data.txt' ## TODO: Check if write access to these files is required USER_PERSISTENT_FILES=' game.ini user.ini' ## TODO: Check if some path under C:\Users should be saved in a persistent path APP_MAIN_EXE='sherlockholmes_thehoundofthebaskervilles.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-six-cats-under.sh0000755000000000000000000000402714471751340015031 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Six Cats Under # send your bug reports to bugs@dotslashplay.it ### script_version=20240615.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='six-cats-under' GAME_NAME='Six Cats Under' ARCHIVE_BASE_0_NAME='Six Cats Under - Linux.zip' ARCHIVE_BASE_0_MD5='c352fa55e864cb4f8c021764c9e825dd' ARCHIVE_BASE_0_SIZE='190167' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://teambeanloop.itch.io/six-cats-under' UNITY3D_NAME='Six_Cats_Under' UNITY3D_PLUGINS=' 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_DEPS="$PKG_DATA_ID" 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 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' # 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-spacechem.sh0000755000000000000000000000511314471751340014110 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec # SPDX-FileCopyrightText: © 2019 BetaRays # SPDX-FileCopyrightText: © 2021 Mopi set -o errexit ### # SpaceChem # send your bug reports to bugs@dotslashplay.it ### script_version=20250603.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='spacechem' GAME_NAME='SpaceChem' ARCHIVE_BASE_0_NAME='spacechem_1016_40617.sh' ARCHIVE_BASE_0_MD5='aec2809166dbc60a7cfa3f7c22db9a07' ARCHIVE_BASE_0_SIZE='299942' ARCHIVE_BASE_0_VERSION='1016-gog40617' ARCHIVE_BASE_0_URL='https://www.gog.com/game/spacechem' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_MAIN_FILES=' fonts images lang music sounds text Ionic.Zip.dll Newtonsoft.Json.dll System.Data.SQLite.dll SpaceChem.exe SpaceChem.exe.config journal.json scores.json template.locals template.user monoconfig monomachineconfig rgb2theora' CONTENT_DOC_MAIN_FILES=' LICENSE.txt' APP_MAIN_EXE='SpaceChem.exe' APP_MAIN_ICON="$APP_MAIN_EXE" PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_mixer-2.0.so.0 libvorbisfile.so.3' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll I18N.dll I18N.West.dll Mono.Posix.dll Mono.Security.dll System.dll System.ComponentModel.DataAnnotations.dll System.Configuration.dll System.Core.dll System.Data.dll System.Drawing.dll System.Numerics.dll System.Runtime.Serialization.dll System.Security.dll System.Transactions.dll System.Xml.dll System.Xml.Linq.dll' # 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)" # Set required execution permission on the rgb2theora binary. # This binary is used to generate .ogv video clips from puzzle solutions. chmod 755 'rgb2theora' ) # 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-spring-falls.sh0000700000000000000000000000422114471751340014546 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Hoël Bézier # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Spring Falls # send your bug reports to bugs@dotslashplay.it ### script_version=20241108.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='spring-falls' GAME_NAME='Spring Falls' ARCHIVE_BASE_1_NAME='Spring Falls v1.23 Linux.zip' ARCHIVE_BASE_1_MD5='67bdbc6f8aca62d13de738ed126a9d30' ARCHIVE_BASE_1_SIZE='137613' ARCHIVE_BASE_1_VERSION='1.23-itch.2021.02.16' ARCHIVE_BASE_1_URL='https://sparsegamedev.itch.io/spring-falls' ARCHIVE_BASE_0_NAME='Spring Falls v1.22 Linux.zip' ARCHIVE_BASE_0_MD5='4dfc2f3dde0d1f2abac252157413047c' ARCHIVE_BASE_0_SIZE='140000' ARCHIVE_BASE_0_VERSION='1.22-itch1' UNITY3D_NAME='SpringFalls' 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 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 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-stacking.sh0000755000000000000000000000774614471751340014001 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Stacking # send your bug reports to bugs@dotslashplay.it ### script_version=20251015.2 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='stacking' GAME_NAME='Stacking' ARCHIVE_BASE_HUMBLE_0_NAME='Stacking-Linux-2013-06-04-setup.bin' ARCHIVE_BASE_HUMBLE_0_MD5='4194bb869d537d40da7ad7f65b1102ed' ## This is a MojoSetup installer not relying on a Makeself wrapper. ARCHIVE_BASE_HUMBLE_0_EXTRACTOR='bsdtar' ARCHIVE_BASE_HUMBLE_0_SIZE='1505540' ARCHIVE_BASE_HUMBLE_0_VERSION='2013.06.04-humble160616' ARCHIVE_BASE_HUMBLE_0_URL='https://www.humblebundle.com/store/stacking' ARCHIVE_BASE_GOG_0_NAME='gog_stacking_2.0.0.4.sh' ARCHIVE_BASE_GOG_0_MD5='c32245091358bd97ac3e73c7f8bb937b' ## TODO: This size is copied (and rounded up) from the Humble Bundle archive. ## It should be replaced by the actual value measured from the real GOG installer. ARCHIVE_BASE_GOG_0_SIZE='1600000' ARCHIVE_BASE_GOG_0_VERSION='1.0-gog2.0.0.4' ARCHIVE_BASE_GOG_0_URL='https://www.gog.com/game/stacking' CONTENT_PATH_DEFAULT_HUMBLE='data' CONTENT_PATH_DEFAULT_GOG='data/noarch/game' CONTENT_LIBS_BIN_RELATIVE_PATH='lib' CONTENT_LIBS_BIN_FILES=' libfmodevent-4.42.16.so libfmodeventnet-4.42.16.so libfmodex-4.42.16.so' CONTENT_GAME_BIN_FILES=' Stack.bin.x86' CONTENT_GAME_L10N_FR_FILES=' Linux/Packs/Loc_frFR.~?' CONTENT_GAME_L10N_EN_FILES=' Linux/Packs/Loc_enUS.~?' CONTENT_GAME_DATA_FILES=' Data OGL Win Linux/Packs/00Startup.~? Linux/Packs/DLC1_Stuff.~? Linux/Packs/RgB_Stuff.~? Linux/Packs/Rg_Chars.~? Linux/Packs/RgS_Stuff.~? Linux/Packs/_Unused.~? Linux/Packs/Man_*.~? Stack.png DFCONFIG' APP_MAIN_EXE='Stack.bin.x86' APP_MAIN_ICON='Stack.png' 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_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 libSDL2-2.0.so.0 libstdc++.so.6 libz.so.1' 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. 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. mkdir --parents \ "$(package_path 'PKG_L10N_FR')$(path_game_data)/Data/Config" \ "$(package_path 'PKG_L10N_EN')$(path_game_data)/Data/Config" cat > "$(package_path 'PKG_L10N_FR')$(path_game_data)/Data/Config/Language.cfg" << EOF language='frFR' EOF cat > "$(package_path 'PKG_L10N_EN')$(path_game_data)/Data/Config/Language.cfg" << EOF language='enUS' EOF # Write launchers. launchers_generation # Build package. 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-sticky-business.sh0000755000000000000000000000405114471751340015317 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Sticky Business # send your bug reports to bugs@dotslashplay.it ### script_version=20251013.1 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='sticky-business' GAME_NAME='Sticky Business' ARCHIVE_BASE_1_NAME='setup_sticky_business_2025.159a_(64bit)_(83289).exe' ARCHIVE_BASE_1_MD5='22e369b7c4c88054d3f694b2a0792f15' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='199097' ARCHIVE_BASE_1_VERSION='2025.159a-gog83289' ARCHIVE_BASE_1_URL='https://www.gog.com/game/sticky_business' ARCHIVE_BASE_0_NAME='setup_sticky_business_2023.2084_(64bit)_(69872).exe' ARCHIVE_BASE_0_MD5='9d32598a90429c8464f6e44fd721ef46' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='193345' ARCHIVE_BASE_0_VERSION='2023.2084-gog69872' UNITY3D_NAME='stickybusiness' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Spellgarden Games/Sticky Business' 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-strange-horticulture.sh0000700000000000000000000000672014471751340016345 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Strange Horticulture # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='strange-horticulture' GAME_NAME='Strange Horticulture' ARCHIVE_BASE_3_NAME='setup_strange_horticulture_1.1.26_(64bit)_(59461).exe' ARCHIVE_BASE_3_MD5='f73097c90b89c86b55f164fe42744b0b' ARCHIVE_BASE_3_TYPE='innosetup' ARCHIVE_BASE_3_SIZE='695749' ARCHIVE_BASE_3_VERSION='1.1.26-gog59461' ARCHIVE_BASE_3_URL='https://www.gog.com/game/strange_horticulture' ARCHIVE_BASE_2_NAME='setup_strange_horticulture_1.1.9.1_(64bit)_(54071).exe' ARCHIVE_BASE_2_MD5='3f4294de0f17a31ea936052e8e820059' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='920000' ARCHIVE_BASE_2_VERSION='1.1.9.1-gog54071' ARCHIVE_BASE_1_NAME='setup_strange_horticulture_1.0.4_(64bit)_(53097).exe' ARCHIVE_BASE_1_MD5='6217dd2e77993a5af36954bc19e453c3' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='850000' ARCHIVE_BASE_1_VERSION='1.0.4-gog53097' ARCHIVE_BASE_0_NAME='setup_strange_horticulture_1.0.3_(64bit)_(53030).exe' ARCHIVE_BASE_0_MD5='56551c39d923f593b161a5b56d28c904' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='850000' ARCHIVE_BASE_0_VERSION='1.0.3-gog53030' UNITY3D_NAME='Strange Horticulture' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' EOSSDK-Win64-Shipping.dll' # TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll GalaxyCSharpGlue.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/BadVikingLtd/Strange Horticulture' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-sudocats.sh0000700000000000000000000000551714471751340014003 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Sudocats # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='sudocats' GAME_NAME='Sudocats' ARCHIVE_BASE_2_NAME='setup_sudocats_1.11_(json_achievements_fix)_(64bit)_(69928).exe' ARCHIVE_BASE_2_MD5='ad7da533bc7b59c7b0f62c468e2bae85' ARCHIVE_BASE_2_TYPE='innosetup' ARCHIVE_BASE_2_SIZE='250280' ARCHIVE_BASE_2_VERSION='1.11-gog69928' ARCHIVE_BASE_2_URL='https://www.gog.com/en/game/sudocats' ARCHIVE_BASE_1_NAME='setup_sudocats_1.1_(random_puzzles_with_gog_wrapper)_(64bit)_(68010).exe' ARCHIVE_BASE_1_MD5='c4a1e2a5cabddeedf73832c5841d576c' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='250591' ARCHIVE_BASE_1_VERSION='1.1-gog68010' ARCHIVE_BASE_0_NAME='setup_sudocats_1.0_gog_(64bit)_(62585).exe' ARCHIVE_BASE_0_MD5='c75b4230f05cc5b4d875abd855767dcf' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='230000' ARCHIVE_BASE_0_VERSION='1.0-gog62585' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' sudocats.exe' # The game fails to start if steam_api64.dll is missing. CONTENT_GAME0_BIN_FILES=' steam_api64.dll' # Starting with game build 1.1, galaxy64.dll is required. CONTENT_GAME1_BIN_FILES=' Galaxy64.dll GalaxyConfig.json' CONTENT_GAME_DATA_FILES=' sudocats.pck' USER_PERSISTENT_FILES=' *.cfg' # Native Godot can not be used, it crashes on launch: # SCRIPT ERROR: Parse Error: The identifier "Steam" isn't declared in the current scope. # at: GDScript::load_byte_code (res://GLOBAL/functions.gdc:83) # (…) # SCRIPT ERROR: Parse Error: The identifier "Steam" isn't declared in the current scope. # at: GDScript::load_byte_code (res://GLOBAL/steam.gdc:41) # (Godot 3.6.2) APP_MAIN_EXE='sudocats.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. 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-superliminal.sh0000700000000000000000000001017214471751340014653 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Superliminal # send your bug reports to bugs@dotslashplay.it ### script_version=20240930.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='superliminal' GAME_NAME='Superliminal' ARCHIVE_BASE_1_NAME='superliminal_1_3_53848.sh' ARCHIVE_BASE_1_MD5='b22c23f799a18f97f4dad185d713a556' ARCHIVE_BASE_1_SIZE='16000000' ## Yes, previous version of the game was 1.15. And the current one is 1.3. ## You can blame Pillow Castle developers for not being able to count up to 20. ARCHIVE_BASE_1_VERSION='1.3-gog53848' ARCHIVE_BASE_1_URL='https://www.gog.com/game/superliminal' ARCHIVE_BASE_0_NAME='superliminal_1_15_46618.sh' ARCHIVE_BASE_0_MD5='e2a90cc5c087b5e2e779e07f7524f089' ARCHIVE_BASE_0_SIZE='12000000' ARCHIVE_BASE_0_VERSION='1.15-gog46618' UNITY3D_NAME='SuperliminalGOG' UNITY3D_PLUGINS=' libfmodsuper.so libgvraudio.so libopenvr_api.so libresonanceaudio.so libStandaloneFileBrowser.so libvhacd.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_DATA_ASSETS_1_FILES=" ${UNITY3D_NAME}_Data/sharedassets0.* ${UNITY3D_NAME}_Data/sharedassets1.* ${UNITY3D_NAME}_Data/sharedassets2.* ${UNITY3D_NAME}_Data/sharedassets3.* ${UNITY3D_NAME}_Data/sharedassets4.* ${UNITY3D_NAME}_Data/sharedassets5.*" CONTENT_GAME_DATA_ASSETS_2_FILES=" ${UNITY3D_NAME}_Data/sharedassets*" ## The game crashes on launch when the Wayland backend of SDL is used, ## even when forcing the use of system SDL. 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_ASSETS_1 PKG_DATA_ASSETS_2 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 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libgtk-3.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' PKG_DATA_DEPENDENCIES_SIBLINGS=' PKG_DATA_ASSETS_1 PKG_DATA_ASSETS_2' PKG_DATA_ASSETS_ID="${PKG_DATA_ID}-assets" PKG_DATA_ASSETS_1_ID="${PKG_DATA_ASSETS_ID}-1" PKG_DATA_ASSETS_2_ID="${PKG_DATA_ASSETS_ID}-2" PKG_DATA_ASSETS_DESCRIPTION="$PKG_DATA_DESCRIPTION - assets" PKG_DATA_ASSETS_1_DESCRIPTION="$PKG_DATA_ASSETS_DESCRIPTION - 1" PKG_DATA_ASSETS_2_DESCRIPTION="$PKG_DATA_ASSETS_DESCRIPTION - 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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Work around Unity3D regressions APP_MAIN_PRERUN="$(application_prerun 'APP_MAIN')"' # Work around Unity3D regressions, comments are from the original game launcher ## Another Unity regression! WHO WOULD HAVE THOUGHT : "${SDL_MOUSE_RELATIVE_SPEED_SCALE:=4.0f}" export SDL_MOUSE_RELATIVE_SPEED_SCALE ## Unity _seriously_ dropped the ball here. ## 2019.3 adds -rdynamic which means all Linux games will fail to load FMOD ## properly, and while FMOD can be compiled monolithically we still run into ## symbol override issues. Why Unity didnʼt say anything about possibly the ## worldʼs most popular middleware I have absolutely no clue. ## ## So, we do both the monolithic build (thanks FMOD support!) and the preload, to ## ensure that our stupid hack is "safe". Unityʼs Linux team is fired. -flibit export LD_PRELOAD="${LD_PRELOAD:-}:'"$(path_libraries)"'/libfmodsuper.so" ' launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-tetrobot.sh0000700000000000000000000000444114471751340014013 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 VA # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Tetrobot and Co. # send your bug reports to bugs@dotslashplay.it ### script_version=20240605.1 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='tetrobot-and-co' GAME_NAME='Tetrobot and Co.' ARCHIVE_BASE_1_NAME='gog_tetrobot_and_co_2.1.0.6.sh' ARCHIVE_BASE_1_MD5='2ad2969e64e19d5753f8822e407c148c' ARCHIVE_BASE_1_SIZE='523264' ARCHIVE_BASE_1_VERSION='1.2.1-gog2.1.0.6' ARCHIVE_BASE_1_URL='https://www.gog.com/game/tetrobot_and_co' ARCHIVE_BASE_0_NAME='gog_tetrobot_and_co_2.1.0.5.sh' ARCHIVE_BASE_0_MD5='7d75f9813e1ec154158875c8e69e9dc8' ARCHIVE_BASE_0_SIZE='530000' ARCHIVE_BASE_0_VERSION='1.2.1-gog2.1.0.5' ## This game uses an unusual files structure for an Unity3D game, ## so most properties need to be explicitly set. UNITY3D_NAME='Tetrobot and Co' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Data/Mono Tetrobot and Co.x86' CONTENT_GAME_DATA_FILES=' Data' APP_MAIN_EXE='Tetrobot and Co.x86' APP_MAIN_ICON='Data/Resources/UnityPlayer.png' 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" 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' # 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-the-adventures-of-wolf-and-hood-a-jigsaw-tale.sh0000700000000000000000000000410514471751340022565 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Adventures of Wolf and Hood - A Jigsaw Tale # send your bug reports to bugs@dotslashplay.it ### script_version=20241108.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-adventures-of-wolf-and-hood-a-jigsaw-tale' GAME_NAME='The Adventures of Wolf and Hood - A Jigsaw Tale' ARCHIVE_BASE_0_NAME='the-adventures-of-wolf-and-hood-a-jigsaw-tale-for-linux.zip' ARCHIVE_BASE_0_MD5='a85bc8da1c3e313fdfe9e920754d982f' ARCHIVE_BASE_0_SIZE='457093' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://stone-baked-games.itch.io/the-adventures-of-wolf-and-hood-a-jigsaw-tale' UNITY3D_NAME='Wolf and Hood - a Jigsaw Tale' ## TODO: Check if the Steam library is required UNITY3D_PLUGINS=' libsteam_api.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 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 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-the-bridge.sh0000700000000000000000000000434014471751340014161 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Bridge # send your bug reports to bugs@dotslashplay.it ### script_version=20241130.1 PLAYIT_COMPATIBILITY_LEVEL='2.31' GAME_ID='the-bridge' GAME_NAME='The Bridge' ARCHIVE_BASE_0_NAME='TheBridgeLinux_1410196636.zip' ARCHIVE_BASE_0_MD5='6d3f5e7ff8d10d47f04ffabb8b9a031e' ARCHIVE_BASE_0_SIZE='302758' ARCHIVE_BASE_0_VERSION='1.0-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/the-bridge' UNITY3D_NAME='TheBridge' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='TheBridgeLinux/TheBridge' 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-the-cat-machine.sh0000700000000000000000000000410514471751340015075 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The Cat Machine # send your bug reports to bugs@dotslashplay.it ### script_version=20240930.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-cat-machine' GAME_NAME='The Cat Machine' ARCHIVE_BASE_0_NAME='TheCatMachineLinux.zip' ARCHIVE_BASE_0_MD5='5f9faf2a56be1fa244d7d795831cbdae' ARCHIVE_BASE_0_SIZE='380000' ARCHIVE_BASE_0_VERSION='1.0-humble1' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/the-cat-machine' UNITY3D_NAME='TheCatMachine' UNITY3D_PLUGINS=' ScreenSelector.so' ## The game does not start if the CSteamworks library is not provided. UNITY3D_PLUGINS="${UNITY3D_PLUGINS:-} libCSteamworks.so libsteam_api.so" CONTENT_PATH_DEFAULT='.' 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' 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-the-even-more-incredible-machine.sh0000700000000000000000000000337614471751340020332 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # The Even More Incredible Machine # send your bug reports to bugs@dotslashplay.it ### script_version=20240604.2 PLAYIT_COMPATIBILITY_LEVEL='2.29' GAME_ID='the-even-more-incredible-machine' GAME_NAME='The Even More Incredible Machine' ARCHIVE_BASE_0_NAME='setup_the_even_more_incredible_machine_2.1.0.24.exe' ARCHIVE_BASE_0_MD5='0486b8d5e65ea49ebf59b62a06cb9edd' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='21000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.24' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_incredible_machine_mega_pack' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_MAIN_FILES=' install.exe tim.exe install* resource* *.tim *.drv' USER_PERSISTENT_FILES=' *.cfg *.CFG *.tim *.TIM' APP_MAIN_EXE='tim.exe' APP_MAIN_ICON='goggame-1207664023.ico' # 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-the-house-of-da-vinci.sh0000700000000000000000000000537714471751340016155 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The House of Da Vinci # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-house-of-da-vinci' GAME_NAME='The House of Da Vinci' ARCHIVE_BASE_0_NAME='setup_the_house_of_da_vinci_1.0.3_(64bit)_(52072).exe' ARCHIVE_BASE_0_MD5='2cf6dce4524fe1b2ce1429f19438c38f' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_house_of_da_vinci_1.0.3_(64bit)_(52072)-1.bin' ARCHIVE_BASE_0_PART1_MD5='3b3e636a1697fa84161b57fc18bfacba' ARCHIVE_BASE_0_SIZE='2700000' ARCHIVE_BASE_0_VERSION='1.0.3-gog52072' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_house_of_da_vinci' UNITY3D_NAME='The House of Da Vinci' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS=' Galaxy64.dll GalaxyCSharpGlue.dll' CONTENT_PATH_DEFAULT='The House of Da Vinci' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Blue Brain Games/The House of da Vinci' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-the-incredible-machine-contraptions.sh0000700000000000000000000000465414471751340021160 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Return of the Incredible Machine: Contraptions # send your bug reports to bugs@dotslashplay.it ### script_version=20260420.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-incredible-machine-contraptions' GAME_NAME='Return of the Incredible Machine: Contraptions' ARCHIVE_BASE_0_NAME='setup_return_of_tim_contraptions_2.1.0.21.exe' ARCHIVE_BASE_0_MD5='827015fe4244d09f5f5aee17db6f65cc' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='260000' ARCHIVE_BASE_0_VERSION='1.0-gog2.1.0.21' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_incredible_machine_mega_pack' CONTENT_PATH_DEFAULT='app' CONTENT_GAME_BIN_FILES=' Contraptions.cnt Contraptions.exe Contraptions.hlp CONTRAPTIONS.INI SIGSPat.exe setup.GID setup.hlp Sierra.inf Saved Games' # TODO: Install libraries in a standard path. # TODO: Drop unused libraries. CONTENT_GAME0_BIN_FILES=' refresh.dll Roboex32.dll' CONTENT_GAME_DATA_FILES=' sx_10??.mid Interfaces.tbv Intro.tbv Levels.tbv Music.tbv Parts.tbv Sounds.tbv System.tbv Voice.tbv' CONTENT_DOC_DATA_FILES=' readme.txt' USER_PERSISTENT_DIRECTORIES=' Homemade Saved Games' # Mouse inputs do not register unless the game is run in a virtual desktop. # TODO: Check if this is still a problem with current WINE. WINE_VIRTUAL_DESKTOP='auto' APP_MAIN_EXE='Contraptions.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. 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-the-inheritance-of-crimson-manor.sh0000700000000000000000000000647114471751340020411 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The Inheritance of Crimson Manor # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-inheritance-of-crimson-manor' GAME_NAME='The Inheritance of Crimson Manor' ARCHIVE_BASE_1_NAME='setup_the_inheritance_of_crimson_manor_1.11_(64096).exe' ARCHIVE_BASE_1_MD5='6a9b1a20d9cc724e888c713409ed477e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_PART1_NAME='setup_the_inheritance_of_crimson_manor_1.11_(64096)-1.bin' ARCHIVE_BASE_1_PART1_MD5='2eeb8615b8997c27587462146a679c92' ARCHIVE_BASE_1_SIZE='2129897' ARCHIVE_BASE_1_VERSION='1.11-gog64096' ARCHIVE_BASE_1_URL='https://www.gog.com/game/the_inheritance_of_crimson_manor' ARCHIVE_BASE_0_NAME='setup_the_inheritance_of_crimson_manor_1.032_(56232).exe' ARCHIVE_BASE_0_MD5='2ec5ed427135ca0d6389c3b404729e8a' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_inheritance_of_crimson_manor_1.032_(56232)-1.bin' ARCHIVE_BASE_0_PART1_MD5='32dc765801cb0cfe2b864be1c4a04f07' ARCHIVE_BASE_0_SIZE='2100000' ARCHIVE_BASE_0_VERSION='1.032-gog56232' UNITY3D_NAME='CrimsonManor' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' Substance.Engine.dll substance_sse2_blend.dll' # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll GalaxyCSharpGlue.dll" # TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/MediaCity Games/CrimsonManor' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-the-pedestrian.sh0000755000000000000000000000521314471751340015075 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Pedestrian # send your bug reports to bugs@dotslashplay.it ### script_version=20250920.3 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-pedestrian' GAME_NAME='The Pedestrian' ARCHIVE_BASE_0_NAME='the_pedestrian_1_0_9_36404.sh' ARCHIVE_BASE_0_MD5='8c57947cdd3e1384024bceb508ec36ac' ARCHIVE_BASE_0_SIZE='1907337' ARCHIVE_BASE_0_VERSION='1.0.9-gog36404' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_pedestrian' UNITY3D_NAME='ThePed_Linux_64' UNITY3D_PLUGINS=' libfmodL.so libfmod.so libfmodstudioL.so libfmodstudio.so ScreenSelector.so' ## The game crashes on launch if the steam_api library is not available. UNITY3D_PLUGINS="$UNITY3D_PLUGINS libsteam_api.so" CONTENT_PATH_DEFAULT='data/noarch/game' ## Work around screen resolution detection problems. APP_MAIN_PRERUN=' # Work around screen resolution detection problems. config_file="$HOME/.config/unity3d/Skookum Arts/The Pedestrian/prefs" if [ ! -e "$config_file" ]; then mkdir --parents "$(dirname "$config_file")" cat > "$config_file" <<- EOF 768 1024 EOF 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 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. 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-search.sh0000755000000000000000000000341214471751340014203 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # The Search # send your bug reports to bugs@dotslashplay.it ### script_version=20240806.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-search' GAME_NAME='The Search' ARCHIVE_BASE_0_NAME='the-search-windows.zip' ARCHIVE_BASE_0_MD5='98b8ba6ac43c4df82511c55df099a533' ARCHIVE_BASE_0_SIZE='1800000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://jasongodbey.itch.io/the-search' UNITY3D_NAME='TheSearch' CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Jason Godbey/The Search' USER_PERSISTENT_FILES=" ${UNITY3D_NAME}_Data/QualitySettings.ini" 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-the-sexy-brutale.sh0000700000000000000000000000563614471751340015362 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # The Sexy Brutale # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.2 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-sexy-brutale' GAME_NAME='The Sexy Brutale' ARCHIVE_BASE_1_NAME='setup_the_sexy_brutale_gog-2_(40574).exe' ARCHIVE_BASE_1_MD5='ff1e34c2727d01a9f16a1c6d1acedd8e' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='2600000' ARCHIVE_BASE_1_VERSION='1.0-gog40574' ARCHIVE_BASE_1_URL='https://www.gog.com/game/the_sexy_brutale' ARCHIVE_BASE_0_NAME='setup_the_sexy_brutale_gog-1_(11101).exe' ARCHIVE_BASE_0_MD5='6d94492d797e199c1e67b05dabbc52e5' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_sexy_brutale_gog-1_(11101)-1.bin' ARCHIVE_BASE_0_PART1_MD5='3158c4b5d6e9eafb9c4d1a79812601e0' ARCHIVE_BASE_0_SIZE='3400000' ARCHIVE_BASE_0_VERSION='1.0-gog11101' UNITY3D_NAME='TSB' UNITY3D_NAME_0='The Sexy Brutale' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' fmod.dll fmodl.dll fmodstudio.dll fmodstudiol.dll' CONTENT_PATH_DEFAULT='.' CONTENT_PATH_DEFAULT_0='app' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/CGS/TSB' 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. 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-the-sojourn.sh0000755000000000000000000000445514471751340014445 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The Sojourn # send your bug reports to bugs@dotslashplay.it ### script_version=20251011.4 PLAYIT_COMPATIBILITY_LEVEL='2.33' GAME_ID='the-sojourn' GAME_NAME='The Sojourn' ARCHIVE_BASE_0_NAME='setup_the_sojourn_1.1_(64bit)_(41585).exe' ARCHIVE_BASE_0_MD5='dcb64504379bc323710bee15bf94deed' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_sojourn_1.1_(64bit)_(41585)-1.bin' ARCHIVE_BASE_0_PART1_MD5='6f1ba2e2348a794ba24ab0e5ae763e69' ARCHIVE_BASE_0_SIZE='2600000' ARCHIVE_BASE_0_VERSION='1.1-gog41585' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_sojourn' UNREALENGINE4_NAME='thesojourn' CONTENT_PATH_DEFAULT='.' 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_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 ## 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, to prevent crash related to 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-the-swapper.sh0000700000000000000000000000756614471751340014423 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2016 Mopi # SPDX-FileCopyrightText: © 2017 Antoine Le Gonidec set -o errexit ### # The Swapper # send your bug reports to bugs@dotslashplay.it ### script_version=20250226.3 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-swapper' GAME_NAME='The Swapper' ARCHIVE_BASE_0_NAME='the-swapper-linux-1.24_1409159048.sh' ARCHIVE_BASE_0_MD5='4f9627d245388edc320f61fae7cbd29f' ARCHIVE_BASE_0_SIZE='980000' ARCHIVE_BASE_0_VERSION='1.24-humble140404' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/the-swapper' CONTENT_PATH_DEFAULT='data/noarch' CONTENT_LIBS_FILES=' libfmodex.so' 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=' data mono TheSwapper.exe TheSwapper.exe.config BugReporter.exe mainSettings.ini config.xml AdvanceMath.dll Antlr3.Runtime.dll C5.dll FarseerPhysics331.dll HackFlipcodeDecomposer.dll ImageManipulation.dll Jint.dll Lidgren.Network.dll MiniTK.dll MiniTK.dll.config MonoGame.Framework.dll Newtonsoft.Json.dll OptimusSwitcher.dll Poly2Tri.dll SDL2#.dll SDL2#.dll.config SteamManagedWrapper.dll Steamworks.NET.dll TargaImage.dll TrueEngine.dll TrueEngine.dll.config' CONTENT_DOC_MAIN_FILES=' Licences README*' APP_MAIN_EXE='TheSwapper.exe' ## The icon must be explicitly set for mono games. APP_MAIN_ICON='TheSwapper.exe' PACKAGES_LIST=' PKG_MAIN PKG_LIBS64 PKG_LIBS32' PKG_MAIN_DEPENDENCIES_SIBLINGS=' PKG_LIBS' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libSDL2-2.0.so.0 libSDL2_image-2.0.so.0' PKG_MAIN_DEPENDENCIES_MONO_LIBRARIES=' mscorlib.dll Mono.Posix.dll Mono.Security.dll OpenTK.dll OpenTK.Compatibility.dll OpenTK.GLControl.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 libstdc++.so.6' PKG_LIBS32_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" PKG_LIBS64_DEPENDENCIES_LIBRARIES="$PKG_LIBS_DEPENDENCIES_LIBRARIES" # Delete unwanted Dropbox metadata files REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} find" # 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 unwanted Dropbox metadata files find . \ -name '*:com.dropbox.attributes:$DATA' \ -delete ) # Include game data content_inclusion_icons ## Use the shipped build of OpenTK on Arch Linux and Gentoo, ## as they do not provide it from their repositories. case "$(option_value 'package')" in ('arch'|'gentoo'|'egentoo') CONTENT_LIBS0_MAIN_FILES=' OpenTK.dll OpenTK.Compatibility.dll OpenTK.GLControl.dll' ;; esac content_inclusion_default # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-talos-principle.sh0000700000000000000000000000724714471751340016043 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # The Talos Principle # send your bug reports to bugs@dotslashplay.it ### script_version=20250225.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='the-talos-principle' GAME_NAME='The Talos Principle' ARCHIVE_BASE_1_NAME='setup_the_talos_principle_gold_edition_1.01_(64bit)_(42512).exe' ARCHIVE_BASE_1_MD5='b011b16d09532b2e709700477bc96017' ## Do not convert the file paths to lowercase ARCHIVE_BASE_1_EXTRACTOR='innoextract' ARCHIVE_BASE_1_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_1_PART1_NAME='setup_the_talos_principle_gold_edition_1.01_(64bit)_(42512)-1.bin' ARCHIVE_BASE_1_PART1_MD5='2e2430b8a2991a4d24f1aaec583b2ec3' ARCHIVE_BASE_1_PART2_NAME='setup_the_talos_principle_gold_edition_1.01_(64bit)_(42512)-2.bin' ARCHIVE_BASE_1_PART2_MD5='3b8770c9fdcf8f670ff6d0b06f011cf0' ARCHIVE_BASE_1_SIZE='6800000' ARCHIVE_BASE_1_VERSION='1.01-gog42512' ARCHIVE_BASE_1_URL='https://www.gog.com/game/the_talos_principle_gold_edition' ARCHIVE_BASE_0_NAME='setup_the_talos_principle_1.0_(64bit)_(41435).exe' ARCHIVE_BASE_0_MD5='769f3ba085c913d2bc44e22726bdadc8' ## Do not convert the file paths to lowercase ARCHIVE_BASE_0_EXTRACTOR='innoextract' ARCHIVE_BASE_0_EXTRACTOR_OPTIONS=' ' ARCHIVE_BASE_0_PART1_NAME='setup_the_talos_principle_1.0_(64bit)_(41435)-1.bin' ARCHIVE_BASE_0_PART1_MD5='4b94687328d0017b219e932ce73c44f5' ARCHIVE_BASE_0_PART2_NAME='setup_the_talos_principle_1.0_(64bit)_(41435)-2.bin' ARCHIVE_BASE_0_PART2_MD5='4216d66194c80ef8cfbfb5eeff82a54a' ARCHIVE_BASE_0_SIZE='6900000' ARCHIVE_BASE_0_VERSION='1.0-gog41435' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' Bin' CONTENT_GAME_DATA_FILES=' Content' USER_PERSISTENT_DIRECTORIES=' UserData' USER_PERSISTENT_FILES=' UserCfg.lua' APP_MAIN_EXE='Bin/x64/Talos.exe' ## Set a minimal configuration file APP_MAIN_PRERUN=' # Set a minimal configuration file CONF_FILE="UserData/Talos.ini" if [ ! -e "$CONF_FILE" ] ; then cat > "$CONF_FILE" <<- EOF gfx_strAPI = "Vulkan"; sfx_strAPI = "XAudio"; sfx_strAudioDevice = "ID:0"; EOF fi ' 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' # Work around broken graphics driver detection code checkdriver_lua_file='Content/Talos/Config/CheckDriver.lua' checkdriver_lua_content='-- assume no driver version detection gfx_iReqDriverVersion = 0; gfx_bWrongDriver = 0;' REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} 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)" # Work around broken graphics driver detection code printf '%s' "$checkdriver_lua_content" > "$checkdriver_lua_file" unix2dos --quiet "$checkdriver_lua_file" ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-the-tiny-bang-story.sh0000700000000000000000000000543714471751340016003 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # The Tiny Bang Story # send your bug reports to bugs@dotslashplay.it ### script_version=20241016.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='the-tiny-bang-story' GAME_NAME='The Tiny Bang Story' # Game archives ## French version ARCHIVE_BASE_FR_1_NAME='setup_the_tiny_bang_story_gog-1(a)_(french)_(23028).exe' ARCHIVE_BASE_FR_1_MD5='e66f1b4bf1eb19b1e569a38d897e3f27' ARCHIVE_BASE_FR_1_TYPE='innosetup' ARCHIVE_BASE_FR_1_SIZE='200000' ARCHIVE_BASE_FR_1_VERSION='1.0-gog23028' ARCHIVE_BASE_FR_1_URL='https://www.gog.com/game/the_tiny_bang_story' ## English version ARCHIVE_BASE_EN_1_NAME='setup_the_tiny_bang_story_gog-1(a)_(23028).exe' ARCHIVE_BASE_EN_1_MD5='a416471e10da3b374f4f43664cc4f179' ARCHIVE_BASE_EN_1_TYPE='innosetup' ARCHIVE_BASE_EN_1_SIZE='200000' ARCHIVE_BASE_EN_1_VERSION='1.0-gog23028' ARCHIVE_BASE_EN_1_URL='https://www.gog.com/game/the_tiny_bang_story' ARCHIVE_BASE_EN_0_NAME='setup_the_tiny_bang_story_gog-1_(22449).exe' ARCHIVE_BASE_EN_0_MD5='7b4e54787f46f81242e39f16f75fd8f0' ARCHIVE_BASE_EN_0_TYPE='innosetup' ARCHIVE_BASE_EN_0_SIZE='190000' ARCHIVE_BASE_EN_0_VERSION='1.0-gog22449' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' game.exe' CONTENT_GAME_L10N_FILES=' assets/strings.xml' CONTENT_GAME_DATA_FILES=' assets' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/Colibri Games/The Tiny Bang Story' APP_MAIN_EXE='game.exe' PACKAGES_LIST=' PKG_BIN PKG_L10N PKG_DATA' PKG_BIN_ARCH='32' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_L10N_BASE PKG_DATA' PKG_L10N_BASE_ID="${GAME_ID}-l10n" PKG_L10N_ID_EN="${PKG_L10N_BASE_ID}-en" PKG_L10N_ID_FR="${PKG_L10N_BASE_ID}-fr" PKG_L10N_PROVIDES=" $PKG_L10N_BASE_ID" PKG_L10N_DESCRIPTION_EN='English localization' PKG_L10N_DESCRIPTION_FR='French localization' 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-the-witness.sh0000755000000000000000000000453214471751340014436 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2019 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # The Witness # send your bug reports to bugs@dotslashplay.it ### script_version=20260421.6 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='the-witness' GAME_NAME='The Witness' ARCHIVE_BASE_0_NAME='setup_the_witness_21-12-2017_(19091).exe' ARCHIVE_BASE_0_MD5='5bfb0d687fb80cdd64cdee7b6b567400' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_PART1_NAME='setup_the_witness_21-12-2017_(19091)-1.bin' ARCHIVE_BASE_0_PART1_MD5='90a24fed5d8e2e52ab1bf2de84349984' ARCHIVE_BASE_0_SIZE='4300000' ARCHIVE_BASE_0_VERSION='2017.12.21-gog19091' ARCHIVE_BASE_0_URL='https://www.gog.com/game/the_witness' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' witness64_d3d11.exe' # TODO: Drop unused libraries. # TODO: Install libraries in a standard path. CONTENT_GAME0_BIN_FILES=' amd_ags_x64.dll AnselSDK64.dll bink2w64.dll openvr_api.dll' # TODO: Check if the Steam library is required. CONTENT_GAME1_BIN_FILES=' steam_api64.dll' CONTENT_GAME_DATA_FILES=' data data-pc controller.vdf data-pc.zip' CONTENT_GAME0_DATA_PATH='__support/app' CONTENT_GAME0_DATA_FILES=' language.ini' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/Roaming/The Witness' USER_PERSISTENT_FILES=' language.ini' APP_MAIN_EXE='witness64_d3d11.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. 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-there-is-no-game.sh0000755000000000000000000000613214471751340015223 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2022 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # There is no Game: Wrong Dimension # send your bug reports to bugs@dotslashplay.it ### script_version=20260418.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='there-is-no-game' GAME_NAME='There is no Game: Wrong Dimension' ARCHIVE_BASE_1_NAME='setup_there_is_no_game__wrong_dimension_v1.0.33_(56072).exe' ARCHIVE_BASE_1_MD5='1e13fd87c0e5430e4a54bfca9ebf77f2' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='1729269' ARCHIVE_BASE_1_VERSION='1.0.33-gog56072' ARCHIVE_BASE_1_URL='https://www.gog.com/game/there_is_no_game_wrong_dimension' ARCHIVE_BASE_0_NAME='setup_there_is_no_game__wrong_dimension_v1.0.30_(52258).exe' ARCHIVE_BASE_0_MD5='f9590da9c19a554e8154ffeacee9cdbb' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1100000' ARCHIVE_BASE_0_VERSION='1.0.30-gog52258' UNITY3D_NAME='Ting' # Experimental support for Windows Unity3D plugins, # no support in ./play.it library yet. # (./play.it 2.35) # TODO: Drop unused libraries. UNITY3D_PLUGINS=' concrt140.dll msvcp100.dll msvcp140.dll msvcr100.dll sgup_api64.dll StovePCSDK.dll vcruntime140.dll' # TODO: Check if the Steam library is required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS Galaxy64.dll GalaxyCSharpGlue.dll" # TODO: Check if the Galaxy libraries are required. UNITY3D_PLUGINS="$UNITY3D_PLUGINS steam_api64.dll" CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/DrawMeAPixel/Ting' 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' # Include Unity3D plugins. unity3d_plugins_inclusion 'PKG_BIN' "$(unity3d_name)_Data/Plugins/x86_64" "$(path_libraries)/$(unity3d_name)_Data/Plugins" content_inclusion_default # Write launchers. # Install Unity3D plugins. 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-tidalis.sh0000700000000000000000000000626414471751340013607 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Tidalis # send your bug reports to bugs@dotslashplay.it ### script_version=20250519.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tidalis' GAME_NAME='Tidalis' ARCHIVE_BASE_64BIT_0_NAME='Tidalis_Linux64_v1.5.zip' ARCHIVE_BASE_64BIT_0_MD5='d5893c3ed40ab2266359c88b361ddb57' ARCHIVE_BASE_64BIT_0_SIZE='630000' ARCHIVE_BASE_64BIT_0_VERSION='1.5-humble160517' ARCHIVE_BASE_64BIT_0_URL='https://www.humblebundle.com/store/tidalis' ARCHIVE_BASE_32BIT_0_NAME='Tidalis_Linux32_v1.5.zip' ARCHIVE_BASE_32BIT_0_MD5='c5fd83dd7e6221a5a91e326fc36c9043' ARCHIVE_BASE_32BIT_0_SIZE='630000' ARCHIVE_BASE_32BIT_0_VERSION='1.5-humble160517' ARCHIVE_BASE_32BIT_0_URL='https://www.humblebundle.com/store/tidalis' UNITY3D_NAME='TidalisLinux' ## TODO: Check if the Steam libraries can be dropped. UNITY3D_PLUGINS=' libCSteamworks.so libsteam_api.so' CONTENT_PATH_DEFAULT='.' CONTENT_GAME0_DATA_FILES=' RuntimeData' ## The sysrequirements.txt file is actually what unlocks access to the full game. CONTENT_GAME1_DATA_FILES=' sysrequirements.txt' CONTENT_DOC_FILES=' TidalisManual.pdf TidalisLicense.txt' PACKAGES_LIST=' PKG_BIN PKG_DATA' PKG_BIN_ARCH_64BIT='64' PKG_BIN_ARCH_32BIT='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 ( cd "${PLAYIT_WORKDIR}/gamedata/$(content_path_default)" # Delete Apple archives junk. rm --recursive '__MACOSX' find . -name '*.rsrc' -delete # Prevent inclusion of the game updater. rm --recursive 'UDA' # Prevent inclusion of files for the wrong architecture. case "$(current_archive)" in ('ARCHIVE_BASE_64BIT_'*) rm --recursive \ "$(unity3d_name)_Data/Mono/x86" \ "$(unity3d_name)_Data/Plugins/x86" ;; ('ARCHIVE_BASE_32BIT_'*) rm --recursive \ "$(unity3d_name)_Data/Mono/x86_64" \ "$(unity3d_name)_Data/Plugins/x86_64" ;; esac ) # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Write launchers ## Do not disable the MAP_32BIT flag, to prevent a crash on launch. unity3d_disable_map32bit() { return 0 ; } launchers_generation 'PKG_BIN' # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-timelie.sh0000700000000000000000000000354614471751340013606 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2021 Daguhh # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Timelie # send your bug reports to bugs@dotslashplay.it ### script_version=20241026.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='timelie' GAME_NAME='Timelie' ARCHIVE_BASE_0_NAME='setup_timelie_1.1.0_(64bit)_(41792).exe' ARCHIVE_BASE_0_MD5='7786ab76c953fda21ee196a69ad2b4ee' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='1400000' ARCHIVE_BASE_0_VERSION='1.1.0-gog41792' ARCHIVE_BASE_0_URL='https://www.gog.com/game/timelie' UNITY3D_NAME='timelie' CONTENT_PATH_DEFAULT='.' WINE_DIRECT3D_RENDERER='dxvk' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Urnique Studio/Timelie' WINE_REGEDIT_PERSISTENT_KEYS=' HKEY_CURRENT_USER\Software\Urnique Studio\Timelie' 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-tis-100.sh0000755000000000000000000000546414471751340013266 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: BSD-2-Clause # SPDX-FileCopyrightText: © 2018 BetaRays # SPDX-FileCopyrightText: © 2020 Antoine Le Gonidec set -o errexit ### # TIS-100 # send your bug reports to bugs@dotslashplay.it ### script_version=20241019.1 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='tis-100' GAME_NAME='TIS-100' ARCHIVE_BASE_1_NAME='tis_100_11_14_2020_43142.sh' ARCHIVE_BASE_1_MD5='ce632a3b15de61222f79d3c4f506bac1' ARCHIVE_BASE_1_SIZE='84000' ARCHIVE_BASE_1_VERSION='2020.11.14-gog43142' ARCHIVE_BASE_1_URL='https://www.gog.com/game/tis100' ARCHIVE_BASE_0_NAME='tis_100_en_11_27_2017_16765.sh' ARCHIVE_BASE_0_MD5='70518ec82ee8148697b704ed2c3c8953' ARCHIVE_BASE_0_SIZE='83000' ARCHIVE_BASE_0_VERSION='2017.11.27-gog16765' UNITY3D_NAME='tis100' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' *.pdf *.txt' 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" # Extract game data archive_extraction_default # Include game data content_inclusion_icons 'PKG_DATA' content_inclusion_default # Copy the manual in the game directory manual_source="$(package_path 'PKG_DATA')$(path_documentation)/TIS-100 Reference Manual.pdf" manual_destination="$(package_path 'PKG_DATA')$(path_game_data)/TIS-100 Reference Manual.pdf" mkdir --parents "$(dirname "$manual_destination")" cp --link "$manual_source" "$manual_destination" # 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-townscaper.sh0000755000000000000000000000343414471751340014351 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 VA # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Townscaper # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.1 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='townscaper' GAME_NAME='Townscaper' ARCHIVE_BASE_0_NAME='setup_townscaper_1.0_(49525).exe' ARCHIVE_BASE_0_MD5='1a1e0bd05b686bc6a5b0aabde0901cb1' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='108000' ARCHIVE_BASE_0_VERSION='1.0-gog49525' ARCHIVE_BASE_0_URL='https://www.gog.com/game/townscaper' UNITY3D_NAME='Townscaper' # TODO: Set an explicit list of Unity3D plugins to include. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES=' users/${USER}/AppData/LocalLow/Oskar Stalberg/Townscaper' 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. 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-tri-of-friendship-and-madness.sh0000700000000000000000000000610514471751340017671 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2017 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Tri: Of Friendship and Madness # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.2 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='tri-of-friendship-and-madness' GAME_NAME='TRI: Of Friendship and Madness' ARCHIVE_BASE_2_NAME='tri_of_friendship_and_madness_1_2_1_stunnedfox_56365.sh' ARCHIVE_BASE_2_MD5='7daf33ea8d0e13fc9d5988bc02e8d1d3' ARCHIVE_BASE_2_SIZE='470002' ARCHIVE_BASE_2_VERSION='1.2.1-gog56365' ARCHIVE_BASE_2_URL='https://www.gog.com/game/tri' ARCHIVE_BASE_1_NAME='tri_of_friendship_and_madness_1_2_30878.sh' ARCHIVE_BASE_1_MD5='3240ccae6723c2fdba20910246a4c068' ARCHIVE_BASE_1_SIZE='480000' ARCHIVE_BASE_1_VERSION='1.2-gog30878' ARCHIVE_BASE_0_NAME='gog_tri_2.6.0.9.sh' ARCHIVE_BASE_0_MD5='c2bf151b58766740e52db9559d61e3d6' ARCHIVE_BASE_0_SIZE='470000' ARCHIVE_BASE_0_VERSION='1.2-gog2.6.0.9' UNITY3D_NAME='tri' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_DOC_DATA_FILES=' versions.txt' 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 libstdc++.so.6 libX11.so.6 libXcursor.so.1' PKG_BIN64_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" ## Easier upgrades from pre-20250511.2 packages PKG_BIN_PROVIDES="${PKG_BIN_PROVIDES:-} tri-of-friendship-of-madness" PKG_BIN64_PROVIDES="$PKG_BIN_PROVIDES" PKG_BIN32_PROVIDES="$PKG_BIN_PROVIDES" PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' ## Easier upgrades from pre-20250511.2 packages PKG_DATA_PROVIDES="${PKG_DATA_PROVIDES:-} tri-of-friendship-of-madness-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 package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-true-fear-forsaken-souls.sh0000755000000000000000000000711114471751340017023 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # True Fear: Forsaken Souls # send your bug reports to bugs@dotslashplay.it ### script_version=20250418.5 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID_EPISODE1='true-fear-forsaken-souls-1' GAME_NAME_EPISODE1='True Fear: Forsaken Souls - Part 1' GAME_ID_EPISODE2='true-fear-forsaken-souls-2' GAME_NAME_EPISODE2='True Fear: Forsaken Souls - Part 2' ARCHIVE_BASE_EPISODE1_1_NAME='setup_true_fear_forsaken_souls_part_1_2.0.10_(64bit)_(86246).exe' ARCHIVE_BASE_EPISODE1_1_MD5='f3ff475c3cfe99b559eda57c14d3029b' ARCHIVE_BASE_EPISODE1_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_1_SIZE='932520' ARCHIVE_BASE_EPISODE1_1_VERSION='2.0.10-gog86246' ARCHIVE_BASE_EPISODE1_1_URL='https://www.gog.com/game/true_fear_forsaken_souls' ARCHIVE_BASE_EPISODE1_0_NAME='setup_true_fear_forsaken_souls_part_1_2.0.26_(43095).exe' ARCHIVE_BASE_EPISODE1_0_MD5='12c98dc222047ba571e7c1ce3e6689c8' ARCHIVE_BASE_EPISODE1_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE1_0_SIZE='660000' ARCHIVE_BASE_EPISODE1_0_VERSION='2.0.2-gog43095' ARCHIVE_BASE_EPISODE2_1_NAME='setup_true_fear_forsaken_souls_part_2_2.0.12_(64bit)_(86051).exe' ARCHIVE_BASE_EPISODE2_1_MD5='dabf1b7292071d5145809c66ad26f4cc' ARCHIVE_BASE_EPISODE2_1_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_1_SIZE='973169' ARCHIVE_BASE_EPISODE2_1_VERSION='2.0.10-gog86051' ARCHIVE_BASE_EPISODE2_1_URL='https://www.gog.com/game/true_fear_forsaken_souls_part_2' ARCHIVE_BASE_EPISODE2_0_NAME='setup_true_fear_forsaken_souls_part_2_2.0.8_(49144).exe' ARCHIVE_BASE_EPISODE2_0_MD5='e464cb8eedd9728249efde7593c75f79' ARCHIVE_BASE_EPISODE2_0_TYPE='innosetup' ARCHIVE_BASE_EPISODE2_0_SIZE='900000' ARCHIVE_BASE_EPISODE2_0_VERSION='2.0.8-gog49144' UNITY3D_NAME_EPISODE1='TrueFear1' UNITY3D_NAME_EPISODE1_0='True Fear' UNITY3D_NAME_EPISODE2='TrueFear2' UNITY3D_NAME_EPISODE2_0='True Fear 2' # TODO: Include an explicit list of Unity3D plugins. CONTENT_PATH_DEFAULT='.' WINE_PERSISTENT_DIRECTORIES_EPISODE1=' users/${USER}/AppData/Local/Goblinz/TrueFear_ForsakenSouls' WINE_PERSISTENT_DIRECTORIES_EPISODE2=' users/${USER}/AppData/Local/Goblinz/True Fear 2' 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' # Easier updates from pre-20250418.1 packages PKG_BIN_PROVIDES_EPISODE1=' true-fear-1' PKG_BIN_PROVIDES_EPISODE2=' true-fear-2' PKG_DATA_ID_EPISODE1="${GAME_ID_EPISODE1}-data" PKG_DATA_ID_EPISODE2="${GAME_ID_EPISODE2}-data" PKG_DATA_DESCRIPTION='data' # Easier updates from pre-20250418.1 packages PKG_DATA_PROVIDES_EPISODE1=' true-fear-1-data' PKG_DATA_PROVIDES_EPISODE2=' true-fear-2-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-under-leaves.sh0000700000000000000000000000372614471751340014550 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Under Leaves # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='under-leaves' GAME_NAME='Under Leaves' ARCHIVE_BASE_0_NAME='UnderLeaves_v1_1_0_Linux.zip' ARCHIVE_BASE_0_MD5='800ccb204e5bbd9abb820309c0968a13' ARCHIVE_BASE_0_SIZE='280348' ARCHIVE_BASE_0_VERSION='1.1.0-humble180124' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/under-leaves' UNITY3D_NAME='UnderLeaves' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='UnderLeavesLinux' 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 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 package packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-unmechanical.sh0000700000000000000000000000600314471751340014574 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2018 Mopi # SPDX-FileCopyrightText: © 2018 Antoine Le Gonidec set -o errexit ### # Unmechanical # send your bug reports to bugs@dotslashplay.it ### script_version=20241022.3 PLAYIT_COMPATIBILITY_LEVEL='2.30' GAME_ID='unmechanical' GAME_NAME='Unmechanical' ARCHIVE_BASE_1_NAME='gog_unmechanical_2.1.0.5.sh' ARCHIVE_BASE_1_MD5='a99865ecd58e895334d405523a23eee3' ARCHIVE_BASE_1_SIZE='1600000' ARCHIVE_BASE_1_VERSION='2.0-gog2.1.0.5' ARCHIVE_BASE_1_URL='https://www.gog.com/game/unmechanical' ARCHIVE_BASE_0_NAME='gog_unmechanical_2.1.0.4.sh' ARCHIVE_BASE_0_MD5='44453abb32e21b94e9731938486c71f7' ARCHIVE_BASE_0_SIZE='1600000' ARCHIVE_BASE_0_VERSION='2.0-gog2.1.0.4' CONTENT_PATH_DEFAULT='data/noarch/game' CONTENT_GAME_BIN_FILES=' Engine Binaries/Linux/UDKGame-Linux' ## TODO: Check if the shipped libSDL2_mixer-2.0.so.0 could be replaced by a system-provided build CONTENT_LIBS_BIN_PATH='data/noarch/game/Binaries/Linux/lib' CONTENT_LIBS_BIN_FILES=' libPhysXCore.so libPhysXExtensions.so.1 libPhysXLoader.so.1 libPhysXCooking.so libSDL2_mixer-2.0.so.0 libtcmalloc.so.0' ## TODO: Check if the Steam library is required CONTENT_LIBS0_BIN_PATH='data/noarch/game/Binaries/Linux/lib' CONTENT_LIBS0_BIN_FILES=' libsteam_api.so' CONTENT_GAME_DATA_FILES=' UDKGame UnmechanicalIcon.bmp' APP_MAIN_EXE='Binaries/Linux/UDKGame-Linux' APP_MAIN_ICON='UnmechanicalIcon.bmp' ## Work around the game engine incompatibility with the wayland backend of SDL APP_MAIN_PRERUN=' # Work around the game engine incompatibility with 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 libogg.so.0 libopenal.so.1 libpthread.so.0 librt.so.1 libSDL2-2.0.so.0 libstdc++.so.6 libvorbisfile.so.3 libvorbis.so.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" # 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 ./UDKGame-Linux "$@" EOF } launchers_generation 'PKG_BIN' # Build package packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-untitled-cat-unboxing.sh0000700000000000000000000000340014471751340016367 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2024 Antoine Le Gonidec set -o errexit ### # Untitled Cat Unboxing # send your bug reports to bugs@dotslashplay.it ### script_version=20240428.1 PLAYIT_COMPATIBILITY_LEVEL='2.28' GAME_ID='untitled-cat-unboxing' GAME_NAME='Untitled Cat Unboxing' ARCHIVE_BASE_0_NAME='Untitled cat unboxing.x86_64' ARCHIVE_BASE_0_MD5='96366d6a04c6f3081aee60ba9a167b65' ARCHIVE_BASE_0_SIZE='42000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://reispfannenfresser.itch.io/untitled-cat-unboxing' APP_MAIN_EXE='Untitled cat unboxing.x86_64' PKG_MAIN_ARCH='64' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libasound.so.2 libc.so.6 libdl.so.2 libGL.so.1 libm.so.6 libpthread.so.0 libpulse.so.0 libX11.so.6 libXcursor.so.1 libXinerama.so.1 libXi.so.6 libXrandr.so.2 libXrender.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" # Include game data install -D --mode=755 \ "$(archive_path "$(current_archive)")" \ "$(package_path 'PKG_MAIN')$(path_game_data)/Untitled cat unboxing.x86_64" # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up rm --recursive "$PLAYIT_WORKDIR" exit 0 games/play-wayward-manor.sh0000700000000000000000000000416714471751340014746 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Antoine Le Gonidec set -o errexit ### # Wayward Manor # send your bug reports to bugs@dotslashplay.it ### script_version=20250324.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='wayward-manor' GAME_NAME='Wayward Manor' ARCHIVE_BASE_0_NAME='WaywardManorWin78Version1.01.zip' ARCHIVE_BASE_0_MD5='1a832bc0fbf67f5c4675f47988ec2243' ARCHIVE_BASE_0_SIZE='2500000' ARCHIVE_BASE_0_VERSION='1.01-humble.2014.07.24' ARCHIVE_BASE_0_URL='https://www.humblebundle.com/store/wayward-manor' UNITY3D_NAME='waywardmanor' CONTENT_PATH_DEFAULT='app' CONTENT_GAME0_BIN_FILES=' msvcr100d.dll' WINE_REGEDIT_PERSISTENT_KEYS='HKEY_CURRENT_USER\Software\TheOddGentlemen\Wayward Manor' WINE_VIRTUAL_DESKTOP='auto' 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 inner archive is based on InnoSetup. REQUIREMENTS_LIST="${REQUIREMENTS_LIST:-} innoextract" # 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 ARCHIVE_INNER_PATH="${PLAYIT_WORKDIR}/gamedata/Wayward Manor Win 7 & 8 Version 1.01/WMSetup.exe" ARCHIVE_INNER_TYPE='innosetup' 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-where-is-my-heart.sh0000755000000000000000000000412714471751340015433 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2021 Mopi # SPDX-FileCopyrightText: © 2022 Antoine Le Gonidec set -o errexit ### # Where is my Heart # send your bug reports to bugs@dotslashplay.it ### script_version=20260418.3 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='where-is-my-heart' GAME_NAME='Where is my Heart?' ARCHIVE_BASE_0_NAME='setup_where_is_my_heart_1.0_(22335).exe' ARCHIVE_BASE_0_MD5='1204a8799d050a4c49e3eac069d040db' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='130000' ARCHIVE_BASE_0_VERSION='1.0-gog223335' ARCHIVE_BASE_0_URL='https://www.gog.com/game/where_is_my_heart' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_MAIN_FILES=' Where is my Heart.exe' # TODO: Install libraries in a standard path. # TODO: Drop unused libraries. CONTENT_GAME0_MAIN_FILES=' fmodex.dll libgcc_s_dw2-1.dll mingwm10.dll msvcp100d.dll msvcr100d.dll QtCore4.dll QtCored4.dll QtGui4.dll QtGuid4.dll QtOpenGL4.dll QtOpenGLd4.dll' CONTENT_GAME1_MAIN_PATH='__support/app' CONTENT_GAME1_MAIN_FILES=' Controls.xml Settings.xml' CONTENT_GAME2_MAIN_PATH='__support/save' CONTENT_GAME2_MAIN_FILES=' Saves' USER_PERSISTENT_DIRECTORIES=' Saves' USER_PERSISTENT_FILES=' Controls.xml Settings.xml' APP_MAIN_EXE='Where is my Heart.exe' PKG_MAIN_ARCH='32' # 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. launchers_generation # Build packages. packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 games/play-while-true-learn.sh0000700000000000000000000000445614471751340015343 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # while True: learn() # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='while-true-learn' GAME_NAME='while True: learn()' ARCHIVE_BASE_0_NAME='while_true_learn_1_2_95_5144b_46524.sh' ARCHIVE_BASE_0_MD5='0818a14ad1548264ca3540321b133231' ARCHIVE_BASE_0_SIZE='860000' ARCHIVE_BASE_0_VERSION='1.2.95-gog46524' ARCHIVE_BASE_0_URL='https://www.gog.com/game/while_true_learn' UNITY3D_NAME='wtl' UNITY3D_PLUGINS=' ScreenSelector.so' CONTENT_PATH_DEFAULT='data/noarch/game' USER_PERSISTENT_DIRECTORIES=' Saves' 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_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_BIN32_DEPENDENCIES_LIBRARIES="$PKG_BIN_DEPENDENCIES_LIBRARIES" PKG_BIN64_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" # 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-windosill.sh0000700000000000000000000000376514471751340014165 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2020 Mopi # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Windosill # send your bug reports to bugs@dotslashplay.it ### script_version=20250511.1 PLAYIT_COMPATIBILITY_LEVEL='2.32' GAME_ID='windosill' GAME_NAME='Windosill' ARCHIVE_BASE_0_NAME='Windosill' ARCHIVE_BASE_0_MD5='853ab5f3ea6b2691718466f0479b867f' ARCHIVE_BASE_0_SIZE='19000' ARCHIVE_BASE_0_VERSION='1.0-itch' ARCHIVE_BASE_0_URL='https://vectorpark.itch.io/windosill' APP_MAIN_EXE='Windosill' PKG_MAIN_ARCH='32' PKG_MAIN_DEPENDENCIES_LIBRARIES=' libatk-1.0.so.0 libcairo.so.2 libc.so.6 libdl.so.2 libfontconfig.so.1 libfreetype.so.6 libgdk_pixbuf-2.0.so.0 libgdk-x11-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 libpangoft2-1.0.so.0 libplc4.so libplds4.so libpthread.so.0 librt.so.1 libsmime3.so libssl3.so libX11.so.6 libXcursor.so.1 libXext.so.6 libXrender.so.1 libXt.so.6' # 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 "$@" # Include game data install -D --mode=755 \ --target-directory="$(package_path 'PKG_MAIN')$(path_game_data)" \ "$(archive_path "$(current_archive)")" # Write launchers launchers_generation # Build packages packages_generation print_instructions # Clean up working_directory_cleanup exit 0 games/play-zodiacats.sh0000700000000000000000000000563614471751340014141 0ustar rootroot#!/bin/sh # SPDX-License-Identifier: ACSL # SPDX-FileCopyrightText: © 2023 Antoine Le Gonidec set -o errexit ### # Zodiacats # send your bug reports to bugs@dotslashplay.it ### script_version=20260419.4 PLAYIT_COMPATIBILITY_LEVEL='2.35' GAME_ID='zodiacats' GAME_NAME='Zodiacats' ARCHIVE_BASE_1_NAME='setup_zodiacats_1.0006_-_gog_wrapper_ok_(64bit)_(63182).exe' ARCHIVE_BASE_1_MD5='da18fffdef200b98f9d3a0bef1b87a49' ARCHIVE_BASE_1_TYPE='innosetup' ARCHIVE_BASE_1_SIZE='279914' ARCHIVE_BASE_1_VERSION='1.0006-gog63182' ARCHIVE_BASE_1_URL='https://www.gog.com/game/zodiacats' ARCHIVE_BASE_0_NAME='setup_zodiacats_1.0003_(64bit)_(62419).exe' ARCHIVE_BASE_0_MD5='ad9c318bba0464f6bcdf3079ebd8f1c9' ARCHIVE_BASE_0_TYPE='innosetup' ARCHIVE_BASE_0_SIZE='270000' ARCHIVE_BASE_0_VERSION='1.0003-gog62419' CONTENT_PATH_DEFAULT='.' CONTENT_GAME_BIN_FILES=' zodiacats.exe zodiacats_settings.cfg' # TODO: Install libraries in a standard path. # zodiacats.exe requirements CONTENT_GAME0_BIN_FILES=' steam_api64.dll' # steam_api64.dll requirements CONTENT_GAME1_BIN_FILES=' Galaxy64.dll' # Missing GalaxyConfig.json triggers a crash on launch. CONTENT_GAME2_BIN_FILES=' GalaxyConfig.json' CONTENT_GAME_DATA_FILES=' zodiacats.pck' USER_PERSISTENT_FILES=' fortune.cfg' # Loading this game with Linux native godot3-runner crashes right after the introduction video. # We fall back on running the shipped binaries with WINE. # (Godot 3.6.2) APP_MAIN_EXE='zodiacats.exe' # If the .exe file is too big, wrestool fails to handle it with: # wrestool: (…)/gamedata/zodiacats.exe: premature end APP_MAIN_ICON_0='app/goggame-1435098189.ico' PACKAGES_LIST=' PKG_BIN PKG_DATA' PACKAGES_LIST_0=' PKG_BIN' PKG_BIN_ARCH='64' PKG_BIN_DEPENDENCIES_SIBLINGS=' PKG_DATA' PKG_DATA_ID="${GAME_ID}-data" PKG_DATA_DESCRIPTION='data' PKG_BIN_PROVIDES_0=" $PKG_DATA_ID" # 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. case "$(current_archive)" in ('ARCHIVE_BASE_0') content_inclusion_icons ;; (*) content_inclusion_icons 'PKG_DATA' ;; esac content_inclusion_default # Write launchers. launchers_generation # Build packages. # Prevent a dependency loop when building a single package. case "$(current_archive)" in ('ARCHIVE_BASE_0') dependencies_siblings_list() { return 0; } ;; esac packages_generation print_instructions # Clean up. working_directory_cleanup exit 0 tests/check-license.sh0000700000000000000000000000065114471751340013750 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/ACSL0000644000000000000000000000346314471751340012042 0ustar rootrootAnti-Capitalist Software License (v 1.4) Copyright © 2016 Mopi Copyright © 2016 Antoine Le Gonidec Copyright © 2019 VA Copyright © 2020 Hoël Bézier Copyright © 2020 Emmanuel Gil Peyrot Copyright © 2020 Alarig Le Lay Copyright © 2023 HS-157 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-Clause0000644000000000000000000000325514471751340013300 0ustar rootrootSimplified BSD License Copyright © 2016 Mopi Copyright © 2016 Antoine Le Gonidec Copyright © 2018 BetaRays Copyright © 2019 Erwann Duclos Copyright © 2019 VA Copyright © 2020 Jacek Szafarkiewicz Copyright © 2020 Hoël Bézier Copyright © 2020 Emmanuel Gil Peyrot Copyright © 2020 Alarig Le Lay Copyright © 2021 Daguhh Copyright © 2023 HS-157 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. Makefile0000644000000000000000000000537714471751340011236 0ustar rootrootcollection_name = 45_puzzle # 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 # Run syntax checks, relying on ShellCheck GAME_SCRIPTS := $(wildcard games/play-*.sh) GAME_SCRIPTS_TESTS := $(addprefix shellcheck_, $(GAME_SCRIPTS)) .PHONY: $(GAME_SCRIPTS_TESTS) check: $(GAME_SCRIPTS_TESTS) $(GAME_SCRIPTS_TESTS): SHELLCHECK_SOURCES := /usr/lib/play.it:/usr/share/games/play.it:/usr/share/play.it ## This is a unicode quote. Delete and retype it (or ignore/doublequote for literal). $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC1112 ## Expressions don't expand in single quotes, use double quotes for that. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2016 ## foo appears unused. Verify it or export it. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2034 ## Don't use variables in the printf format string. Use printf '..%s..' "$foo". $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC2059 ## In POSIX sh, 'local' is undefined. $(GAME_SCRIPTS_TESTS): SHELLCHECK_EXCLUDE += --exclude=SC3043 $(GAME_SCRIPTS_TESTS): shellcheck_%: % shellcheck --extended-analysis=false --external-sources --source-path=$(SHELLCHECK_SOURCES) $(SHELLCHECK_EXCLUDE) $< README.md0000644000000000000000000002512014471751340011041 0ustar rootroot# ./play.it puzzle games collection The codebase is maintained at [https://git.dotslashplay.it/games-puzzle/] Bug reports should be sent to [bugs@dotslashplay.it], and support requests to [requests@dotslashplay.it] [https://git.dotslashplay.it/games-puzzle/]: https://git.dotslashplay.it/games-puzzle/ [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 puzzle games. These games focus on problem solving, most of the time puzzles based on logic. Games included in this collection should not require fast play, so timed puzzles and arcade-like puzzle games can not be found here. ## 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-puzzle play.it-puzzle.git cd play.it-puzzle.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-puzzle ``` 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 - A Good Snowman is Hard to Build - A Monster's Expedition - A Place Full of Cats series: - A Building Full of Cats - A Castle Full of Cats - A Tower Full of Cats - A Tiny Sticker Tale - A Virus Named Tom - A Wish Upon a Star - About Love, Hate and the Other Ones - Affinity - Antichamber - Arrow - Arrow Patterns - Baba Is You - Back to Bed - Besiege - BIT RAT: Singularity - Candle - Card City Nights - Cats Hidden in places series: - Cats Hidden in Bali - Cats Hidden in Italy - Cats Hidden in Maple Hollow - Cats Hidden in Paris - Cats Hidden in Georgia - Chants of Sennaar - Cloud Gardens - Codemancer - Contraption Maker - Cotrio - Cosmic Express - Crime O'Clock - Cube Escape - Death's Life - Donut County - Doodle God - Doors: Paradox - Down in Bermuda - Dr Livingstone, I Presume? - Dracula: Love Kills - Eets Munchies - else Heart.Break() - English Country Tune - Enigmatis series: - Enigmatis 1: The Ghosts of Maple Creek - Enigmatis 2: The Mists of Ravenwood - Enigmatis 3: The Shadow of Karkhala - Faerie Solitaire: - Faerie Solitaire Harvest - Faerie Solitaire Remastered - Filament - Fill Multicolor - Flux Caves - Fragments of Euclid - Freshly Frosted - Fugue - Garden In - Gnog - Gorogoa - Grim Legends series: - Grim Legends 1: The Forsaken Bride - Grim Legends 2: Song of the Dark Swan - Grim Legends 3: The Dark City - Helltaker - Her Story - Hidden Paws - Hidden Through Time series: - Hidden Through Time - Hidden Through Time 2: Myths & Magic - HuniePop - inbento - Infinifactory - Interrogation: You Will Be Deceived - Kerbal Space Program - Lake Ridden - Links Puzzle - Lumino City - Lumo - Luna - Lyne - Lynn, The Girl Drawn On Puzzles - Mind: Path to Thalamus - Mini Metro - Morphopolis - MouseCraft - Murder by Numbers - Murder Mystery Machine - Museum of Mechanics: Lockpicking - My Brother Rabbit - Myths Of Orion: Light From The North - Nightmares From the Deep series: - Nightmares From the Deep 1: The Cursed Heart - Nightmares From the Deep 2: The Siren's Call - Nightmares From the Deep 3: Davy Jones - Old Man's Journey - One Action Heroes - OneShot - Pan-Pan - Panmorphia - Papers, Please - Pavilion - Pixross - Plant Daddy - Please Fix the Road - Poly Bridge - Puzzle Agent series: - Puzzle Agent - Puzzle Agent 2 - Q.U.B.E. series: - Q.U.B.E. - Q.U.B.E. 2 - Quench - Quiet as a Stone - Regency Solitaire - Rime - Rusty Lake series: - Rusty Lake Hotel - Rusty Lake Paradise - Rusty Lake Roots - Save Room - Organization Puzzle - Shenzhen I/O - Sherlock Holmes and the Hound of the Baskervilles - Six Cats Under - SpaceChem - Spring Falls - Stacking - Sticky Business - Strange Horticulture - Sudocats - Superliminal - Tetrobot series: - Blocks That Matter - Tetrobot and Co. - The Adventures of Wolf and Hood - A Jigsaw Tale - The Bridge - The Cat Machine - The House of Da Vinci - The Incredible Machine series: - The Even More Incredible Machine - Return of the Incredible Machine: Contraptions - The Inheritance of Crimson Manor - The Pedestrian - The Search - The Sexy Brutale - The Sojourn - The Swapper - The Talos Principle - The Tiny Bang Story - The Witness - There is no Game: Wrong Dimension - Tidalis - Timelie - TIS-100 - Townscaper - TRI: Of Friendship and Madness - True Fear: Forsaken Souls - Under Leaves - Unmechanical - Untitled Cat Unboxing - Wayward Manor - Where Is My Heart - while True: learn() - Windosill - Zodiacats ## 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.