Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
A jam submission

jam-no-theme eat berries collect treasure could technically control robotsView game page

lisp-game-jam SDL2 ecl cross-platform game, feat. jam berries & no theme
Submitted by screwtape — 1 day, 1 hour before the deadline
Add to collection

Play lisp jam experience

jam-no-theme eat berries collect treasure could technically control robots's itch.io page

Results

CriteriaRankScore*Raw Score
Creativity - how original is the idea?#262.3573.800
Entertainment - how enjoyable/replayable is it?#281.6122.600
Presentation - how does it look/feel?#291.8613.000
Overall#291.9433.133

Ranked from 5 ratings. Score is adjusted from raw score by the median number of ratings per game in the jam.

Leave a comment

Log in with itch.io to leave a comment.

Comments

Submitted(+1)

Very cool concept, not to mention the cool tech behind the game!

Developer(+1)

Thanks ! I enjoyed your abstraction of the real life experience of hunting for interesting mushrooms as well !

Submitted(+2)

It was a bit hard to understand in the beginning, but it is quite interesting :)

Then I left the game for half an hour, and the robots did all the work for me (but the game started to lag) :o


Developer(+1)

Hahaha, awesome thanks and thanks for the picture ! Hopefully everyone can clearly understand the game in this context :D

The challenge becomes being able to spot the treasures amoungst the berries. How did the robots nail this much treasure? Were there just that many robots?

In order to stave off the call of premature optimisation, I deliberately wrote the game to need garbage collection for days, so the eventual performance decay was inevitable. Besides, I tied logical updates to rendering updates.

Submitted(+1)

It becomes harder to spot them, sure :) I guess it's the time that allowed robots to get that much.

Jam HostSubmitted(+1)

I don't have a new enough ECL version to play this one, unfortunately.

Developer

What version are you working with? I can see if I can build it over on the sdf.org tilde which uses about as classic an ecl version as I can remember seeing in the wild (single dash long flags only)

Submitted (1 edit) (+1)

Hey, I got the same libecl.so error as below, even though I do have ECL installed. I’ve tried compiling from source, unfortunately also to no avail:

;;; Internal error:
;;;   ** Error code 1 when executing
;;; (EXT:RUN-PROGRAM "x86_64-pc-linux-gnu-g++" ("-I." "-I/usr/include/" "-D_GNU_SOURCE" "-D_FILE_OFFSET_BITS=64" "-march=native" "-mtune=native" "-O2" "-fomit-frame-pointer" "-pipe" "-ggdb" "-fPIC" "-D_THREAD_SAFE" "-Dlinux" "-O2" "-c" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx" "-o" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.o")):
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L2set_color(cl_narg, cl_object, cl_object, cl_object, ...)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:114:34: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   114 |   value0 = SDL_SetRenderDrawColor(renderer, ecl_to_int(v1r), ecl_to_int(v2g), ecl_to_int(v3b), ecl_to_int(v4a));
;;;       |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;       |                                  |
;;;       |                                  int
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L3fill_rectangle(cl_object, cl_object, cl_object, cl_object)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:136:26: error: taking address of rvalue [-fpermissive]
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:135:22: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   135 |    SDL_RenderFillRect(renderer,
;;;       |    ~~~~~~~~~~~~~~~~~~^~~~~~~~~~
;;;       |                      |
;;;       |                      int
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~An error occurred during initialization:
COMPILE-FILE-ERROR while
compiling #<cl-source-file "jam-no-theme" "jam-no-theme">.
Submitted

You might want to consider using AppImage for deployment.

Developer

Thanks ! Could you try compiling as c instead of cxx as well?  What was that variable again......

On my openbsd machines, I'm using ecl21.2 and I know other people have been compiling on more modern stock linux distributions successfully at least sometimes. So my guess is that maybe I did something that didn't play well with C++ compilation? Since it looks like cxx files are being generated instead of .c .

Submitted

No probs. I’m not sure how to force ECL’s build process to use plain C instead of CXX, but I might investigate later, ’cause again ECL looks to me like a very interesting option in terms of FFI with low-level libraries like SDL. I use Gentoo btw :) Same ECL version, 21.2.1.

Developer

I forgot what we are allowed to do with

> (ext:install-c-compiler)
> c:*cc*
"gcc"
> (setf c:*cc* "g++") ;and vice versa? Can we do it?

Something I learned from this jam was definitely the value of kinda known-working templates like you made, since it's a bit scattershot what's going to work on how-old what-distribution of linux !

