X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/de1d68a2955ab1934338bee185fdba6c8934bd6e..3c8ba11a97d3f3b671b8919da8c41f0b0e2ccaf3:/gnu/packages/game-development.scm?ds=sidebyside diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index bc0051d4c6..f9a09625a5 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1,12 +1,15 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Tomáš Čech ;;; Copyright © 2015 Mark H Weaver -;;; Copyright © 2015 Julian Graham ;;; Copyright © 2015 Ludovic Courtès ;;; Copyright © 2015 Alex Kost -;;; Copyright © 2015, 2016 David Thompson -;;; Copyright © 2016 Efraim Flashner -;;; Copyright © 2016 Kei Yamashita +;;; Copyright © 2015, 2016, 2017 David Thompson +;;; Copyright © 2016, 2017 Efraim Flashner +;;; Copyright © 2016, 2017 Kei Kebreau +;;; Copyright © 2016 Ricardo Wurmus +;;; Copyright © 2016, 2017 Julian Graham +;;; Copyright © 2017 Tobias Geerinckx-Rice +;;; Copyright © 2017 Manolis Fragkiskos Ragkousis ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,20 +31,33 @@ #: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 doxygen) + #: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) + #:use-module (gnu packages python) #: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) @@ -62,20 +78,25 @@ (define-public bullet (package (name "bullet") - (version "2.82-r2704") + (version "2.86.1") (source (origin (method url-fetch) - (uri (string-append "https://bullet.googlecode.com/files/bullet-" - version ".tgz")) + (uri (string-append "https://github.com/bulletphysics/bullet3/" + "archive/" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1lnfksxa9b1slyfcxys313ymsllvbsnxh9np06azkbgpfvmwkr37")))) + "0nghzcl84p8di215p7xj0gy1hyy072hw2xk9cnmav9hv6bjb4n60")))) (build-system cmake-build-system) - (arguments '(#:tests? #f ; no 'test' target - #:configure-flags (list - (string-append - "-DCMAKE_CXX_FLAGS=-fPIC " - (or (getenv "CXXFLAGS") ""))))) + (arguments + '(#:configure-flags (list (string-append + "-DBUILD_SHARED_LIBS=ON " + "-DCMAKE_CXX_FLAGS=-fPIC " + (or (getenv "CXXFLAGS") ""))))) + (inputs + `(("glu" ,glu) + ("libx11" ,libx11) + ("mesa" ,mesa))) (home-page "http://bulletphysics.org/") (synopsis "3D physics engine library") (description @@ -83,33 +104,107 @@ 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.9") + (version "0.11.1") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/gzochi/gzochi-" version ".tar.gz")) (sha256 (base32 - "1nf8naqbc4hmhy99b8n70yswg9j71nh5mfpwwh6d8pdw5mp9b46a")))) + "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) - ("gmp" ,gmp) ("guile" ,guile-2.0) ("libmicrohttpd" ,libmicrohttpd) ("ncurses" ,ncurses) @@ -126,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.16.1") + (version "1.0.3") (source (origin (method url-fetch) (uri (string-append "https://github.com/bjorn/tiled/archive/v" @@ -137,15 +361,24 @@ provide connectivity for client applications written in any language.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0s1i6yhm1z9ayzjh8cprcc9jvj5m87l9snyqg6w7zlj3q9zn4rn6")))) + "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)))))))) @@ -177,7 +410,9 @@ clone.") "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm")))) (build-system cmake-build-system) (arguments - '(#:tests? #f)) ; no tests + '(#:configure-flags + (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE") + #:tests? #f)) ; no tests (inputs `(("mesa" ,mesa) ("glew" ,glew) @@ -191,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, @@ -243,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 @@ -256,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. @@ -272,14 +507,14 @@ archive on a per-file basis.") (define-public love (package (name "love") - (version "0.10.0") + (version "0.10.2") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/rude/love/downloads/" "love-" version "-linux-src.tar.gz")) (sha256 (base32 - "1r2n1nrw3hcdvy14fjbwz3l9swcy65v3lqwpj2frnkkcwncdz94p")))) + "11x346pw0gqad8nmkmywzx4xpcbfc3dslbrdw5x94n1i25mk0sxj")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -308,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")))) @@ -340,21 +576,79 @@ etc.") (home-page "http://liballeg.org") (license license:giftware))) +(define-public allegro + (package + (name "allegro") + (version "5.2.2.0") + (source (origin + (method url-fetch) + (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 + "1z4lrrlmn471wb7vzbd9iw7g379vj0k964vy1s64hcvv5bhvk1g2")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; there are no tests + (inputs + ;; FIXME: Add the following optional inputs: xinput2, opensl, dumb + `(("flac" ,flac) + ("freetype" ,freetype) + ("glu" ,glu) + ("gtk" ,gtk+-2) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libtheora" ,libtheora) + ("libvorbis" ,libvorbis) + ("libxcursor" ,libxcursor) + ("libxinerama" ,libxinerama) + ("libxrandr" ,libxrandr) + ("mesa" ,mesa) + ("openal" ,openal) + ("physfs" ,physfs) + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Game programming library") + (description "Allegro is a library mainly aimed at video game and +multimedia programming. It handles common, low-level tasks such as creating +windows, accepting user input, loading data, drawing images, playing sounds, +etc.") + (home-page "http://liballeg.org") + (license license:bsd-3))) + +(define-public allegro-5.0 + (package (inherit allegro) + (name "allegro") + (version "5.0.11") + (source (origin + (method url-fetch) + (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")))))) + (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 @@ -398,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 @@ -432,3 +726,296 @@ It offers the following features: import into a database. @end enumerate") (license license:gpl2+))) + +(define-public quesoglc + (package + (name "quesoglc") + (version "0.7.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/" name "/" version "/" + name "-" version "-free.tar.bz2")) + (sha256 + (base32 + "08ddhywdy2qg17m592ng3yr0p1ih96irg8wg729g75hsxxq9ipks")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("fontconfig" ,fontconfig) + ("freeglute" ,freeglut) + ("fribidi" ,fribidi) + ("glew" ,glew))) + (home-page "http://quesoglc.sourceforge.net") + (synopsis "Implementation of the OpenGL Character Renderer (GLC)") + (description + "The OpenGL Character Renderer (GLC) is a state machine that provides +OpenGL programs with character rendering services via an application programming +interface (API).") + (license (list license:expat license:lgpl2.1+)))) + +(define-public python-pygame + (package + (name "python-pygame") + (version "1.9.3") + (source (origin + (method url-fetch) + (uri (pypi-uri "pygame" version)) + (sha256 + (base32 + "1hlydiyygl444bq5m5g8n3jsxsgrdyxlm42ipmfbw36wkf0j243m")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; Tests require pygame to be installed first. + #:phases + (modify-phases %standard-phases + ;; Set the paths to the dependencies manually because + ;; the configure script does not allow passing them as + ;; parameters. This also means we can skip the configure + ;; phase. + (add-before 'build 'set-library-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((sdl-ref (assoc-ref inputs "sdl")) + (font-ref (assoc-ref inputs "sdl-ttf")) + (image-ref (assoc-ref inputs "sdl-image")) + (mixer-ref (assoc-ref inputs "sdl-mixer")) + (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" + (("SDL = -I/usr/include/SDL") + (string-append "SDL = -I" sdl-ref "/include/SDL -I."))) + (substitute* "Setup.in" + (("FONT = -lSDL_ttf") + (string-append "FONT = -I" font-ref "/include/SDL -L" + font-ref "/lib -lSDL_ttf"))) + (substitute* "Setup.in" + (("IMAGE = -lSDL_image") + (string-append "IMAGE = -I" image-ref "/include/SDL -L" + image-ref "/lib -lSDL_image"))) + (substitute* "Setup.in" + (("MIXER = -lSDL_mixer") + (string-append "MIXER = -I" mixer-ref "/include/SDL -L" + mixer-ref "/lib -lSDL_mixer"))) + (substitute* "Setup.in" + (("SMPEG = -lsmpeg") + (string-append "SMPEG = -I" smpeg-ref "/include/smpeg -L" + smpeg-ref "/lib -lsmpeg"))) + (substitute* "Setup.in" + (("PNG = -lpng") + (string-append "PNG = -I" png-ref "/include -L" + png-ref "/lib -lpng"))) + (substitute* "Setup.in" + (("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")) + ;; 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"))))))) + (inputs + `(("freetype" ,freetype) + ("sdl" ,sdl) + ("sdl-image" ,sdl-image) + ("sdl-mixer" ,sdl-mixer) + ("sdl-ttf" ,sdl-ttf) + ("sdl-gfx" ,sdl-gfx) + ("libjpeg" ,libjpeg) + ("libpng" ,libpng) + ("libX11" ,libx11) + ("libsmpeg" ,libsmpeg) + ("portmidi" ,portmidi) + ("v4l-utils" ,v4l-utils))) + (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 +to create fully featured games and multimedia programs in the python language.") + (license (list license:bsd-2 + ;; python numeric license as listed by Debian looks like + ;; an Expat-style license with a warranty disclaimer for + ;; the U.S. government and the University of California. + license:expat + license:lgpl2.0+ + license:lgpl2.1+ + license:gpl3+ + 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)))