diff options
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r-- | gnu/packages/games.scm | 336 |
1 files changed, 247 insertions, 89 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 5f43aa154c..1082dadae6 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -32,6 +32,7 @@ ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 okapi <okapi@firemail.cc> +;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -74,6 +75,7 @@ #:use-module (gnu packages freedesktop) #:use-module (gnu packages fribidi) #:use-module (gnu packages game-development) + #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gimp) @@ -85,6 +87,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages imagemagick) + #:use-module (gnu packages less) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libedit) #:use-module (gnu packages libunwind) @@ -663,6 +666,131 @@ removed lines to all opponents. There is also a Demo mode in which you can watch your CPU playing while enjoying a cup of tea!") (license license:gpl2+))) +(define-public nethack + (package + (name "nethack") + (version "3.6.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.nethack.org/download/" + version "/" name "-361-src.tgz")) + (sha256 + (base32 "1dha0ijvxhx7c9hr0452h93x81iiqsll8bc9msdnp7xdqcfbz32b")))) + (inputs + `(("ncurses" ,ncurses) + ("bison" ,bison) + ("flex" ,flex) + ("less" ,less))) + (build-system gnu-build-system) + (arguments + '(#:make-flags + `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-paths + (lambda _ + (substitute* "sys/unix/nethack.sh" + (("^ *cd .*$") "")) + (substitute* "sys/unix/Makefile.utl" + (("^YACC *=.*$") "YACC = bison -y\n") + (("^LEX *=.*$") "LEX = flex\n") + (("^# CC = gcc") "CC = gcc")) + (substitute* "sys/unix/hints/linux" + (("/bin/gzip") (string-append + (assoc-ref %build-inputs "gzip") + "/bin/gzip")) + (("^WINTTYLIB=.*") "WINTTYLIB=-lncurses")) + (substitute* "include/config.h" + (("^.*define CHDIR.*$") "") + (("^/\\* *#*define *REPRODUCIBLE_BUILD *\\*/") + ;; Honor SOURCE_DATE_EPOCH. + "#define REPRODUCIBLE_BUILD")) + + ;; Note: 'makedefs' rejects and ignores dates that are too old + ;; or too new, so we must choose something reasonable here. + (setenv "SOURCE_DATE_EPOCH" "1531865062") + + (substitute* "sys/unix/Makefile.src" + (("^# CC = gcc") "CC = gcc")) + #t)) + (replace 'configure + (lambda _ + (let ((bash (string-append + (assoc-ref %build-inputs "bash") + "/bin/bash"))) + (with-directory-excursion "sys/unix" + (substitute* "setup.sh" (("/bin/sh") bash)) + (invoke bash "setup.sh" "hints/linux")) + #t))) + (add-after 'install 'fixup-paths + (lambda _ + (let* ((output (assoc-ref %outputs "out")) + (nethack-script (string-append output "/bin/nethack"))) + (mkdir-p (string-append output "/games/lib/nethackuserdir")) + (for-each + (lambda (file) + (rename-file + (string-append output "/games/lib/nethackdir/" file) + (string-append output "/games/lib/nethackuserdir/" + file))) + '("xlogfile" "logfile" "perm" "record" "save")) + (mkdir-p (string-append output "/bin")) + (call-with-output-file nethack-script + (lambda (port) + (format port "#!~a/bin/sh +PATH=~a:$PATH +if [ ! -d ~~/.config/nethack ]; then + mkdir -p ~~/.config/nethack + cp -r ~a/games/lib/nethackuserdir/* ~~/.config/nethack + chmod -R +w ~~/.config/nethack +fi + +RUNDIR=$(mktemp -d) + +cleanup() { + rm -rf $RUNDIR +} +trap cleanup EXIT + +cd $RUNDIR +for i in ~~/.config/nethack/*; do + ln -s $i $(basename $i) +done +for i in ~a/games/lib/nethackdir/*; do + ln -s $i $(basename $i) +done +~a/games/nethack" + (assoc-ref %build-inputs "bash") + (list->search-path-as-string + (list + (string-append + (assoc-ref %build-inputs "coreutils") "/bin") + (string-append + (assoc-ref %build-inputs "less") "/bin")) + ":") + output + output + output))) + (chmod nethack-script #o555) + #t))) + (delete 'check)))) + (home-page "https://nethack.org") + (synopsis "Classic dungeon crawl game") + (description "NetHack is a single player dungeon exploration game that runs +on a wide variety of computer systems, with a variety of graphical and text +interfaces all using the same game engine. Unlike many other Dungeons & +Dragons-inspired games, the emphasis in NetHack is on discovering the detail of +the dungeon and not simply killing everything in sight - in fact, killing +everything in sight is a good way to die quickly. Each game presents a +different landscape - the random number generator provides an essentially +unlimited number of variations of the dungeon and its denizens to be discovered +by the player in one of a number of characters: you can pick your race, your +role, and your gender.") + (license + (license:fsdg-compatible + "https://nethack.org/common/license.html")))) + (define-public prboom-plus (package (name "prboom-plus") @@ -953,15 +1081,16 @@ that beneath its ruins lay buried an ancient evil.") (define-public angband (package (name "angband") - (version "4.0.5") + (version "4.1.2") (source (origin (method url-fetch) - (uri (string-append "http://rephial.org/downloads/4.0/" - "angband-" version ".tar.gz")) + (uri (string-append "http://rephial.org/downloads/" + (version-major+minor version) + "/angband-" version ".tar.gz")) (sha256 (base32 - "0lpq2kms7hp421vrasx2bkkn9w08kr581ldwik3v0hlq6h7rlxhd")) + "0ahfzb66ihxvkxcbhcib816x40sdsp26b3ravr1xqp44w1whkg1h")) (modules '((guix build utils))) (snippet ;; So, some of the sounds/graphics/tilesets are under different @@ -985,11 +1114,11 @@ that beneath its ruins lay buried an ancient evil.") #:configure-flags (list (string-append "--bindir=" %output "/bin")) #:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen.sh + (replace 'bootstrap (lambda _ (substitute* "acinclude.m4" (("ncursesw5-config") "ncursesw6-config")) - (zero? (system* "sh" "autogen.sh"))))))) + (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) @@ -1171,7 +1300,28 @@ To that extent, it also includes a front-end for managing all of your D-Mods.") "This package contains the game data of GNU Freedink.") (license license:gpl3+))) -;; TODO: Add freedink-dfarc when there's a wxWidgets package. +(define-public freedink-dfarc + (package + (name "freedink-dfarc") + (version "3.14") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/freedink/dfarc-" + version ".tar.gz")) + (sha256 + (base32 + "1yp8n3w426xnlp10xk06vfi2y3k9xrcfyck7s7qs1v0ys7n284d5")))) + (build-system gnu-build-system) + (native-inputs + `(("intltool" ,intltool))) + (inputs + `(("bzip2" ,bzip2) + ("wxwidgets" ,wxwidgets))) + (home-page "https://www.gnu.org/software/freedink/") + (synopsis "Front-end for managing and playing Dink Modules") + (description "DFArc makes it easy to play and manage the GNU FreeDink game +and its numerous D-Mods.") + (license license:gpl3+))) (define-public freedink ;; This is a wrapper that tells the engine where to find the data. @@ -1425,7 +1575,7 @@ match, cannon keep, and grave-itation pit.") (define minetest-data (package (name "minetest-data") - (version "0.4.16") + (version "0.4.17") (source (origin (method url-fetch) (uri (string-append @@ -1434,7 +1584,7 @@ match, cannon keep, and grave-itation pit.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0nibpm600rbv9dg1zgcsl5grlbqx0b5l6cg1lp6sqkwvjialb4ga")))) + "0pa9skjwbq27aky6dgr7g3mb0a7c5rpa6xmz2qh0nm618z5hgazh")))) (build-system trivial-build-system) (native-inputs `(("source" ,source) @@ -1467,7 +1617,7 @@ match, cannon keep, and grave-itation pit.") (define-public minetest (package (name "minetest") - (version "0.4.16") + (version "0.4.17") (source (origin (method url-fetch) (uri (string-append @@ -1476,7 +1626,7 @@ match, cannon keep, and grave-itation pit.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0mbnf1ma4gsw9ah68ply04059xkfx5psdxwalxp78sgmx4ypkwqf")))) + "0wpbad5bssbbgspgdcq3hhq4bhckrj53nhymsz34d8g01j0csr46")))) (build-system cmake-build-system) (arguments '(#:configure-flags @@ -1807,7 +1957,7 @@ falling, themeable graphics and sounds, and replays.") (define-public wesnoth (package (name "wesnoth") - (version "1.14.3") + (version "1.14.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-" @@ -1816,7 +1966,7 @@ falling, themeable graphics and sounds, and replays.") name "-" version ".tar.bz2")) (sha256 (base32 - "06648041nr77sgzr7jpmcn37cma3hp41qynp50xzddx28l17zwg9")))) + "1hw1ap8xxpdwyx1sf8fm1g75p6724y3hwb4kpvyqbsq7bwfwsb9i")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; no check target @@ -2299,7 +2449,7 @@ Transport Tycoon Deluxe.") (define-public openrct2 (package (name "openrct2") - (version "0.1.1") + (version "0.2.0") (source (origin (method url-fetch) @@ -2307,11 +2457,12 @@ Transport Tycoon Deluxe.") version ".tar.gz")) (sha256 (base32 - "1bahkzlf9k92cc4zs4nk4wy59323kiw8d3wm0vjps3kp7iznqyjx")) + "1yrbjra27n2xxb1x47v962lc3qi8gwm5ws4f97952nvn533zrwxz")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (arguments - `(#:configure-flags '("-DDOWNLOAD_TITLE_SEQUENCES=OFF") + `(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF" + "-DDOWNLOAD_TITLE_SEQUENCES=OFF") #:tests? #f ; Tests require network. #:phases (modify-phases %standard-phases @@ -2320,14 +2471,23 @@ Transport Tycoon Deluxe.") (let ((titles (assoc-ref inputs "openrct2-title-sequences")) (objects (assoc-ref inputs "openrct2-objects"))) ;; Fix some references to /usr/share. - ;; Change to Platform.Linux.cpp on 0.1.2+ - (substitute* "src/openrct2/platform/linux.c" + (substitute* "src/openrct2/platform/Platform.Linux.cpp" (("/usr/share") (string-append (assoc-ref %outputs "out") "/share"))) (copy-recursively (string-append titles "/share/openrct2/title-sequences") "data/title") (copy-recursively (string-append objects - "/share/openrct2/objects") "data/object"))))))) + "/share/openrct2/objects") "data/object")))) + (add-before 'configure 'fixgcc7 + (lambda _ + (unsetenv "C_INCLUDE_PATH") + (unsetenv "CPLUS_INCLUDE_PATH") + #t)) + (add-after 'fixgcc7 'get-rid-of-errors + (lambda _ + ;; Don't treat warnings as errors. + (substitute* "CMakeLists.txt" + (("-Werror") ""))))))) (inputs `(("curl" ,curl) ("fontconfig" ,fontconfig) ("freetype" ,freetype) @@ -2343,7 +2503,8 @@ Transport Tycoon Deluxe.") ("speexdsp" ,speexdsp) ("zlib" ,zlib))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("gcc" ,gcc-7) + ("pkg-config" ,pkg-config))) (home-page "https://github.com/OpenRCT2/OpenRCT2") (synopsis "Free software re-implementation of RollerCoaster Tycoon 2") (description "OpenRCT2 is a free software re-implementation of @@ -3198,16 +3359,17 @@ programmers may also add their own favorite language.") (define-public bambam (package (name "bambam") - (version "0.5") + (version "0.6") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/porridge/bambam/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/porridge/bambam") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "10w110mjdwbvddzihh9rganvvjr5jfiz8cs9n7w12zndwwcc3ria")))) + "08hcd0gzia3pz7fzk4pqc5kbq1074j4q0jcmbpgvr7n623nj2xa5")))) (build-system python-build-system) (arguments `(#:python ,python-2 @@ -3310,7 +3472,7 @@ throwing people around in pseudo-randomly generated buildings.") (define-public hyperrogue (package (name "hyperrogue") - (version "10.0g") + (version "10.4j") ;; When updating this package, be sure to update the "hyperrogue-data" ;; origin in native-inputs. (source (origin @@ -3321,7 +3483,7 @@ throwing people around in pseudo-randomly generated buildings.") "-src.tgz")) (sha256 (base32 - "0f68pcnsgl406dhm91ckn3f364bar9m9i5njp9vrmvhvv9p2icy0")))) + "0909p4xvbi1c2jc5rdgrf8b1c60fmsaapabsi6yyglh5znkf0k27")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -3333,7 +3495,6 @@ throwing people around in pseudo-randomly generated buildings.") (setenv "CPATH" (string-append (assoc-ref inputs "sdl-union") "/include/SDL")))) - ;; Fix font and music paths. (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3343,17 +3504,18 @@ throwing people around in pseudo-randomly generated buildings.") "/share/fonts/truetype")) (dejavu-font "DejaVuSans-Bold.ttf") (music-file "hyperrogue-music.txt")) + ;; Fix font and music paths. (substitute* "basegraph.cpp" ((dejavu-font) (string-append dejavu-dir "/" dejavu-font))) - (substitute* "sound.cpp" - (((string-append "\\./" music-file)) - (string-append share-dir "/" music-file)) - (("sounds/") - (string-append share-dir "/sounds/"))) (substitute* music-file (("\\*/") (string-append share-dir "/sounds/")))) + ;; Fix Makefile. + (substitute* "Makefile" + (("g\\+\\+ langen.cpp") + "g++ langen.cpp ${CXXFLAGS}") + (("savepng.c") "savepng.cpp")) #t)) (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) @@ -3370,21 +3532,18 @@ throwing people around in pseudo-randomly generated buildings.") (out (assoc-ref outputs "out")) (sounds (string-append out "/share/hyperrogue/sounds")) (unzip (string-append (assoc-ref inputs "unzip") "/bin/unzip"))) - (and - ;; Extract media license information into sounds directory. - (zero? - (system* unzip "-j" data - (string-append - "hyperrogue" - (string-join (string-split ,version #\.) "") - "/sounds/credits.txt") "-d" sounds)) - ;; Extract sounds and music into sounds directory. - (zero? - (system* "unzip" "-j" data - (string-append - "hyperrogue" - (string-join (string-split ,version #\.) "") - "/*.ogg") "-d" sounds))))))))) + ;; Extract media license information into sounds directory. + (invoke unzip "-j" data + (string-append + "hyperrogue" + (string-join (string-split ,version #\.) "") + "/sounds/credits.txt") "-d" sounds) + ;; Extract sounds and music into sounds directory. + (invoke "unzip" "-j" data + (string-append + "hyperrogue" + (string-join (string-split ,version #\.) "") + "/*.ogg") "-d" sounds))))))) (native-inputs `(("hyperrogue-data" ,(origin @@ -3396,7 +3555,7 @@ throwing people around in pseudo-randomly generated buildings.") "-win.zip")) (sha256 (base32 - "0bnp077qvlmxjlz1jjd6kpghlv9flxc19ac1xq3m3wyq1w9p3pab")))) + "0w61iv2rn93hi0q3hxyyyf9xcr8vi9zd7fjvpz5adpgf94jm3zsc")))) ("unzip" ,unzip))) (inputs `(("font-dejavu" ,font-dejavu) @@ -3666,46 +3825,43 @@ emerges from a sewer hole and pulls her below ground.") license:cc-by-sa3.0))))) (define-public cdogs-sdl - ;; XXX: Use version 0.6.7 when it's available. - (let ((commit "bab2031369b9ea2dbeb7eedbde10a43dd8ca83db") - (revision "1")) - (package - (name "cdogs-sdl") - (version (git-version "0.6.6" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cxong/cdogs-sdl.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "09sfqhrrffhvxbhigvrxfmai52w01w3f9kjmixjhqvqlkhn77c9n")))) - (build-system cmake-build-system) - (arguments - `(#:configure-flags - (list (string-append "-DCDOGS_DATA_DIR=" - (assoc-ref %outputs "out") - "/share/cdogs-sdl/")))) - (inputs - `(("mesa" ,mesa) - ("sdl2" ,sdl2) - ("sdl2-image" ,sdl2-image) - ("sdl2-mixer" ,sdl2-mixer))) - (home-page "https://cxong.github.io/cdogs-sdl/") - (synopsis "Classic overhead run-and-gun game") - (description "C-Dogs SDL is a classic overhead run-and-gun game, + (package + (name "cdogs-sdl") + (version "0.6.7") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cxong/cdogs-sdl.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1frafzsj3f83xkmn4llr7g728c82lcqi424ini1hv3gv5zjgpa15")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list (string-append "-DCDOGS_DATA_DIR=" + (assoc-ref %outputs "out") + "/share/cdogs-sdl/")))) + (inputs + `(("mesa" ,mesa) + ("sdl2" ,sdl2) + ("sdl2-image" ,sdl2-image) + ("sdl2-mixer" ,sdl2-mixer))) + (home-page "https://cxong.github.io/cdogs-sdl/") + (synopsis "Classic overhead run-and-gun game") + (description "C-Dogs SDL is a classic overhead run-and-gun game, supporting up to 4 players in co-op and deathmatch modes. Customize your player, choose from many weapons, and blast, slide and slash your way through over 100 user-created campaigns.") - ;; GPLv2+ for code (includes files under BSD-2 and BSD-3), - ;; CC0/CC-BY/CC-BY-SA for assets. - (license (list license:gpl2+ - license:bsd-2 - license:bsd-3 - license:cc0 - license:cc-by3.0 - license:cc-by-sa3.0))))) + ;; GPLv2+ for code (includes files under BSD-2 and BSD-3), + ;; CC0/CC-BY/CC-BY-SA for assets. + (license (list license:gpl2+ + license:bsd-2 + license:bsd-3 + license:cc0 + license:cc-by3.0 + license:cc-by-sa3.0)))) (define-public kiki (package @@ -3883,7 +4039,8 @@ settings.link.libs:Add(\"wavpack\")\n")) ("zlib" ,zlib))) (native-inputs `(("bam" ,bam) - ("python" ,python-2))) + ("python" ,python-2) + ("pkg-config" ,pkg-config))) (home-page "https://www.teeworlds.com") (synopsis "2D retro multiplayer shooter game") (description "Teeworlds is an online multiplayer game. Battle with up to @@ -4613,7 +4770,8 @@ some graphical niceities, and numerous bug-fixes and other improvements.") #t)))) ,@(strip-keyword-arguments '(#:make-flags #:phases) (package-arguments quakespasm)))) - (inputs `(("vulkan-loader" ,vulkan-loader) + (inputs `(("vulkan-headers" ,vulkan-headers) + ("vulkan-loader" ,vulkan-loader) ,@(package-inputs quakespasm))) (description "vkquake is a modern engine for id software's Quake 1. It includes support for 64 bit CPUs, custom music playback, a new sound driver, |