Update e-mail for Kei Kebreau.
[jackhill/guix/guix.git] / gnu / packages / game-development.scm
index 76c06ec..f9a0962 100644 (file)
@@ -3,11 +3,13 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2016 Julian Graham <joolean@gmail.com>
+;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages fribidi)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnunet)
+  #:use-module (gnu packages graphics)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages music)
   #:use-module (gnu packages ncurses)
@@ -48,7 +58,6 @@
   #:use-module (gnu packages qt)
   #:use-module (gnu packages video)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages zip)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages xorg)
@@ -69,7 +78,7 @@
 (define-public bullet
   (package
     (name "bullet")
-    (version "2.85.1")
+    (version "2.86.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bulletphysics/bullet3/"
@@ -77,7 +86,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0qpd37ws0xlxwy55dg058a5b4yw2jxiz09yyc3lc0frpa05pq5bf"))))
+                "0nghzcl84p8di215p7xj0gy1hyy072hw2xk9cnmav9hv6bjb4n60"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags (list (string-append
 is used in some video games and movies.")
     (license license:zlib)))
 
+(define-public deutex
+  (package
+   (name "deutex")
+   (version "5.0.0")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "https://github.com/Doom-Utils/" name
+                                "/releases/download/v" version "/"
+                                name "-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1jvffcpq64hk3jysz4q6zi9hqkksy151ci9553h8q7wrrkbw0i9z"))))
+   (build-system gnu-build-system)
+   (native-inputs `(("asciidoc" ,asciidoc)))
+   (home-page "https://github.com/Doom-Utils/deutex")
+   (synopsis "WAD file composer for Doom and related games")
+   (description
+    "DeuTex is a wad composer for Doom, Heretic, Hexen and Strife. It can be
+used to extract the lumps of a wad and save them as individual files.
+Conversely, it can also build a wad from separate files.  When extracting a
+lump to a file, it does not just copy the raw data, it converts it to an
+appropriate format (such as PPM for graphics, Sun audio for samples, etc.).
+Conversely, when it reads files for inclusion in pwads, it does the necessary
+conversions (for example, from PPM to Doom picture format).  In addition,
+DeuTex has functions such as merging wads, etc.")
+   (license license:gpl2+)))
+
+(define-public grfcodec
+  (package
+    (name "grfcodec")
+    (version "6.0.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://binaries.openttd.org/extra/"
+                                  name "/" version "/" name "-" version
+                                  "-source.tar.xz"))
+              (sha256
+               (base32
+                "08admgnpqcsifpicbm56apgv360fxapqpbbsp10qyk8i22w1ivsk"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f ; no check target
+       #:phases
+      (modify-phases %standard-phases
+        (delete 'configure) ; no configure script
+        (replace 'install   ; no install target
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (bin (string-append out "/bin"))
+                   (doc (string-append out "/share/doc"))
+                   (man (string-append out "/share/man/man1")))
+              (for-each (lambda (file)
+                          (install-file file bin))
+                        '("grfcodec" "grfid" "grfstrip" "nforenum"))
+              (install-file "COPYING" doc)
+              (with-directory-excursion "docs"
+                (for-each (lambda (file)
+                            (install-file (string-append file ".txt") doc))
+                          '("auto_correct" "commands" "grf" "grfcodec" "grftut"
+                            "readme" "readme.rpn"))
+                (for-each (lambda (file)
+                            (install-file file man))
+                          (find-files "." "\\.1"))))
+            #t)))))
+    (inputs
+     `(("boost" ,boost)
+       ("libpng" ,libpng)
+       ("zlib" ,zlib)))
+    (synopsis "GRF development tools")
+    (description
+     "The @dfn{Graphics Resource File} (GRF) development tools are a set of
+tools for developing (New)GRFs. It includes a number of smaller programs, each
+with a specific task:
+@enumerate
+@item @code{grfcodec} decodes and encodes GRF files for OpenTTD.
+@item @code{grfid} extracts the so-called \"GRF ID\" from a GRF.
+@item @code{grfstrip} strips all sprites from a GRF.
+@item @code{nforenum} checks NFO code for errors, making corrections when
+necessary.
+@end enumerate")
+    (home-page "http://dev.openttdcoop.org/projects/grfcodec")
+    ;; GRFCodec, GRFID, and GRFStrip are exclusively under the GPL2.
+    ;; NFORenum is under the GPL2+.
+    ;; The MD5 implementation contained in GRFID is under the zlib license.
+    (license (list license:gpl2 license:gpl2+ license:zlib))))
+
 (define-public gzochi
   (package
     (name "gzochi")
-    (version "0.10.1")
+    (version "0.11.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/gzochi/gzochi-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "166rawdal45kvanhvi0bkzy1d2pwf1p0lzslb287lcnm9vdw97yy"))))
+                "13j1m92zhxwkaaja3lg5x0h0b28mrrawdzk9d3hd19031akfxwb3"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases (modify-phases %standard-phases
-                  (add-before 'configure 'remove-Werror
-                              (lambda _
-                                ;; We can't build with '-Werror', notably
-                                ;; because deprecated functions of
-                                ;; libmicrohttpd are being used.
-                                (substitute* (find-files "." "^Makefile\\.in$")
-                                  (("-Werror")
-                                   ""))
-                                #t)))))
     (native-inputs `(("pkgconfig" ,pkg-config)))
     (inputs `(("bdb" ,bdb)
               ("glib" ,glib)
@@ -137,10 +221,139 @@ and network communications.  A very thin client library can be embedded to
 provide connectivity for client applications written in any language.")
     (license license:gpl3+)))
 
+(define-public nml
+  (package
+    (name "nml")
+    (version "0.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://bundles.openttdcoop.org/nml/releases/"
+                           version "/nml-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wk9ls5qyjwkra54rkj1gg94xbwzi7b84a5fh1ma1q7pbimi8rmg"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pillow" ,python-pillow)
+       ("python-ply" ,python-ply)))
+    (home-page "http://dev.openttdcoop.org/projects/nml")
+    (synopsis "NML compiler")
+    (description
+     "@dfn{NewGRF Meta Language} (NML) is a python-based compiler, capable of
+compiling NML files (along with their associated language, sound and graphic
+files) into @file{.grf} and/or @file{.nfo} files.")
+    (license license:gpl2+)))
+
+(define-public python-sge-pygame
+  (package
+    (name "python-sge-pygame")
+    (version "1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "sge-pygame" version))
+       (sha256
+        (base32
+         "0g0n722md6nfayiqzadwf0dh821hzqv0alp4by0vjfwr1xzv49mc"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-pygame" ,python-pygame)
+       ("python-six" ,python-six)
+       ("python-uniseg" ,python-uniseg)))
+    (home-page "http://stellarengine.nongnu.org")
+    (synopsis "2D game engine for Python")
+    (description
+     "The SGE Game Engine (\"SGE\", pronounced like \"Sage\") is a
+general-purpose 2D game engine.  It takes care of several details fro you so
+you can focus on the game itself.  This makes more rapid game development
+possible, and it also makes the SGE easy to learn.")
+    (license license:lgpl3+)))
+
+(define-public python2-sge-pygame
+  (package-with-python2 python-sge-pygame))
+
+(define-public python-tmx
+  (package
+    (name "python-tmx")
+    (version "1.9.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://savannah/python-tmx/"
+                           (version-major+minor version) "/tmx-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1is107sx3lr09dqjiyn10xqhyv5x54c2ryhys9mb9j3mxjbm227l"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-six" ,python-six)))
+    (home-page "http://python-tmx.nongnu.org")
+    (synopsis "Python library for the @code{Tiled} TMX format")
+    (description
+     "Python TMX reads and writes the @code{Tiled} TMX format in a simple way.
+This is useful for map editors or generic level editors, and it's also useful
+for using a map editor or generic level editor like Tiled to edit your game's
+levels.")
+    (license (list license:asl2.0
+                   ;; Documentation (only available in the source tarball) is
+                   ;; under the CC0 license.
+                   license:cc0))))
+
+(define-public python2-tmx
+  (let ((python2-tmx (package-with-python2 python-tmx)))
+    (package
+      (inherit python2-tmx)
+      (propagated-inputs
+       `(("python2-pathlib" ,python2-pathlib)
+         ,@(package-propagated-inputs python2-tmx))))))
+
+(define-public python-xsge
+  (package
+    (name "python-xsge")
+    (version "2017.06.09")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/xsge/xsge/xsge-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1vy7c2y7ihvmggs93zgfv2h3049s384wid8a5snzrrba8bhbb89p"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         ;; xSGE's setup.py script does not support one of the Python build
+         ;; system's default flags, "--single-version-externally-managed".
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero?
+              (system* "python" "setup.py" "install"
+                       (string-append "--prefix=" (assoc-ref outputs "out"))
+                       "--root=/")))))
+       #:tests? #f)) ; no check target
+    (propagated-inputs
+     `(("python-sge-pygame" ,python-sge-pygame)
+       ("python-pygame" ,python-pygame)
+       ("python-six" ,python-six)
+       ("python-tmx" ,python-tmx)))
+    (home-page "http://xsge.nongnu.org")
+    (synopsis "Extensions for the SGE Game Engine")
+    (description
+     "xSGE is a collection of modules that make doing certain tasks with the SGE
+Game Engine easier.  In addition to SGE's conveniences, the user has access to a
+GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
+support.")
+    (license license:gpl3+)))
+
+(define-public python2-xsge
+  (package-with-python2 python-xsge))
+
 (define-public tiled
   (package
     (name "tiled")
-    (version "0.17.0")
+    (version "1.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bjorn/tiled/archive/v"
@@ -148,15 +361,24 @@ provide connectivity for client applications written in any language.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0c9gykxmq0sk0yyfdq81g9psd922scqzn5asskjydj84d80f5z7p"))))
+                "1qj7l34y5zv2iazmwbix8wdpp88zv7fswbc4arqpp1wak2yna1ix"))))
     (build-system gnu-build-system)
-    (inputs `(("qt" ,qt)
-              ("zlib" ,zlib)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("qttools" ,qttools)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "translations/translations.pro"
+               (("LRELEASE =.*")
+                (string-append "LRELEASE = "
+                               (assoc-ref inputs "qttools")
+                               "/bin/lrelease\n")))
              (let ((out (assoc-ref outputs "out")))
                (system* "qmake"
                         (string-append "PREFIX=" out))))))))
@@ -204,7 +426,7 @@ clone.")
        ("libjpeg" ,libjpeg)
        ("libsndfile" ,libsndfile)
        ("openal" ,openal)))
-    (home-page "http://www.sfml-dev.org")
+    (home-page "https://www.sfml-dev.org")
     (synopsis "Simple and Fast Multimedia Library")
     (description
      "SFML provides a simple interface to the various computer components,
@@ -256,7 +478,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://icculus.org/physfs/downloads/physfs-"
+                    "https://icculus.org/physfs/downloads/physfs-"
                     version ".tar.bz2"))
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
@@ -269,7 +491,7 @@ sounds from presets such as \"explosion\" or \"powerup\".")
      `(("zlib" ,zlib)))
     (native-inputs
      `(("doxygen" ,doxygen)))
-    (home-page "http://icculus.org/physfs")
+    (home-page "https://icculus.org/physfs")
     (synopsis "File system abstraction library")
     (description
      "PhysicsFS is a library to provide abstract access to various archives.
@@ -321,8 +543,9 @@ programming language.")
     (version "4.4.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.gna.org/allegro/allegro/"
-                                  version "/allegro-" version ".tar.gz"))
+              (uri (string-append "https://github.com/liballeg/allegro5/"
+                                  "releases/download/" version "/allegro-"
+                                  version ".tar.gz"))
               (sha256
                (base32
                 "1p0ghkmpc4kwij1z9rzxfv7adnpy4ayi0ifahlns1bdzgmbyf88v"))))
@@ -356,14 +579,18 @@ etc.")
 (define-public allegro
   (package
     (name "allegro")
-    (version "5.2.0")
+    (version "5.2.2.0")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.gna.org/allegro/allegro/"
-                                  version "/allegro-" version ".tar.gz"))
+              (uri (string-append "https://github.com/liballeg/allegro5/releases"
+                                  "/download/" version "/allegro-"
+                                  (if (equal? "0" (string-take-right version 1))
+                                    (string-drop-right version 2)
+                                    version)
+                                  ".tar.gz"))
               (sha256
                (base32
-                "1mwzgzc4nb5k5zkbq7yrc6hg63yxq3wk69lmjag1h19x8b6njnmg"))))
+                "1z4lrrlmn471wb7vzbd9iw7g379vj0k964vy1s64hcvv5bhvk1g2"))))
     (build-system cmake-build-system)
     (arguments `(#:tests? #f)) ; there are no tests
     (inputs
@@ -399,8 +626,12 @@ etc.")
     (version "5.0.11")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://download.gna.org/allegro/allegro/"
-                                  version "/allegro-" version ".tar.gz"))
+              (uri (string-append "https://github.com/liballeg/allegro5/releases"
+                                  "/download/" version "/allegro-"
+                                  (if (equal? "0" (string-take-right version 1))
+                                    (string-drop-right version 2)
+                                    version)
+                                  ".tar.gz"))
               (sha256
                (base32
                 "0cd51qrh97jrr0xdmnivqgwljpmizg8pixsgvc4blqqlaz4i9zj9"))))))
@@ -408,18 +639,16 @@ etc.")
 (define-public aseprite
   (package
     (name "aseprite")
-    (version "1.1.1")
-    ;; The release tarball isn't good enough because it's missing some
-    ;; necessary code that is only in git submodules.
+    (version "1.1.7") ; After 1.1.7 the source is no longer distributed under the GPL.
+    ;; TODO: Unbundle third party software.
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/aseprite/aseprite.git")
-                    (commit "v1.1.1")
-                    (recursive? #t)))
+              (method url-fetch/zipbomb)
+              (uri (string-append "https://github.com/aseprite/aseprite"
+                                  "/releases/download/v" version
+                                  "/Aseprite-v" version "-Source.zip"))
               (sha256
                (base32
-                "1yr0l3bc68lyrffrzxgw98zznv8yz5ldl98lyvp6s5grny4s4jyk"))))
+                "1plss4i1lfxcznv9p0pip1bkhj7ipw7jlhsh5avd6dzw079l4nvv"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags
@@ -463,7 +692,7 @@ etc.")
     (description "Aseprite is a tool for creating 2D pixel art for video
 games.  In addition to basic pixel editing features, Aseprite can assist in
 the creation of animations, tiled graphics, texture atlases, and more.")
-    (home-page "http://www.aseprite.org/")
+    (home-page "https://www.aseprite.org/")
     (license license:gpl2+)))
 
 (define-public qqwing
@@ -526,18 +755,16 @@ interface (API).")
 (define-public python-pygame
   (package
     (name "python-pygame")
-    (version "1.9.1")
+    (version "1.9.3")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://pygame.org/ftp/pygame-"
-                                  version "release.tar.gz"))
+              (uri (pypi-uri "pygame" version))
               (sha256
                (base32
-                "0cyl0ww4fjlf289pjxa53q4klyn55ajvkgymw0qrdgp4593raq52"))))
+                "1hlydiyygl444bq5m5g8n3jsxsgrdyxlm42ipmfbw36wkf0j243m"))))
     (build-system python-build-system)
     (arguments
-     `(#:python ,python-2
-       #:tests? #f ; Tests require pygame to be installed first.
+     `(#:tests? #f ; Tests require pygame to be installed first.
        #:phases
        (modify-phases %standard-phases
          ;; Set the paths to the dependencies manually because
@@ -553,6 +780,7 @@ interface (API).")
                    (smpeg-ref (assoc-ref inputs "libsmpeg"))
                    (png-ref   (assoc-ref inputs "libpng"))
                    (jpeg-ref  (assoc-ref inputs "libjpeg"))
+                   (freetype-ref (assoc-ref inputs "freetype"))
                    (v4l-ref   (assoc-ref inputs "v4l-utils"))
                    (out-ref   (assoc-ref outputs "out")))
                (substitute* "Setup.in"
@@ -582,19 +810,23 @@ interface (API).")
                  (("JPEG = -ljpeg")
                   (string-append "JPEG = -I" jpeg-ref "/include -L"
                                  jpeg-ref "/lib -ljpeg")))
+
+               (substitute* "Setup.in"
+                 (("FREETYPE = -lfreetype")
+                  (string-append "FREETYPE = -I" freetype-ref "/include/freetype2 -L"
+                                 freetype-ref "/lib -lfreetype")))
+
                (substitute* "Setup.in"
                  (("^pypm") "#pypm"))
-               (substitute* "src/movie.c")
                ;; Create a path to a header file provided by v4l-utils.
                (system* "mkdir" "linux")
                (system* "ln" "--symbolic"
                         (string-append v4l-ref "/include/libv4l1-videodev.h")
                         "linux/videodev.h")
                (system* "ln" "--symbolic" "Setup.in" "Setup")))))))
