gnu: game-development: Use HTTPS where possible.
[jackhill/guix/guix.git] / gnu / packages / game-development.scm
index 76c06ec..2d52a8a 100644 (file)
@@ -3,11 +3,12 @@
 ;;; 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 <kei@openmailbox.org>
 ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Julian Graham <joolean@gmail.com>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 is used in some video games and movies.")
     (license license:zlib)))
 
+(define-public deutex
+  (package
+   (name "deutex")
+   (version "4.4.902")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "https://github.com/Doom-Utils/" name
+                                "/archive/v" version ".tar.gz"))
+            (file-name (string-append name "-" version ".tar.gz"))
+            (sha256
+             (base32
+              "0rwz1yzgd539x4h25kzhar4q02xyxjwfrcpz4m8ixi312a82p7cn"))))
+   (build-system gnu-build-system)
+   (arguments
+    '(#:tests? #f ; no check target
+      #:phases
+      (modify-phases %standard-phases
+        ;; The provided configure script takes a restricted number of arguments.
+        (replace 'configure
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (zero? (system* "./configure" "--prefix"
+                                   (assoc-ref %outputs "out")))))
+        ;; "make install" is broken for this package.
+        ;; Notably, the binaries overrwrite one another upon installation as
+        ;; they are all installed to the "bin" file in the output directory,
+        ;; and the manual page fails to install because the directory for the
+        ;; manual page is not created.
+        (replace 'install
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref %outputs "out"))
+                          (bin (string-append out "/bin"))
+                          (share (string-append out "/share")))
+                     (install-file "deusf" bin)
+                     (install-file "deutex" bin)
+                     (install-file "deutex.6" (string-append share "/man/man6")))
+                   #t)))))
+   (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 gzochi
   (package
     (name "gzochi")
@@ -140,7 +190,7 @@ provide connectivity for client applications written in any language.")
 (define-public tiled
   (package
     (name "tiled")
-    (version "0.17.0")
+    (version "0.18.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/bjorn/tiled/archive/v"
@@ -148,7 +198,7 @@ provide connectivity for client applications written in any language.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0c9gykxmq0sk0yyfdq81g9psd922scqzn5asskjydj84d80f5z7p"))))
+                "1kcj2blrlfpghjv0qigip2qcbxfx7vv9i8nr4997hkwhsh6i2pjp"))))
     (build-system gnu-build-system)
     (inputs `(("qt" ,qt)
               ("zlib" ,zlib)))
@@ -204,7 +254,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 +306,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 +319,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.
@@ -408,18 +458,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 +511,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 +574,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 +599,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 +629,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 +656,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 +672,49 @@ 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