diff options
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r-- | gnu/packages/games.scm | 514 |
1 files changed, 256 insertions, 258 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 2c8b3c083f..e279e1eb71 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 John Darrington <jmd@gnu.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2014, 2016 David Thompson <dthompson2@worcester.edu> +;;; Copyright © 2014, 2015 David Thompson <dthompson2@worcester.edu> ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net> @@ -42,7 +42,7 @@ ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019, 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com> ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl> -;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2019, 2020, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw> ;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> @@ -52,7 +52,7 @@ ;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de> -;;; Copyright © 2020, 2021 Trevor Hass <thass@okstate.edu> +;;; Copyright © 2020 Trevor Hass <thass@okstate.edu> ;;; Copyright © 2020, 2021 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Lu hux <luhux@outlook.com> ;;; Copyright © 2020 Tomás Ortín Fernández <tomasortin@mailbox.org> @@ -62,6 +62,8 @@ ;;; Copyright © 2021 David Pflug <david@pflug.io> ;;; Copyright © 2021 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw> +;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org> +;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -129,6 +131,7 @@ #:use-module (gnu packages gnu-doc) #:use-module (gnu packages gnupg) #:use-module (gnu packages gnuzilla) + #:use-module (gnu packages golang) #:use-module (gnu packages gperf) #:use-module (gnu packages graphics) #:use-module (gnu packages gsasl) @@ -551,6 +554,47 @@ Playing bastet can be a painful experience, especially if you usually make canyons and wait for the long I-shaped block to clear four rows at a time.") (license license:gpl3+))) +(define-public tetrinet + (package + (name "tetrinet") + (version "0.11") + (source + (origin + (method url-fetch) + (uri (string-append + "http://tetrinet.or.cz/download/tetrinet-" version + ".tar.bz2")) + (sha256 + (base32 + "0b4pddqz6is1771qmvcj8qqlr4in2djdbkk13agvp9yhfah2v8x7")))) + (build-system gnu-build-system) + (inputs + `(("ncurses" ,ncurses))) + (arguments + `(#:tests? #f ;no tests + #:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure) ;no configure script + (add-after 'unpack 'fix-install-dir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin")) + (substitute* "Makefile" + (("/usr/games") (string-append out "/bin")))))) + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (for-each (lambda (file) + (install-file file doc)) + (list "README" "tetrinet.txt")))))))) + (home-page "http://tetrinet.or.cz") + (synopsis "Terminal-based multiplayer Tetris clone") + (description "Tetrinet is a multiplayer Tetris-like game with powerups and +attacks you can use on opponents.") + (license license:public-domain))) + (define-public vitetris (package (name "vitetris") @@ -835,7 +879,7 @@ high a score as possible.") (define-public cataclysm-dda (package (name "cataclysm-dda") - (version "0.F") + (version "0.F-2") (source (origin (method git-fetch) @@ -843,7 +887,7 @@ high a score as possible.") (url "https://github.com/CleverRaven/Cataclysm-DDA") (commit version))) (sha256 - (base32 "1jid8lcl04y768b3psj1ifhx96lmd6fn1j2wzxhl4ic7ra66p2z3")) + (base32 "1wzsri6rh2fm7078hw0y4x7lqjs6ak4a66d05szfiinnxyn4w1ph")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments @@ -3344,7 +3388,8 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n" "1mkh36xnnacnz9r00b5f9ld9309k32jv6mcavklbdnca8bl56bib")))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:configure-flags '("CFLAGS=-fcommon") + #:phases (modify-phases %standard-phases ;; Fixes https://issues.guix.gnu.org/47195. (add-after 'unpack 'patch-aplay-path @@ -3535,158 +3580,6 @@ enemies in different game modes such as space ball, death match, team death match, cannon keep, and grave-itation pit.") (license license:gpl3+)))) -(define-public minetest - (package - (name "minetest") - (version "5.4.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/minetest/minetest") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "062ilb7s377q3hwfhl8q06vvcw2raydz5ljzlzwy2dmyzmdcndb8")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Delete bundled libraries. - (delete-file-recursively "lib") - #t)))) - (build-system cmake-build-system) - (arguments - `(#:configure-flags - (list "-DRUN_IN_PLACE=0" - "-DENABLE_FREETYPE=1" - "-DENABLE_GETTEXT=1" - "-DENABLE_SYSTEM_JSONCPP=TRUE" - (string-append "-DIRRLICHT_INCLUDE_DIR=" - (assoc-ref %build-inputs "irrlicht") - "/include/irrlicht") - (string-append "-DCURL_INCLUDE_DIR=" - (assoc-ref %build-inputs "curl") - "/include/curl")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-sources - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/filesys.cpp" - ;; Use store-path for "rm" instead of non-existing FHS path. - (("\"/bin/rm\"") - (string-append "\"" (assoc-ref inputs "coreutils") "/bin/rm\""))) - (substitute* "src/CMakeLists.txt" - ;; Let minetest binary remain in build directory. - (("set\\(EXECUTABLE_OUTPUT_PATH .*\\)") "")) - (substitute* "src/unittest/test_servermodmanager.cpp" - ;; do no override MINETEST_SUBGAME_PATH - (("(un)?setenv\\(\"MINETEST_SUBGAME_PATH\".*\\);") - "(void)0;")) - (setenv "MINETEST_SUBGAME_PATH" - (string-append (getcwd) "/games")) ; for check - #t)) - (replace 'check - (lambda _ - ;; Thanks to our substitutions, the tests should also run - ;; when invoked on the target outside of `guix build'. - (unless ,(%current-target-system) - (setenv "HOME" "/tmp") - (invoke "src/minetest" "--run-unittests")) - #t))))) - (native-search-paths - (list (search-path-specification - (variable "MINETEST_SUBGAME_PATH") - (files '("share/minetest/games"))))) - (native-inputs - `(("pkg-config" ,pkg-config))) - (inputs - `(("coreutils" ,coreutils) - ("curl" ,curl) - ("freetype" ,freetype) - ("gettext" ,gettext-minimal) - ("gmp" ,gmp) - ("irrlicht" ,irrlicht) - ("jsoncpp" ,jsoncpp) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libogg" ,libogg) - ("libvorbis" ,libvorbis) - ("libxxf86vm" ,libxxf86vm) - ("luajit" ,luajit) - ("mesa" ,mesa) - ("ncurses" ,ncurses) - ("openal" ,openal) - ("sqlite" ,sqlite))) - (propagated-inputs - `(("minetest-data" ,minetest-data))) - (synopsis "Infinite-world block sandbox game") - (description - "Minetest is a sandbox construction game. Players can create and destroy -various types of blocks in a three-dimensional open world. This allows -forming structures in every possible creation, on multiplayer servers or as a -single player. Mods and texture packs allow players to personalize the game -in different ways.") - (home-page "https://www.minetest.net/") - (license license:lgpl2.1+))) - -(define minetest-data - (package - (name "minetest-data") - (version (package-version minetest)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/minetest/minetest_game") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0i45lbnikvgj9kxdp0yphpjjwjcgp4ibn49xkj78j5ic1s9n8jd4")))) - (build-system trivial-build-system) - (native-inputs - `(("source" ,source))) - (arguments - `(#:modules ((guix build utils)) - #:builder (begin - (use-modules (guix build utils)) - (let ((install-dir (string-append - %output - "/share/minetest/games/minetest_game"))) - (mkdir-p install-dir) - (copy-recursively - (assoc-ref %build-inputs "source") - install-dir) - #t)))) - (synopsis "Main game data for the Minetest game engine") - (description - "Game data for the Minetest infinite-world block sandbox game.") - (home-page "https://www.minetest.net/") - (license license:lgpl2.1+))) - -(define-public minetest-mineclone - (package - (name "minetest-mineclone") - (version "0.71.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://git.minetest.land/Wuzzy/MineClone2") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0qm809dqvxc7pa1cr9skmglq9vrbq5hhm4c4m5yi46ldh1v96dgf")))) - (build-system copy-build-system) - (arguments - `(#:install-plan - '(("." "share/minetest/games/mineclone")))) - (synopsis "Minecraft clone based on Minetest engine") - (description - "MineClone is a Minetest subgame, that aims to recreate Minecraft as -closely as the engine allows.") - (home-page "https://content.minetest.net/packages/Wuzzy/mineclone2/") - (license license:gpl3+))) - (define glkterm (package (name "glkterm") @@ -4348,7 +4241,7 @@ engine. When you start it you will be prompted to download a graphics set.") (define openttd-opengfx (package (name "openttd-opengfx") - (version "0.6.0") + (version "0.6.1") (source (origin (method url-fetch) @@ -4356,7 +4249,7 @@ engine. When you start it you will be prompted to download a graphics set.") version "/opengfx-" version "-source.tar.xz")) (sha256 (base32 - "0qxc6gl2gxcrn1np88dnjgbaaakkkx96b13rcmy1spryc8c09hyr")))) + "0jgy8xv7r72m127qn09vr3rxhnbakl2990f7lldsk0d5d8n993vd")))) (build-system gnu-build-system) (arguments '(#:make-flags (list "CC=gcc" @@ -4407,24 +4300,28 @@ OpenGFX provides you with... (define openttd-opensfx (package (name "openttd-opensfx") - (version "0.2.3") + (version "1.0.1") (source (origin (method url-fetch) (uri (string-append - "https://binaries.openttd.org/extra/opensfx/" - version "/opensfx-" version "-source.tar.gz")) + "https://cdn.openttd.org/opensfx-releases/" + version "/opensfx-" version "-source.tar.xz")) (sha256 (base32 - "03jxgp02ks31hmsdh4xh0xcpkb70ds8jakc9pfc1y9vdrdavh4p5")))) + "06vycppqcxbfdqlxzna5xr303zgcmpcvj6ylw5b2ws0ssph2f1s0")))) (build-system gnu-build-system) (native-inputs `(("catcodec" ,catcodec) - ("python" ,python-2))) + ("python" ,python-2) + ("tar" ,tar))) (arguments `(#:make-flags - (list (string-append "INSTALL_DIR=" %output - "/share/games/openttd/baseset/opensfx")) + (list (string-append "DIR_NAME=opensfx") + (string-append "TAR=" (assoc-ref %build-inputs "tar") + "/bin/tar")) + ;; The check phase only verifies md5sums, see openttd-opengfx. + #:tests? #f #:phases (modify-phases %standard-phases (add-after 'unpack 'make-reproducible @@ -4434,45 +4331,56 @@ OpenGFX provides you with... (substitute* "scripts/Makefile.def" (("-cf") " --mtime=@0 -cf")) #t)) - (delete 'configure)))) + (delete 'configure) + (add-before 'build 'prebuild + (lambda _ (invoke "make" "opensfx.cat"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively "opensfx" + (string-append (assoc-ref outputs "out") + "/share/games/openttd/baseset" + "/opensfx"))))))) (home-page "http://dev.openttdcoop.org/projects/opensfx") (synopsis "Base sounds for OpenTTD") (description "OpenSFX is a set of free base sounds for OpenTTD which make it possible to play OpenTTD without requiring the proprietary sound files from the original Transport Tycoon Deluxe.") - (license license:cc-sampling-plus-1.0))) + (license license:cc-by-sa3.0))) (define openttd-openmsx (package (name "openttd-openmsx") - (version "0.3.1") + (version "0.4.0") (source (origin (method url-fetch) (uri (string-append - "https://binaries.openttd.org/extra/openmsx/" - version "/openmsx-" version "-source.tar.gz")) + "https://cdn.openttd.org/openmsx-releases/" + version "/openmsx-" version "-source.tar.xz")) (sha256 (base32 - "0nskq97a6fsv1v6d62zf3yb8whzhqnlh3lap3va3nzvj7csjgf7c")))) + "0prjljsdgdxqdhhcriqskqha004ybs575xcjq80zha3pqnmrdk0k")))) (build-system gnu-build-system) (native-inputs - `(("python" ,python-2))) + `(("grfcodec" ,grfcodec) + ("python" ,python-2) + ("tar" ,tar))) (arguments `(#:make-flags - (list (string-append "INSTALL_DIR=" %output - "/share/games/openttd/baseset")) + (list (string-append "DIR_NAME=openmsx") + (string-append "TAR=" (assoc-ref %build-inputs "tar") + "/bin/tar")) + ;; The check phase only verifies md5sums, see openttd-opengfx. + #:tests? #f #:phases (modify-phases %standard-phases (delete 'configure) - (add-after 'install 'post-install - ;; Rename openmsx-version to openmsx + (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (let ((install-directory (string-append (assoc-ref outputs "out") - "/share/games/openttd/baseset"))) - (rename-file (string-append install-directory "/openmsx-" ,version) - (string-append install-directory "/openmsx")) - #t)))))) + (copy-recursively "openmsx" + (string-append (assoc-ref outputs "out") + "/share/games/openttd/baseset" + "/openmsx"))))))) (home-page "http://dev.openttdcoop.org/projects/openmsx") (synopsis "Music set for OpenTTD") (description "OpenMSX is a music set for OpenTTD which makes it possible @@ -6307,7 +6215,7 @@ small robot living in the nano world, repair its maker.") #t)))) (build-system cmake-build-system) (arguments - `(#:tests? #f ; no tests included + `(#:test-target "run_tests" #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-paths @@ -6319,9 +6227,17 @@ small robot living in the nano world, repair its maker.") (assoc-ref outputs "out") "/share/teeworlds/data" "\""))) + #t)) + (add-after 'unpack 'replace-font + (lambda* (#:key inputs #:allow-other-keys) + (delete-file "datasrc/fonts/DejaVuSans.ttf") + (symlink (string-append (assoc-ref inputs "font-dejavu") + "/share/fonts/truetype/DejaVuSans.ttf") + "datasrc/fonts/DejaVuSans.ttf") #t))))) (inputs `(("freetype" ,freetype) + ("font-dejavu" ,font-dejavu) ("glu" ,glu) ("json-parser" ,json-parser) ("mesa" ,mesa) @@ -6333,7 +6249,8 @@ small robot living in the nano world, repair its maker.") ("openssl" ,openssl) ("zlib" ,zlib))) (native-inputs - `(("python" ,python-wrapper) + `(("googletest" ,googletest) + ("python" ,python-wrapper) ("pkg-config" ,pkg-config))) (home-page "https://www.teeworlds.com") (synopsis "2D retro multiplayer shooter game") @@ -6514,14 +6431,14 @@ fish. The whole game is accompanied by quiet, comforting music.") (define-public crawl (package (name "crawl") - (version "0.26.1") + (version "0.27.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/crawl/crawl/releases/download/" version "/stone_soup-" version "-nodeps.tar.xz")) (sha256 - (base32 "1d8p2np2q5951wqphq2f4dyvv976m2lh82b0qp7w9pp1h8zzi1ff")) + (base32 "0hzkzpqmydxm1zjkdm7k4w3hldsqin3pwkj7jmfj4jijkr0zg9nq")) (patches (search-patches "crawl-upgrade-saves.patch")))) (build-system gnu-build-system) (inputs @@ -6901,7 +6818,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as (define-public tome4 (package (name "tome4") - (version "1.7.3") + (version "1.7.4") (synopsis "Single-player, RPG roguelike game set in the world of Eyal") (source (origin @@ -6909,7 +6826,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as (uri (string-append "https://te4.org/dl/t-engine/t-engine4-src-" version ".tar.bz2")) (sha256 - (base32 "1rik17r01glq3944sdb06xjf0xppgqkjk564wrh22slm4mi3fifz")) + (base32 "197jmd99l3w3sig32pvdlq9fcgdjjx7g9csy08kz174cyhrlyly3")) (modules '((guix build utils))) (snippet '(begin @@ -6918,8 +6835,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as (string-append line " || defined(__GNUC__)"))) (substitute* '("src/tgl.h") - (("#include <GL/glext.h>") "")) - #t)))) + (("#include <GL/glext.h>") "")))))) (build-system gnu-build-system) (native-inputs `(("unzip" ,unzip))) @@ -6942,8 +6858,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as (delete 'bootstrap) (replace 'configure (lambda _ - (invoke "premake4" "gmake") - #t)) + (invoke "premake4" "gmake"))) (add-after 'set-paths 'set-sdl-paths (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" @@ -7008,8 +6923,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as #:comment ,synopsis #:exec ,name #:icon icon - #:categories '("Game" "RolePlaying"))) - #t))))) + #:categories '("Game" "RolePlaying")))))))) (home-page "https://te4.org") (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based combat and advanced character building. Play as one of many unique races and @@ -7136,15 +7050,26 @@ some graphical niceities, and numerous bug-fixes and other improvements.") `(#:tests? #f #:make-flags (list "CC=gcc" - ;; link openAL instead of using dlopen at runtime - "DLOPEN_OPENAL=\"no\"" - ;; an optional directory where it will look for quake2 data files - ;; in addition to the current working directory + ;; An optional directory where it will look for quake2 data files + ;; in addition to the current working directory. "WITH_SYSTEMWIDE=yes" "WITH_SYSTEMDIR=\"/opt/quake2\"") #:phases (modify-phases %standard-phases (delete 'configure) + (add-before 'build 'patch-libraries + (lambda* (#:key inputs #:allow-other-keys) + ;; The game writes paths to openal.so and curl.so to ~/.yq2/... + ;; Workaround: hard-code the compiled paths where it loads them; + ;; this prevents loading old or garbage collected libraries. + (substitute* "src/client/sound/qal.c" + (("al_driver->string") + (string-append "\"" (assoc-ref inputs "openal") + "/lib/libopenal.so\""))) + (substitute* "src/client/curl/qcurl.c" + (("cl_libcurl->string") + (string-append "\"" (assoc-ref inputs "curl") + "/lib/libcurl.so\""))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -7264,7 +7189,7 @@ elements to achieve a simple goal in the most complex way possible.") (define-public pioneer (package (name "pioneer") - (version "20210203") + (version "20210723") (source (origin (method git-fetch) (uri (git-reference @@ -7273,7 +7198,7 @@ elements to achieve a simple goal in the most complex way possible.") (file-name (git-file-name name version)) (sha256 (base32 - "1zyi1xyghj99hz8fa6dywpscj6flp04fspnlgxbivf3rgmnxflg7")))) + "1hj99jxb9n3r0bkq87p1c24862xa1xyzjyfdyyx88ckszxb05qf3")))) (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -7336,7 +7261,7 @@ Github or Gitlab.") (define-public colobot (package (name "colobot") - (version "0.1.12-alpha") + (version "0.2.0-alpha") (source (origin (method git-fetch) @@ -7346,8 +7271,7 @@ Github or Gitlab.") (recursive? #t))) ;for "data/" subdir (file-name (git-file-name name version)) (sha256 - (base32 - "1c181cclkrnspgs07lvndg2c81cjq3smkv7qim8c470cj88rcrp2")))) + (base32 "02z21pw47j2afjsikn5b162gacwgiahdrlhmfxhq4xqlzsvz58z6")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test @@ -7553,6 +7477,8 @@ online.") (base32 "1iy8rx7kjvi1zjiw4zh77szzmd1sgpqajvbhprh1sj93fhbxcdfl")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "CFLAGS=-fcommon"))) (inputs `(("sdl2-net" ,sdl2-net) ("sdl2-mixer" , sdl2-mixer) ("sdl2" ,sdl2))) @@ -7592,7 +7518,8 @@ affect gameplay).") `(("automake" ,automake) ("autoreconf" ,autoconf)))) (arguments - `(#:phases + `(#:configure-flags '("CFLAGS=-fcommon") + #:phases (modify-phases %standard-phases (replace 'bootstrap ;; The bundled autogen.sh script unconditionally runs ./configure. @@ -8316,38 +8243,33 @@ your score gets higher, you level up and the blocks fall faster.") (define-public endless-sky (package (name "endless-sky") - (version "0.9.12") + (version "0.9.14") (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/endless-sky/endless-sky") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj")))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/endless-sky/endless-sky") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "12iganf8dxiyrjznnabsarxjsr0h717j3k4mz15p0k67wxyahhmf")))) (build-system scons-build-system) (arguments `(#:scons ,scons-python2 #:scons-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:tests? #f ; no tests #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-resource-locations + (add-after 'unpack 'fix-paths (lambda* (#:key outputs #:allow-other-keys) + ;; Look for resources in the store directory. (substitute* "source/Files.cpp" - (("/usr/local/") - (string-append (assoc-ref outputs "out") "/"))) - #t)) - (add-after 'unpack 'patch-scons - (lambda _ + (("/usr/local") (assoc-ref outputs "out"))) + ;; Install game binary into %out/bin. (substitute* "SConstruct" - ;; Keep environmental variables - (("Environment\\(\\)") - "Environment(ENV = os.environ)") - ;; Install into %out/bin - (("games\"") "bin\"")) - #t))))) + (("games\"") "bin\"")))) + (add-before 'build 'use-gcc-ar + ;; Use gcc-ar to support LTO. + (lambda _ (setenv "AR" "gcc-ar")))))) (inputs `(("glew" ,glew) ("libjpeg" ,libjpeg-turbo) @@ -8717,7 +8639,8 @@ affected by the gravity of the planets.") "1nfkhcm0l89jyw8yr65na97g4l385zhjf7whkyg47c3v5sdqq2g7")))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:configure-flags '("CFLAGS=-fcommon") + #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-install-directories (lambda* (#:key outputs #:allow-other-keys) @@ -8734,7 +8657,7 @@ affected by the gravity of the planets.") (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" (string-append - (search-input-file inputs "/include/SDL") + (search-input-directory inputs "/include/SDL") ":" (or (getenv "CPATH") "")))))))) (inputs `(("fontconfig" ,fontconfig) @@ -8979,7 +8902,7 @@ fight each other on an arena-like map.") (define-public flare-engine (package (name "flare-engine") - (version "1.11") + (version "1.12") (source (origin (method git-fetch) (uri (git-reference @@ -8988,7 +8911,7 @@ fight each other on an arena-like map.") (file-name (git-file-name name version)) (sha256 (base32 - "1mqr1s72p5bdh4kq2a8hg72dk8lwnddicjnd2cdp1sbfa9lmjym8")))) + "0h4xxj6r194pw68m3ngrnzkh6xgiblyrsc54z8abwba8m0mqbvmk")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test @@ -9007,7 +8930,7 @@ action RPGs.") (define-public flare-game (package (name "flare-game") - (version "1.11") + (version "1.12") (source (origin (method git-fetch) (uri (git-reference @@ -9016,7 +8939,7 @@ action RPGs.") (file-name (git-file-name name version)) (sha256 (base32 - "0bd5g7sd89a9176ilr408hdqzdfv4j7wj0idd685c1n6s01c3h6p")))) + "0h9i128kq6disppbrplkf13zdmsg4cq23nim53mgwpawc4mqz7ga")))) (build-system cmake-build-system) (arguments `(#:tests? #f ;no test @@ -9442,10 +9365,65 @@ and bring the war to your enemy.") license:expat license:fdl1.3+ license:public-domain license:zlib)))) +(define-public go-github-com-anaseto-gruid + (package + (name "go-github-com-anaseto-gruid") + (version "0.21.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/anaseto/gruid") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rvsavkvg2hziwdh8sjk3n5v92m5mfjb8v9m7ch22maxfwq5kv6y")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/anaseto/gruid")) + (propagated-inputs + `(("go-golang-org-x-image" ,go-golang-org-x-image))) + (home-page "https://github.com/anaseto/gruid") + (synopsis "Cross-platform grid-based UI and game framework") + (description "The gruid module provides packages for easily building +grid-based applications in Go. The library abstracts rendering and input for +different platforms. There are drivers available for terminal apps, native +graphical apps and browser apps. The original application for the library was +creating grid-based games, but it's also well suited for any grid-based +application.") + (license license:isc))) + +(define-public go-github-com-anaseto-gruid-tcell + (package + (name "go-github-com-anaseto-gruid-tcell") + (version "0.1.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/anaseto/gruid-tcell") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "09ajr9mbldjfc44qprplbf8dr8yhlbn2nfnas2z62m9wmklc0qiv")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/anaseto/gruid-tcell")) + (propagated-inputs + `(("go-github-com-gdamore-tcell-v2" ,go-github-com-gdamore-tcell-v2) + ("go-github-com-anaseto-gruid" ,go-github-com-anaseto-gruid))) + (home-page "https://github.com/anaseto/gruid-tcell") + (synopsis "Gruid driver using the tcell library") + (description "The gruid-tcell module provides a Gruid driver for building +terminal full-window applications.") + (license license:isc))) + (define-public harmonist (package (name "harmonist") - (version "0.3.0") + (version "0.4.1") (source (origin (method git-fetch) (uri (git-reference @@ -9454,12 +9432,15 @@ and bring the war to your enemy.") (file-name (git-file-name name version)) (sha256 (base32 - "146wiyanag0zqj6fhyll2sw6sydnnll8mgxhhqf9sjqsl2rx4s5r")))) + "17ai39pw9xq4asfvhs0whx07hljlivygazbwrxjrnxwrn06483hr")))) (build-system go-build-system) (arguments '(#:import-path "git.tuxfamily.org/harmonist/harmonist")) (inputs - `(("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go))) + `(("go-github-com-gdamore-tcell-v2" ,go-github-com-gdamore-tcell-v2) + ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go) + ("go-github-com-anaseto-gruid" ,go-github-com-anaseto-gruid) + ("go-github-com-anaseto-gruid-tcell" ,go-github-com-anaseto-gruid-tcell))) (home-page "https://harmonist.tuxfamily.org/") (synopsis "Stealth coffee-break roguelike game") (description "Harmonist: Dayoriah Clan Infiltration is a stealth @@ -9470,26 +9451,6 @@ the game avoids complex inventory management and character building, relying on items and player adaptability for character progression.") (license license:isc))) -(define-public harmonist-tk - (package - (inherit harmonist) - (name "harmonist-tk") - (arguments - (append - (package-arguments harmonist) - `(#:phases - (modify-phases %standard-phases - (replace 'build - (lambda _ - (invoke "go" "install" "-v" "-x" "--tags" "tk" - "git.tuxfamily.org/harmonist/harmonist"))) - (replace 'check - (lambda _ - (invoke "go" "test" "--tags" "tk" - "git.tuxfamily.org/harmonist/harmonist"))))))) - (inputs - `(("go-github.com-nsf-gothic" ,go-github.com-nsf-gothic))))) - (define-public drascula (package (name "drascula") @@ -10100,7 +10061,7 @@ remake of that series or any other game.") `(("googletest" ,googletest))) (inputs `(("boost" ,boost) - ("ocl-icd" ,ocl-icd) + ("opencl-icd-loader" ,opencl-icd-loader) ("openblas" ,openblas) ("opencl-headers" ,opencl-headers) ("qtbase" ,qtbase-5) @@ -10161,6 +10122,11 @@ can be downloaded from @url{https://zero.sjeng.org/best-network}.") (("qtchooser -run-tool=(.*) -qt=qt5" _ command) command)) #t)) + (add-after 'unpack 'fix-header + (lambda _ + (substitute* "src/bitarray.h" + (("#include <cstring>" all) + (string-append all "\n#include <stdexcept>"))))) (add-after 'unpack 'fix-paths (lambda _ (substitute* '("src/pics/Makefile.in" @@ -11980,7 +11946,7 @@ etc. You can also play games on FICS or against an engine.") ,(match (%current-system) ("x86_64-linux" "x86-64") ("i686-linux" "x86-32") - ("aarch64-linux" "general-64") + ("aarch64-linux" "armv8") ("armhf-linux" "armv7") ("mips64el-linux" "general-64") (_ "general-32")))) @@ -12498,3 +12464,35 @@ wreckage. You're stranded on a desert island and have to survive. In order to do so you need to explore the island, find food, build a shelter and try to get attention, so you get found.") (license license:cc-by4.0)))) + +(define-public fheroes2 + (package + (name "fheroes2") + (version "0.9.7") + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags '("FHEROES2_STRICT_COMPILATION=1" + "RELEASE=1"))) + (native-inputs + `(("gettext" ,gettext-minimal))) + (inputs + `(("libpng" ,libpng) + ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))) + ("zlib" ,zlib))) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ihhub/fheroes2") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0v3zh8a8yxfikcr5vkmy36c57l4nmwisz13mjavn5f7yrirf86fn")))) + (home-page "https://ihhub.github.io/fheroes2/") + (synopsis "Turn-based strategy game engine") + (description "@code{fheroes2} is an implementation of Heroes of Might and +Magic II (aka HOMM2) game engine. It requires assets and game resources to +play; it will look for them at @file{~/.local/share/fheroes2} folder.") + (license license:gpl2))) |