-    (native-inputs
-     `(("python-setuptools" ,python-setuptools)))
     (inputs
-     `(("sdl" ,sdl)
+     `(("freetype" ,freetype)
+       ("sdl" ,sdl)
        ("sdl-image" ,sdl-image)
        ("sdl-mixer" ,sdl-mixer)
        ("sdl-ttf" ,sdl-ttf)
@@ -605,7 +837,7 @@ interface (API).")
        ("libsmpeg" ,libsmpeg)
        ("portmidi" ,portmidi)
        ("v4l-utils" ,v4l-utils)))
-    (home-page "http://www.pygame.org")
+    (home-page "https://www.pygame.org")
     (synopsis "SDL wrapper for Python")
     (description "Pygame is a set of Python modules designed for writing games.
 Pygame adds functionality on top of the excellent SDL library. This allows you
@@ -621,3 +853,169 @@ to create fully featured games and multimedia programs in the python language.")
                    license:psfl
                    license:public-domain
                    license:lgpl2.1+))))
+
+(define-public python2-pygame
+  (package-with-python2 python-pygame))
+
+(define-public grafx2
+  (package
+    (name "grafx2")
+    (version "2.4")
+    (source (origin
+              (method url-fetch)
+              ;; XXX: There is no URL that contains the version. :(
+              (uri "http://pulkomandy.tk/projects/GrafX2/downloads/21")
+              (sha256
+               (base32
+                "0svsy6rqmdj11b400c242i2ixihyz0hds0dgicqz6g6dcgmcl62q"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure) ; no configure script
+         (add-before 'build 'change-to-src-directory
+           (lambda _
+             (chdir "src")
+             #t)))
+       #:make-flags
+       ;; SDL header files are referenced without the preceeding "SDL/".
+       (list (string-append "CFLAGS=-I"
+                            (assoc-ref %build-inputs "sdl-union")
+                            "/include/SDL")
+             (string-append "prefix="
+                            (assoc-ref %outputs "out")))
+       #:tests? #f)) ; no check target
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libpng" ,libpng)
+       ("lua" ,lua-5.1)
+       ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-ttf)))))
+    (synopsis "Bitmap paint program")
+    (description "GrafX2 is a bitmap paint program inspired by the Amiga
+programs Deluxe Paint and Brilliance.  Specializing in 256-color drawing, it
+includes a very large number of tools and effects that make it particularly
+suitable for pixel art, game graphics, and generally any detailed graphics
+painted with a mouse.")
+    (home-page "http://pulkomandy.tk/projects/GrafX2")
+    (license license:gpl2))) ; GPLv2 only
+
+(define-public ois
+  (package
+    (name "ois")
+    (version "1.3")
+    (source
+     (origin
+       ;; Development has moved to github and there are no recent tarball
+       ;; releases.
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/wgois/OIS.git")
+             (commit "bb75ccc1aabc1c547195579963601ff6080ca2f2")))
+       (file-name (string-append name "-" version))
+       (sha256
+        (base32
+         "0w0pamjc3vj0jr718hysrw8x076fq6n9rd6wcb36sn2jd0lqvi98"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'bootstrap
+           (lambda _ (zero? (system* "sh" "bootstrap")))))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("m4" ,m4)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libxaw" ,libxaw)))
+    (synopsis "Object Oriented Input System")
+    (description
+     "Cross Platform Object Oriented Input Lib System is a cross platform,
+simple solution for using all kinds of Input Devices (Keyboards, Mice,
+Joysticks, etc) and feedback devices (e.g. force feedback).  Meant to be very
+robust and compatible with many systems and operating systems.")
+    (home-page "https://github.com/wgois/OIS")
+    (license license:zlib)))
+
+(define-public mygui
+  (package
+    (name "mygui")
+    (version "3.2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/MyGUI/" name
+                       "/archive/MyGUI" version ".tar.gz"))
+       (sha256
+        (base32
+         "13x7cydmj7gjmsg702sqjbfi53z265iv6j7binv3r6a7ibndfa0a"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f                      ; No test target
+       #:configure-flags
+       (list "-DMYGUI_INSTALL_DOCS=TRUE"
+             (string-append "-DOGRE_INCLUDE_DIR="
+                            (assoc-ref %build-inputs "ogre")
+                            "/include/OGRE"))))
+    (native-inputs
+     `(("boost" ,boost)
+       ("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("font-dejavu" ,font-dejavu)
+       ("freetype" ,freetype)
+       ("graphviz" ,graphviz)
+       ("libx11" ,libx11)
+       ("ogre" ,ogre)
+       ("ois" ,ois)))
+    (synopsis "Fast, flexible and simple GUI")
+    (description
+     "MyGUI is a library for creating Graphical User Interfaces (GUIs) for games
+and 3D applications.  The main goals of mygui are: speed, flexibility and ease
+of use.")
+    (home-page "http://mygui.info/")
+    (license license:expat)))
+
+(define-public openmw
+  (package
+    (name "openmw")
+    (version "0.42.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "https://github.com/OpenMW/openmw/archive/"
+                       name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1pla8016lpbg8cgm9kia318a860f26dmiayc72p3zl35mqrc7g7w"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ; No test target
+       #:configure-flags
+       (list "-DDESIRED_QT_VERSION=5")))
+    (native-inputs
+     `(("boost" ,boost)
+       ("doxygen" ,doxygen)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("bullet" ,bullet)
+       ("ffmpeg" ,ffmpeg)
+       ("libxt" ,libxt)
+       ("mygui" ,mygui)
+       ("openal" ,openal)
+       ("openscenegraph" ,openscenegraph)
+       ("qtbase" ,qtbase)
+       ("sdl" ,sdl2)
+       ("unshield" ,unshield)))
+    (synopsis "Free software re-implementation of the RPG Morrowind engine")
+    (description
+     "OpenMW is a free, open source and modern engine which reimplements and
+extends the one that runs the 2002 open-world RPG Morrowind.  The engine comes
+with its own editor, called OpenMW-CS which allows the user to edit or create
+their own original games.")
+    (home-page "https://openmw.org")
+    (license license:gpl3)))