summary refs log tree commit diff
path: root/gnu/packages/games.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/games.scm')
-rw-r--r--gnu/packages/games.scm512
1 files changed, 299 insertions, 213 deletions
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 6258d65f97..591a3d3f38 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -30,7 +30,7 @@
 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2017-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2018 okapi <okapi@firemail.cc>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2018 Madalin Ionel-Patrascu <madalinionel.patrascu@mdc-berlin.de>
@@ -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, 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
 ;;; Copyright © 2019 Josh Holland <josh@inv.alid.pw>
 ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
@@ -61,12 +61,13 @@
 ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2021 Greg Hogan <code@greghogan.com>
 ;;; Copyright © 2021 David Pflug <david@pflug.io>
-;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2021, 2022 Felix Gruber <felgru@posteo.net>
 ;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
 ;;; Copyright © 2021 Noisytoot <noisytoot@disroot.org>
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2021 Christopher Baines <mail@cbaines.net>
+;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -151,6 +152,7 @@
   #:use-module (gnu packages kde)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages less)
+  #:use-module (gnu packages lesstif)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libidn)
@@ -194,6 +196,7 @@
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages unicode)
   #:use-module (gnu packages upnp)
   #:use-module (gnu packages video)
   #:use-module (gnu packages vulkan)
@@ -1360,6 +1363,7 @@ effects and music to make a completely free game.")
      `(#:configure-flags
        (list
         (string-append "CFLAGS="
+                       "-fcommon "      ; XXX needed to build with GCC 10
                        "-I" (assoc-ref %build-inputs "sdl-gfx") "/include/SDL "
                        "-I" (assoc-ref %build-inputs "sdl-image") "/include/SDL "
                        "-I" (assoc-ref %build-inputs "sdl-mixer") "/include/SDL")
@@ -1754,7 +1758,6 @@ destroying an ancient book using a special wand.")
     (build-system meson-build-system)
     (arguments
      `(#:glib-or-gtk? #t
-       #:meson ,meson-0.59
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'skip-gtk-update-icon-cache
@@ -2342,7 +2345,7 @@ exec -a \"~a\" ~a \"$@\"\n"
     (inputs
      (list python-pygame python-tmx))
     (home-page "https://rogueboxadventures.tuxfamily.org")
-    (synopsis "A classical roguelike/sandbox game")
+    (synopsis "Classical roguelike/sandbox game")
     (description
      "RogueBox Adventures is a graphical roguelike with strong influences
 from sandbox games like Minecraft or Terraria.  The main idea of RogueBox
@@ -3724,54 +3727,49 @@ Widgets, and allows users to create more.")
               (uri (string-append "https://codeload.github.com/fifengine/"
                                   "fifengine/tar.gz/" version))
               (file-name (string-append name "-" version ".tar.gz"))
-              (patches (search-patches "fifengine-swig-compat.patch"))
+              (patches (search-patches "fifengine-swig-compat.patch"
+                                       "fifengine-boost-compat.patch"))
               (sha256
                (base32
                 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f            ; TODO The test running fails to run some tests.
-       #:imported-modules ,(cons '(guix build python-build-system)
-                                 %cmake-build-system-modules)
-       #:modules ((guix build cmake-build-system)
-                  ((guix build python-build-system) #:select (guix-pythonpath))
-                  (guix build utils)
-                  (srfi srfi-1))
-       #:configure-flags
-       (list
-        (string-append "-DOPENALSOFT_INCLUDE_DIR="
-                       (assoc-ref %build-inputs "openal")
-                       "/include/AL")
-        (string-append "-DPYTHON_SITE_PACKAGES="
-                       (assoc-ref %outputs "out")
-                       "/lib/python"
-                       ,(version-major+minor (package-version python))
-                       "/site-packages"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-run_tests.py
-           (lambda _
-             ;; Patch the test runner to exit with a status of 1 if any test
-             ;; fails, to allow detecting failures.
-             (substitute* "run_tests.py"
-               (("ERROR\\. One or more tests failed!'\\)")
-                "ERROR. One or more tests failed!')
-\t\texit(1)"))
-             #t))
-         ;; Run tests after installation so that we can make use of the built
-         ;; python modules.
-         (delete 'check)
-         (add-after 'install 'check
-           (lambda* (#:key inputs outputs tests? #:allow-other-keys)
-             (when tests?
-               (add-installed-pythonpath inputs outputs)
-               ;; The tests require an X server.
-               (system "Xvfb :1 &")
-               (setenv "DISPLAY" ":1")
-               (setenv "XDG_RUNTIME_DIR" "/tmp")
-               ;; Run tests
-               (chdir ,(string-append "../" name "-" version))
-               (invoke "python3" "run_tests.py" "-a")))))))
+     (list #:tests? #f         ;TODO The test running fails to run some tests.
+           #:configure-flags
+           #~(list
+              (string-append "-DOPENALSOFT_INCLUDE_DIR="
+                             (search-input-directory %build-inputs "include/AL"))
+              (string-append "-DPYTHON_SITE_PACKAGES="
+                             #$output "/lib/python"
+                             #$(version-major+minor
+                                (package-version (this-package-input "python")))
+                             "/site-packages"))
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'patch-run_tests.py
+                 (lambda _
+                   ;; Patch the test runner to exit with a status of 1 if any test
+                   ;; fails, to allow detecting failures.
+                   (substitute* "run_tests.py"
+                     (("ERROR\\. One or more tests failed!'\\)")
+                      "ERROR. One or more tests failed!')
+\t\texit(1)"))))
+               ;; Run tests after installation so that we can make use of the built
+               ;; python modules.
+               (delete 'check)
+               (add-after 'install 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     ;; The tests require an X server.
+                     (system "Xvfb :1 &")
+                     (setenv "DISPLAY" ":1")
+                     (setenv "XDG_RUNTIME_DIR" "/tmp")
+                     ;; Run tests
+                     (chdir #$(string-append "../" (package-name this-package)
+                                             "-" (package-version this-package)))
+                     (invoke "python3" "run_tests.py" "-a")))))))
+    (native-inputs
+     (list python swig xorg-server-for-tests))
     (inputs
      (list sdl2
            sdl2-image
@@ -3785,10 +3783,6 @@ Widgets, and allows users to create more.")
            fifechan
            swig
            python))
-    (native-inputs
-     `(("python" ,python)
-       ("swig" ,swig)
-       ("xvfb" ,xorg-server)))
     (propagated-inputs
      (list python-future))
     (home-page "https://www.fifengine.net/")
@@ -5141,7 +5135,8 @@ tactics.")
        (patches
         ;; Use system Minizip.  Patch is provided by Debian, and discussed
         ;; upstream at <https://github.com/widelands/widelands/issues/399>.
-        (search-patches "widelands-system-wide_minizip.patch"))))
+        (search-patches "widelands-system-wide_minizip.patch"
+                        "widelands-add-missing-map-include.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -5447,7 +5442,7 @@ with the \"Stamp\" tool within Tux Paint.")
 (define-public supertux
   (package
    (name "supertux")
-   (version "0.6.2")
+   (version "0.6.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://github.com/SuperTux/supertux/"
@@ -5456,7 +5451,7 @@ with the \"Stamp\" tool within Tux Paint.")
             (file-name (string-append name "-" version ".tar.gz"))
             (sha256
              (base32
-              "167m3z4m8n76dvbv42m1fnvabpbpsxvr28zk9641916jl9pfba96"))
+              "1xkr3ka2sxp5s0spp84iv294i29s1vxqzazb6kmjc0n415h0x57p"))
             (patches
              (search-patches "supertux-unbundle-squirrel.patch"))))
    (arguments
@@ -5476,18 +5471,19 @@ with the \"Stamp\" tool within Tux Paint.")
                  (string-append "${SQUIRREL_PREFIX}/include/squirrel"))))
             #t)))))
    (build-system cmake-build-system)
-   (inputs (list sdl2
-                 sdl2-image
-                 sdl2-mixer
-                 openal
-                 mesa
+   (inputs (list boost
+                 curl
+                 freetype
                  glew
-                 libvorbis
+                 glm
                  libogg
+                 libvorbis
+                 mesa
+                 openal
                  physfs
-                 curl
-                 boost
-                 freetype
+                 sdl2
+                 sdl2-image
+                 sdl2-mixer
                  squirrel))
    (native-inputs
     (list pkg-config))
@@ -5500,7 +5496,7 @@ a style similar to the original Super Mario games.")
 (define-public tintin++
   (package
     (name "tintin++")
-    (version "2.02.11")
+    (version "2.02.12")
     (source
      (origin
        (method url-fetch)
@@ -5508,7 +5504,7 @@ a style similar to the original Super Mario games.")
                            (string-drop-right version 1)
                            "/tintin-" version ".tar.gz"))
        (sha256
-        (base32 "1xdim1ckq1kgjyxmghcnvnahq1llv2y70gz3yyvzbli63vpqk4mk"))))
+        (base32 "000sg16w7790ha8ys31qjh1ip5hl02ldfwj1zy6dqz0y5i7zvydn"))))
     (inputs
      (list gnutls pcre readline zlib))
     (arguments
@@ -5968,8 +5964,8 @@ Magic, Egypt, Indians, Norsemen, Persian or Romans.")
     (license license:gpl2+)))
 
 (define-public freegish
-  (let ((commit "8795cd7adc95957883f2d3465eb9036a774667a7")
-        (revision "1"))
+  (let ((commit "21977ee5fc2008231b35160df00efe954c508b16")
+        (revision "2"))
     (package
       (name "freegish")
       (version (string-append "0-" revision "." (string-take commit 9)))
@@ -5981,7 +5977,7 @@ Magic, Egypt, Indians, Norsemen, Persian or Romans.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "1p1zf5qqagmcpi1db2bs02cnalpy3qiymp6yzan7k1bhmv859gsx"))
+                  "1qh0gcnbyxyzmb13jifwba4xrzj94m4w9whdvl0gnds6ricmwply"))
                 (modules '((guix build utils)))
                 ;; The audio files in the "music" directory are licensed under
                 ;; CC-BY-NC, so we delete them.
@@ -6622,12 +6618,12 @@ fight against their plot and save his fellow rabbits from slavery.")
            wxwidgets
            zlib))
     (native-inputs
-     `(("boost" ,boost)
-       ("cmake" ,cmake-minimal)
-       ("cxxtest" ,cxxtest)
-       ("mesa" ,mesa)
-       ("pkg-config" ,pkg-config)
-       ("python-2" ,python-2)))
+     (list boost
+           cmake-minimal
+           cxxtest
+           mesa
+           pkg-config
+           python-2))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags '("config=release" "verbose=1" "-C" "build/workspaces/gcc")
@@ -6643,6 +6639,18 @@ fight against their plot and save his fellow rabbits from slavery.")
                 (string-append "\"" (assoc-ref inputs "cxxtest")
                                "/bin/cxxtestgen"
                                "\"")))))
