add support for assets and bundling
This commit is contained in:
parent
dd6b56bcb7
commit
b440da3600
6 changed files with 104 additions and 30 deletions
|
@ -32,15 +32,14 @@
|
|||
#:select? vcs-file?))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:make-flags '("GUILE_AUTO_COMPILE=0")
|
||||
'(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 popen)
|
||||
(ice-9 rdelim))
|
||||
#:make-flags '("GUILE_AUTO_COMPILE=0")
|
||||
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; (replace 'bootstrap
|
||||
;; (lambda _
|
||||
;; ;; The 'bootstrap' script lacks a shebang, leading to "Exec
|
||||
;; ;; format error" with glibc 2.35.
|
||||
;; (invoke "autoreconf" "-vfi")))
|
||||
(add-after 'install-bin 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; (use-modules (guix build guile-build-system))
|
||||
|
@ -49,7 +48,10 @@
|
|||
(chickadee (assoc-ref inputs "guile-chickadee"))
|
||||
(deps (list out chickadee))
|
||||
(guile (assoc-ref inputs "guile"))
|
||||
(effective (target-guile-effective-version))
|
||||
(effective (read-line
|
||||
(open-pipe* OPEN_READ
|
||||
(string-append guile "/bin/guile")
|
||||
"-c" "(display (effective-version))")))
|
||||
(mods (string-drop-right ;drop trailing colon
|
||||
(string-join deps
|
||||
(string-append "/share/guile/site/"
|
||||
|
@ -57,25 +59,27 @@
|
|||
'suffix)
|
||||
1))
|
||||
(objs (string-drop-right
|
||||
(string-join deps
|
||||
(string-append "/lib/guile/" effective
|
||||
"/site-ccache:")
|
||||
'suffix)
|
||||
1)))
|
||||
(wrap-program (string-append out "/bin/bloatrunner")
|
||||
`("GUILE_LOAD_PATH" ":" prefix (,mods))
|
||||
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))))))
|
||||
))
|
||||
(native-inputs
|
||||
(list autoconf automake pkg-config))
|
||||
(inputs
|
||||
(list guile-3.0))
|
||||
(propagated-inputs
|
||||
(list guile-chickadee))
|
||||
(synopsis "Loderunner inspired game")
|
||||
(description "Small game written for the 2024 lisp game jam.")
|
||||
(home-page "https://www.snamellit.com/projects/bloatrunner.html")
|
||||
(license license:gpl3)))
|
||||
|
||||
(string-append "/lib/guile/" effective
|
||||
"/site-ccache:")
|
||||
'suffix)
|
||||
1)))
|
||||
(wrap-program (string-append out "/bin/bloatrunner")
|
||||
`("GUILE_LOAD_PATH" ":" prefix (,mods))
|
||||
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs))
|
||||
`("ASSET_DIR" ":" prefix (,(string-append out "/share/bloatrunner")))
|
||||
)))))
|
||||
))
|
||||
(native-inputs
|
||||
(list autoconf automake pkg-config))
|
||||
(inputs
|
||||
(list guile-3.0))
|
||||
(propagated-inputs
|
||||
(list guile-chickadee))
|
||||
(synopsis "Loderunner inspired game")
|
||||
(description "Small game written for the 2024 lisp game jam.")
|
||||
(home-page "https://www.snamellit.com/projects/bloatrunner.html")
|
||||
(license license:gpl3)))
|
||||
|
||||
|
||||
bloatrunner
|
||||
|
|
58
README.org
58
README.org
|
@ -45,7 +45,10 @@ So now, go out, collect the keys and maintain a healthy diet!
|
|||
- [X] create hero entity
|
||||
- [X] implement hero movement
|
||||
- [X] create other entity
|
||||
- [ ] bundle game for distribution
|
||||
- [-] bundle game for distribution
|
||||
- [X] add assets to the package
|
||||
- [X] wrap the script to find the libraries
|
||||
- [ ] ensure the assets can be found by the render packages
|
||||
- [ ] upload to itch.io
|
||||
- [ ] automate upload to itch.io
|
||||
- [ ] create other's AI
|
||||
|
@ -170,3 +173,56 @@ guix pack -L .guix/modules bloatrunner
|
|||
#+END_SRC
|
||||
|
||||
Generates a 750Mb installed folder structure with everything in it, theoretically
|
||||
|
||||
To add the startup script :
|
||||
|
||||
#+BEGIN_SRC
|
||||
|
||||
#+END_SRC
|
||||
|
||||
This startup script needs to be wrapped during installation to find
|
||||
the libraries. This requires calling the `wrap-program` utility with
|
||||
the environment variables set according to the installed environment.
|
||||
|
||||
#+BEGIN_SRC scheme
|
||||
(arguments
|
||||
'(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 popen)
|
||||
(ice-9 rdelim))
|
||||
#:make-flags '("GUILE_AUTO_COMPILE=0")
|
||||
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'install-bin 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; (use-modules (guix build guile-build-system))
|
||||
;; Wrap the 'gitile' command to refer to the right modules.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(chickadee (assoc-ref inputs "guile-chickadee"))
|
||||
(deps (list out chickadee))
|
||||
(guile (assoc-ref inputs "guile"))
|
||||
(effective (read-line
|
||||
(open-pipe* OPEN_READ
|
||||
(string-append guile "/bin/guile")
|
||||
"-c" "(display (effective-version))")))
|
||||
(mods (string-drop-right ;drop trailing colon
|
||||
(string-join deps
|
||||
(string-append "/share/guile/site/"
|
||||
effective ":")
|
||||
'suffix)
|
||||
1))
|
||||
(objs (string-drop-right
|
||||
(string-join deps
|
||||
(string-append "/lib/guile/" effective
|
||||
"/site-ccache:")
|
||||
'suffix)
|
||||
1)))
|
||||
(wrap-program (string-append out "/bin/bloatrunner")
|
||||
`("GUILE_LOAD_PATH" ":" prefix (,mods))
|
||||
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))))))
|
||||
))
|
||||
|
||||
#+END_SRC
|
||||
|
||||
most of this is dynamically construct the content of the paths.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(define-module (game render hero)
|
||||
#:use-module (game model hero)
|
||||
#:use-module (game util assets)
|
||||
#:use-module (chickadee)
|
||||
#:use-module (chickadee math vector)
|
||||
#:use-module (chickadee graphics sprite)
|
||||
|
@ -13,7 +14,7 @@
|
|||
(define hero-atlas #f)
|
||||
|
||||
(define (render-hero-load)
|
||||
(set! hero-texture (load-image "assets/images/lr_penguin2.png"))
|
||||
(set! hero-texture (load-image (asset-file-name "assets/images/lr_penguin2.png")))
|
||||
(set! hero-atlas (split-texture hero-texture 32 32)))
|
||||
|
||||
;; start index of the walk animation
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(define-module (game render level)
|
||||
#:use-module (game model level)
|
||||
#:use-module (game util assets)
|
||||
#:use-module (srfi srfi-64)
|
||||
#:use-module (chickadee graphics color)
|
||||
#:use-module (chickadee graphics sprite)
|
||||
|
@ -19,7 +20,7 @@
|
|||
|
||||
;; load the tile texture and split it into a tile atlas
|
||||
(define (render-level-load)
|
||||
(set! tile-texture (load-image "assets/images/simples_pimples.png"
|
||||
(set! tile-texture (load-image (asset-file-name "assets/images/simples_pimples.png")
|
||||
#:transparent-color black))
|
||||
(set! tile-atlas (split-texture tile-texture 16 16))
|
||||
(set! sprite-batch (make-sprite-batch tile-texture #:capacity 1200))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(define-module (game render other)
|
||||
#:use-module (game model other)
|
||||
#:use-module (game util assets)
|
||||
#:use-module (chickadee)
|
||||
#:use-module (chickadee math vector)
|
||||
#:use-module (chickadee graphics sprite)
|
||||
|
@ -12,7 +13,7 @@
|
|||
(define other-atlas #f)
|
||||
|
||||
(define (render-other-load)
|
||||
(set! other-atlas (split-texture (load-image "assets/images/simples_pimples.png") 16 16)))
|
||||
(set! other-atlas (split-texture (load-image (asset-file-name "assets/images/simples_pimples.png")) 16 16)))
|
||||
|
||||
;; start index of the walk animation
|
||||
(define other-walking-offset 3926)
|
||||
|
|
11
game/util/assets.scm
Normal file
11
game/util/assets.scm
Normal file
|
@ -0,0 +1,11 @@
|
|||
(define-module (game util assets)
|
||||
#:export (asset-file-name)
|
||||
)
|
||||
|
||||
|
||||
(define prefix (or (getenv "ASSET_DIR") "." ))
|
||||
|
||||
|
||||
(define (asset-file-name name)
|
||||
(string-append prefix "/" name)
|
||||
)
|
Loading…
Reference in a new issue