On my recent phlog I speculated about targetting gentoo ebuild(1) / openbsd ports(7) for distribution in the future, since I don't like the style of every-program-with-its-own-redundant-deps-in-its-own-chroot dependency bundling.

Submitted (3 edits) (+1)

Oh I tried setfing c:*cc* but looks like the errors are the same:

;;; Internal error:
;;;   ** Error code 1 when executing
;;; (EXT:RUN-PROGRAM "gcc" ("-I." "-I/usr/include/" "-D_GNU_SOURCE" "-D_FILE_OFFSET_BITS=64" "-march=native" "-mtune=native" "-O2" "-fomit-frame-pointer" "-pipe" "-ggdb" "-fPIC" "-D_THREAD_SAFE" "-Dlinux" "-O2" "-c" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx" "-o" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.o")):
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L2set_color(cl_narg, cl_object, cl_object, cl_object, ...)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:114:34: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   114 |   value0 = SDL_SetRenderDrawColor(renderer, ecl_to_int(v1r), ecl_to_int(v2g), ecl_to_int(v3b), ecl_to_int(v4a));
;;;       |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;       |                                  |
;;;       |                                  int
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L3fill_rectangle(cl_object, cl_object, cl_object, cl_object)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:136:26: error: taking address of rvalue [-fpermissive]
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:135:22: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   135 |    SDL_RenderFillRect(renderer,
;;;       |    ~~~~~~~~~~~~~~~~~~^~~~~~~~~~
;;;       |                      |
;;;       |                      int
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~An error occurred during initialization:
COMPILE-FILE-ERROR while
compiling #<cl-source-file "jam-no-theme" "jam-no-theme">.

Yeah, I’ve learned importance of pre-developed scaffolding the hard way, on Lisp Game Jam 2019 :)

I don’t like the style of every-program-with-its-own-redundant-deps-in-its-own-chroot dependency bundling

I feel you bro, I don’t really like AppImage as well, but haven’t stumbled upon better alternatives. Unfortunately not all people use Gentoo or *BSD :)

Guix looks interesting though, since it could be installed on top of any distribution, but I haven’t had the time to dig deeper into it.

Developer (2 edits) (+1)

In about 10 hours from now I'll write some smaller ecl programs (compile ecl at all, link against sdl2, open an sdl2 window, render an sdl2 window and a few other singular ecl compilation tests/examples. For now, I sleep.

Developer(+1)

By the way everyone else, Andrew and I eventually debugged this. Andrew's Gentoo flavor had an experimental USE flag that had affected ECL, but would have required I use more idiomatic C++ rather than C for the OS-facing stuff or something I think.

Submitted

[vito@fedora Downloads]$ ./jam-no-theme-linux-amd64 
./jam-no-theme-linux-amd64: error while loading shared libraries: libecl.so.20.4: cannot open shared object file: No such file or directory [vito@fedora Downloads]$ ecl ECL (Embeddable Common-Lisp) 21.2.1 (git:UNKNOWN) Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya Copyright (C) 1993 Giuseppe Attardi Copyright (C) 2013 Juan J. Garcia-Ripoll Copyright (C) 2018 Daniel Kochmanski Copyright (C) 2021 Daniel Kochmanski and Marius Gerbershagen ECL is free software, and you are welcome to redistribute it under certain conditions; see file 'Copyright' for details. Type :h for Help.   Top level in: #<process TOP-LEVEL 0x7f26e92aaf80>. >
[vito@fedora Downloads]$

It seems like installing ECL is not enough to run the binary, I'm trying the src way.

Developer (1 edit)

Edit: Rereading the screenshot, oh, major version change. This is what I get for even having a debian bullseye VM

Hmmm, interesting. Should I upload that .so ? kind of obtuse though. Thanks for investigating ! Hopefully ASDF works readily in the lisp case !

btw, my Google Chrome environment couldn't  run your cat maze javascript, but I have lots of things blocked and deactivated. I was waiting until tomorrow to start building things !

Submitted(+1)

I made it! It's running!

my Google Chrome environment couldn't  run your cat maze javascript, but I have lots of things blocked and deactivated


I think the delicate WebAssembly version won't run even a few of things blocked and deactivated, maybe a incognito window could help, or maybe not.

Submitted(+1)

I just added a "Binary for Browser: WebAssembly + JavaScript"  download, maybe download that pack and serve it locally could solve the itch.io iframe + cross-origin + hwcdn.net thing, or maybe not.  

;-P

Developer

Nice, good exploration. Haha, my signature background.