+         (add-after 'unpack 'fix-mozjs-compatibility
+           ;; 0ad only builds fine with a specific version of mozjs
+           ;; (version 78.6 for 0ad-0.0.25).
+           ;; Here we change the error in case of version mismatch to a warning,
+           ;; and add some minor compatibility fixes.
+           (lambda _
+             (substitute* "source/scriptinterface/ScriptTypes.h"
+               (("#error Your compiler is trying to use")
+                "#warning Your compiler is trying to use"))
+             (substitute* "source/scriptinterface/ScriptContext.cpp"
+               (("JS::PrepareZoneForGC\\(")
+                "JS::PrepareZoneForGC(m_cx, "))))
          (replace 'configure
            (lambda* (#:key inputs outputs tests? #:allow-other-keys)
              (let* ((jobs (number->string (parallel-job-count)))
@@ -7161,17 +7169,17 @@ elements to achieve a simple goal in the most complex way possible.")
     (native-inputs
      (list pkg-config))
     (inputs
-     `(("assimp" ,assimp)
-       ("curl" ,curl)
-       ("freetype" ,freetype)
-       ("glew" ,glew)
-       ("glu" ,glu)
-       ("libpng" ,libpng)
-       ("libsigc++" ,libsigc++)
-       ("libvorbis" ,libvorbis)
-       ("lua" ,lua-5.2)                 ;not compatible with 5.3
-       ("mesa" ,mesa)
-       ("sdl" ,(sdl-union (list sdl2 sdl2-image)))))
+     (list assimp
+           curl
+           freetype
+           glew
+           glu
+           libpng
+           libsigc++-2
+           libvorbis
+           lua-5.2                      ;not compatible with 5.3
+           mesa
+           (sdl-union (list sdl2 sdl2-image))))
     (arguments
      `(#:tests? #f                      ;tests are broken
        #:configure-flags (list "-DUSE_SYSTEM_LIBLUA:BOOL=YES"
@@ -7492,16 +7500,17 @@ original.")
 (define shlomif-cmake-modules
   (origin
     (method url-fetch)
-    (uri (string-append "https://bitbucket.org/shlomif/shlomif-cmake-modules/"
-                        "raw/c505713d7a7cda608f97f01577e5868a711b883e/"
-                        "shlomif-cmake-modules/Shlomif_Common.cmake"))
+    (uri (string-append
+          "https://raw.githubusercontent.com/shlomif/shlomif-cmake-modules/"
+          "89f05caf86078f783873975525230cf4fecede8a"
+          "/shlomif-cmake-modules/Shlomif_Common.cmake"))
     (sha256
-     (base32 "0kx9s1qqhhzprp1w3b67xmsns0n0v506bg5hgrshxaxpy6lqiwb2"))))
+     (base32 "05xdikw5ln0yh8p5chsmd8qnndmxg5b5vjlfpdqrjcb1ncqzywkc"))))
 
 (define-public rinutils
   (package
     (name "rinutils")
-    (version "0.2.0")
+    (version "0.10.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -7510,17 +7519,37 @@ original.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fpxyg86ggv0h7j8aarjjxrvwlj7jycd3bw066c0dwkq2fszxsf2"))))
-    (native-inputs
-     `(("perl" ,perl)
-       ;; The following is only needed for tests.
-       ("perl-file-find-object" ,perl-file-find-object)
-       ("perl-test-differences" ,perl-test-differences)
-       ("perl-class-xsaccessor" ,perl-class-xsaccessor)
-       ("perl-io-all" ,perl-io-all)
-       ("perl-test-runvalgrind" ,perl-test-runvalgrind)
-       ("cmake-rules" ,shlomif-cmake-modules)
-       ("pkg-config" ,pkg-config)))
+                "05h9sq3w900mx8xij7qgqgqcbdk1x5gvbpz7prw2pfbzrrbiq2ns"))))
+    (build-system cmake-build-system)
+    (arguments
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'copy-cmake-modules
+                 (lambda _
+                   (copy-file #$shlomif-cmake-modules
+                              (string-append "cmake/"
+                                             (strip-store-file-name
+                                              #$shlomif-cmake-modules)))))
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (with-directory-excursion "../source"
+                       (setenv "FCS_TEST_BUILD" "1")
+                       (setenv "RINUTILS_TEST_BUILD" "1")
+                       ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
+                       ;; which requires tidy-all.
+                       ;; (setenv "RINUTILS_TEST_TIDY" "1")
+                       (invoke "perl"
+                               "CI-testing/continuous-integration-testing.pl"))))))))
+    (native-inputs
+     (list perl
+           ;; The following are needed only for tests.
+           perl-class-xsaccessor
+           perl-file-find-object
+           perl-io-all
+           perl-test-differences
+           perl-test-runvalgrind
+           pkg-config))
     (inputs
      (list cmocka
            perl-env-path
@@ -7532,27 +7561,6 @@ original.")
            perl-text-glob
            perl-number-compare
            perl-moo))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-build-env
-           (lambda* (#:key inputs #:allow-other-keys)
-             (use-modules (guix build utils))
-             (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
-               (copy-file cmake-rules
-                          (string-append "cmake/"
-                                         (strip-store-file-name cmake-rules)))
-               #t)))
-         (replace 'check
-           (lambda _
-             (with-directory-excursion "../source"
-               (setenv "FCS_TEST_BUILD" "1")
-               (setenv "RINUTILS_TEST_BUILD" "1")
-               ;; TODO: Run tests after setting RINUTILS_TEST_TIDY to `1',
-               ;; which requires tidy-all.
-               ;; (setenv "RINUTILS_TEST_TIDY" "1")
-               (invoke "perl" "CI-testing/continuous-integration-testing.pl")))))))
-    (build-system cmake-build-system)
     (home-page "https://www.shlomifish.org/open-source/projects/")
     (synopsis "C11 / gnu11 utilities C library")
     (description "This package provides C11 / gnu11 utilities C library")
@@ -7561,7 +7569,7 @@ original.")
 (define-public fortune-mod
   (package
     (name "fortune-mod")
-    (version "2.28.0")
+    (version "3.12.0")
     (source
      (origin
        (method git-fetch)
@@ -7570,47 +7578,58 @@ original.")
              (commit (string-append "fortune-mod-" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1ppzgnffgdcmq6fq4gmdq2ig10ip2bnfgklkb3i8nc6bdxm7pb89"))))
+        (base32 "1iq3bxrw8758jqvfqaasd7w1zm0g28g9n25qccnzvr98997h6r2n"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:test-target "check"
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-build-env
-           (lambda* (#:key inputs #:allow-other-keys)
-             (use-modules (guix build utils))
-             (let* ((cmake-rules (assoc-ref inputs "cmake-rules")))
-               (copy-file cmake-rules
-                          (string-append "fortune-mod/cmake/"
-                                         (strip-store-file-name cmake-rules)))
-               (chdir "fortune-mod")
-               ;; TODO: Valgrind tests fail for some reason.
-               ;; Similar issue: https://github.com/shlomif/fortune-mod/issues/21 (?)
-               (delete-file "tests/t/valgrind.t")
-               #t)))
-         (add-after 'install 'fix-install-directory
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Move binary from "games/" to "bin/" and remove the latter.  This
-             ;; is easier than patching CMakeLists.txt since the tests hard-code
-             ;; the location as well.
-             (let* ((out   (assoc-ref outputs "out"))
-                    (bin   (string-append out "/bin"))
-                    (games (string-append out "/games")))
-               (rename-file (string-append games "/fortune")
-                            (string-append bin "/fortune"))
-               (rmdir games)
-               #t))))))
+     (list #:test-target "check"
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'enter-build-directory
+                 (lambda _
+                   (chdir "fortune-mod")))
+               (add-after 'enter-build-directory 'symlink-rinutils
+                 (lambda _
+                   (mkdir-p "rinutils")
+                   (symlink #$(this-package-native-input "rinutils")
+                            "rinutils/rinutils")))
+               (add-after 'enter-build-directory 'copy-cmake-modules
+                 (lambda _
+                   (copy-file #$shlomif-cmake-modules
+                              (string-append "cmake/"
+                                             (strip-store-file-name
+                                              #$shlomif-cmake-modules)))))
+               (add-after 'enter-build-directory 'delete-failing-test
+                 (lambda _
+                   ;; TODO: Valgrind tests fail for some reason.  Similar issue?
+                   ;; https://github.com/shlomif/fortune-mod/issues/21
+                   (delete-file "tests/data/valgrind.t")
+                   (with-output-to-file "tests/scripts/split-valgrind.pl"
+                     (const #t))))
+               (add-after 'install 'fix-install-directory
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   ;; Move binary from "games/" to "bin/" and remove the
+                   ;; latter.  This is easier than patching CMakeLists.txt
+                   ;; since the tests hard-code the location as well.
+                   (let* ((out   (assoc-ref outputs "out"))
+                          (bin   (string-append out "/bin"))
+                          (games (string-append out "/games")))
+                     (rename-file (string-append games "/fortune")
+                                  (string-append bin "/fortune"))
+                     (rmdir games)))))))
     (inputs (list recode))
     (native-inputs
-     `(("perl" ,perl)
-       ;; The following is only needed for tests.
-       ("perl-file-find-object" ,perl-file-find-object)
-       ("perl-test-differences" ,perl-test-differences)
-       ("perl-class-xsaccessor" ,perl-class-xsaccessor)
-       ("perl-io-all" ,perl-io-all)
-       ("perl-test-runvalgrind" ,perl-test-runvalgrind)
-       ("cmake-rules" ,shlomif-cmake-modules)
-       ("rinutils" ,rinutils)))
+     (list perl
+           ;; For generating the documentation.
+           docbook-xml-5
+           docbook-xsl
+           perl-app-xml-docbook-builder
+           ;; The following are only needed for tests.
+           perl-file-find-object
+           perl-test-differences
+           perl-class-xsaccessor
+           perl-io-all
+           perl-test-runvalgrind
+           rinutils))
     (home-page "https://www.shlomifish.org/open-source/projects/fortune-mod/")
     (synopsis "The Fortune Cookie program from BSD games")
     (description "Fortune is a command-line utility which displays a random
@@ -7909,37 +7928,37 @@ ncurses for text display.")
 (define-public naev
   (package
     (name "naev")
-    (version "0.8.2")
+    (version "0.9.2")
     (source
      (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/naev/naev")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name name version))
+       (method url-fetch)
+       (uri (string-append "https://github.com/naev/naev/releases/download/v"
+                           version "/naev-" version "-source.tar.xz"))
        (sha256
-        (base32 "02rk2fv2nhx5xsi0cariisamab3dpncwps4q3i3ki0y27xpwxzfx"))))
+        (base32 "1p6424n2rgrlb0h71gvww40vxs1h583d9im8bzgmv6dhgclbg0nl"))))
     (build-system meson-build-system)
     (arguments
      ;; XXX: Do not add debugging symbols, which cause the build to fail.
      `(#:configure-flags (list "--buildtype=release")
        #:tests? #f))          ;sole test fails with a missing "/dev/dri" error
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("pkg-config" ,pkg-config)))
+     (list gettext-minimal pkg-config))
     (inputs
-     `(("freetype" ,freetype)
-       ("glpk" ,glpk)
-       ("libpng" ,libpng)
-       ("libvorbis" ,libvorbis)
-       ("libwebp" ,libwebp)
-       ("libxml2" ,libxml2)
-       ("luajit" ,luajit)
-       ("openal" ,openal)
-       ("openblas" ,openblas)
-       ("physfs" ,physfs)
-       ("sdl" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))
-       ("suitesparse" ,suitesparse)))
+     (list freetype
+           glpk
+           libpng
+           libunibreak
+           libvorbis
+           libwebp
+           libxml2
+           luajit
+           openal
+           openblas
+           physfs
+           python
+           python-pyyaml
+           (sdl-union (list sdl2 sdl2-image sdl2-mixer))
+           suitesparse))
     (home-page "https://naev.org/")
     (synopsis "Game about space exploration, trade and combat")
     (description
@@ -7956,14 +7975,7 @@ of lore accompanying everything from planets to equipment.")
                    license:expat        ;edtaa3func.c
                    license:bsd-2        ;distance_field.c
                    license:bsd-3        ;perlin.c
-                   ;; Assets.
-                   license:silofl1.1
-                   license:gpl2+
-                   license:cc0
-                   license:cc-by3.0
-                   license:cc-by-sa3.0
-                   license:cc-by4.0
-                   license:cc-by-sa4.0))))
+                   ))))
 
 (define-public frotz-dumb-terminal
   (package
@@ -8748,7 +8760,7 @@ where the player draws runes in real time to effect the desired spell.")
 (define-public edgar
   (package
     (name "edgar")
-    (version "1.34")
+    (version "1.35")
     (source
      (origin
        (method url-fetch)
@@ -8756,7 +8768,7 @@ where the player draws runes in real time to effect the desired spell.")
         (string-append "https://github.com/riksweeney/edgar/releases/download/"
                        version "/edgar-" version "-1.tar.gz"))
        (sha256
-        (base32 "1121rq5wk3g8rs413av84s2kcy6qj6maspgy2vsxs36c2jd3yygl"))))
+        (base32 "0hwp73ili10kzx0aibhvgxfddqm94pimdaqhpnba6jzn119834q7"))))
     (build-system gnu-build-system)
     (arguments '(#:tests? #f            ; there are no tests
                  #:make-flags
@@ -8773,15 +8785,15 @@ where the player draws runes in real time to effect the desired spell.")
                                 (search-input-directory inputs "/include/SDL2")
                                 ":" (or (getenv "CPATH") ""))))))))
     (inputs
-     `(("sdl2-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf)))
-       ("zlib" ,zlib)))
+     (list (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
+           zlib))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("gnu-gettext" ,gettext-minimal)
-       ("libtool" ,libtool)
-       ("which" ,which)))
+     (list pkg-config
+           autoconf
+           automake
+           gettext-minimal
+           libtool
+           which))
     (synopsis "2d action platformer game")
     (description "The Legend of Edgar is a 2D platform game with a persistent world.
 When Edgar's father fails to return home after venturing out one dark and stormy night,
@@ -12200,6 +12212,80 @@ game.")  ;thanks to Debian for description
 computer opponents or against real players online.")
     (license license:agpl3+)))
 
+(define-public xblackjack
+  (package
+    (name "xblackjack")
+    (version "2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.ibiblio.org/pub/X11/contrib/games/"
+                           "xblackjack-" version ".tar.gz"))
+       (sha256
+        (base32 "05h93rya7zwnx2l58f0a7wkjadymkj4y77clcr2hryhrhhy1vwjx"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((imake (assoc-ref inputs "imake"))
+                   (out (assoc-ref outputs "out")))
+               (substitute* "Imakefile"
+                 (("EXTRA_LIBRARIES = -lXm \\$\\(DEPLIBS\\) -lbsd")
+                  "EXTRA_LIBRARIES = -lXm -lXt -lXmu -lXext -lX11")
+                 (("^#define NonStandardInstallTargets NO")
+                  "#define NonStandardInstallTargets YES")
+                 (("BINDIR = /usr/local/bin")
+                  (string-append "BINDIR = " out "/bin"))
+                 (("MANDIR = /usr/local/man/cat1")
+                  (string-append "MANDIR = " out "/share/man/man1"))
+                 (("XAPPLOADDIR = /usr/local/lib/app-defaults")
+                  (string-append "XAPPLOADDIR = " out "/lib/X11/app-defaults")))
+
+               (invoke "xmkmf")  ; Generate Makefile.
+               (substitute* "Makefile"
+                 ((imake) out)
+                 (("ETCX11DIR = /etc/X11")
+                  (string-append "ETCX11DIR = " out "/etc/X11"))
+                 ;; Fix incorrect argument given to gcc. Error message:
+                 ;; "gcc: error: DefaultGcc2AMD64Opt: No such file or directory"
+                 (("CDEBUGFLAGS = [^\n]*") ""))
+
+               ;; Fix header paths.
+               (substitute* '("Draw.c"
+                              "Strategy.c")
+                 (("^#include <X11/Xm/Xm.h>")
+                  "#include <Xm/Xm.h>"))
+               (substitute* "Strategy.c"
+                 (("^#include <X11/Xm/Label.h>")
+                  "#include <Xm/Label.h>"))
+
+               ;; Fix compilation errors.
+               (substitute* "Table.c"
+                 (("/\\* focus_moved_proc \\*/\tXtInheritFocusMovedProc,") "")
+                 (("_XmMoveObject\\(\\(RectObj\\) w, rx, ry\\);")
+                  "_XmMoveObject(w, rx, ry);")
+                 (("_XmResizeObject\\(\\(RectObj\\) managed->locs[i].w, nw, nh,")
+                  "_XmResizeObject(managed->locs[i].w, nw, nh,")))))
+         (add-after 'install 'install-man-pages
+           (lambda _
+             (invoke "make" "install.man"))))
+       #:tests? #f))  ; No check target.
+    (inputs
+     (list lesstif libx11 libxext libxmu libxt))
+    (native-inputs
+     (list imake))
+    (home-page "https://www.ibiblio.org/pub/X11/contrib/games/")
+    (synopsis "X11/Motif blackjack game")
+    (description
+     "Xblackjack is a MOTIF/OLIT based tool constructed to get you ready for
+the casino.  It was inspired by a book called \"Beat the Dealer\" by Edward
+O. Thorp, Ph.D. of UCLA.  A number of important statistics are maintained
+for display, and used by the program to implement Thorp's \"Complete Point
+System\" (high-low system).")
+    (license (license:x11-style "" "See file headers."))))
+
 (define-public azimuth
   (package
     (name "azimuth")
@@ -12476,18 +12562,7 @@ disassembly of the DOS version, extended with new features.")
 (define-public fheroes2
   (package
     (name "fheroes2")
-    (version "0.9.10")
-    (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)))
+    (version "0.9.11")
     (source
      (origin
        (method git-fetch)
@@ -12496,7 +12571,18 @@ disassembly of the DOS version, extended with new features.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0zz8k1ygw4kwnv403q60v2hdfzk13p89jjgmpfbylhxchjvwaxgh"))))
+        (base32 "1m8649srzg3j2b1hs4x2y8fib6hn7v0afv4c7bjnfk4bhpi4cqd7"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; no tests
+       #:make-flags '("FHEROES2_STRICT_COMPILATION=1"
+                      "RELEASE=1")))
+    (native-inputs
+     (list gettext-minimal))
+    (inputs
+     (list libpng
+           (sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
+           zlib))
     (home-page "https://ihhub.github.io/fheroes2/")
     (synopsis "Turn-based strategy game engine")
     (description "@code{fheroes2} is an implementation of Heroes of Might and