Thank you for unintentionally making it possible! ☺
ArneBab
Creator of
Recent community posts
A takeaway from this jam: most games written with Hoot worked really well and were convenient to use. The few exceptions were due to input handling, for example a game written for a gamepad not working at all without one (because no non-gamepad buttons were recognized).
So maybe that’s an area that could use some polish in defaults (for example by including a default set of keys to start the game with in the template).
The screenshots look like a really cool idea, but I didn’t get it to run (so I abstained from voting):
[LWJGL] GLFW_VERSION_UNAVAILABLE error
Description : GLX: Failed to create context: GLXBadFBConfig
Stacktrace :
org.lwjgl.glfw.GLFW.nglfwCreateWindow(GLFW.java:2086)
…
Exception in thread "main" java.lang.IllegalStateException: Unable to create the GLFW window
…
at foldl.core.main(Unknown Source)
I also tried different Java versions, but couldn’t fix that. Likely a problem on my side …
I can now reproduce the blocking by just opening the game in 30 tabs. Then it slows to a crawl and in some tabs freezes mid sentence for up to a few dozen seconds.
Aside: the server is the result of asking “can I just wire stdin and stdout to a websocket to bring these terminal games into the browser”. ☺ I now also wire stderr to the websocket (that’s how the commands to show images and play music or sound effects are realized).
So this is a hack to bring interactive fiction games that usually run on the terminal (and can be tested there efficiently) to the browser. As one of the next steps I want to add a dedicated GUI with chickadee so the download-version can provide a look that’s closer to interactive fiction games built with Ren’Py. I’ll see how far I can push it. Though I’m moving slowly: too much other stuff at the same time. And there’s optimization left to do: fibers can do a million userspace threads at the same time, but a thousand microsleeps per second are currently costly.
Packages would likely be good, yes.
But about the impression: the jam nicely shows the breadth of lisp – including the point that people can adjust their environment to be just what they need (but that it’s then sometimes hard to go back to preparing that from scratch).
Making that easier to build from scratch would still be great!
Then it may have also just been that my server was overloaded. This is running on the weakest VPS I could find (officially with one CPU core, but I expect that it shares that) and some fixes I did to synchronize art display and output unexpectedly drove up the CPU load (not in a way I could debug during the jam). If more than a few dozen people started to test it at the same time, it could have just been overloaded. The code is pushing the schedulers of guile-fibers far outside their comfort zone with tons of microsleeps and I still need to tone that down a bit again. So that it recovered likely means that it wasn’t the network but just the combination of inefficient code-paths and the too weak server.
In the terminal you actually get blocky versions of the images, if you have catimg installed ☺
(but yes, the images look better in the browser: ./terras-heritage.w –server gets you that version running locally)
Thank you again for the report!
I’m glad you enjoyed it!
The artist of the high quality logo is Katharsisdrill ( https://katharsisdrill.art/ ) – lots of dark art, much of it too dark for my taste, and some absolute gems. I think that’s what you get when the artist isn’t holding back. All of them are cc by licensed.
Thank you for the report! Do you mean that it was extremely slow at the beginning and got better after 5 minutes?
I sadly can’t reproduce it. The text speed is not due to your computer but purely generated from the server: text is sent letter by letter via websocket, so I wonder whether that’s cross-continent latency and there’s some locking I don’t take into account yet. The server’s in Germany - are you in the US?
To replay you can also download the source, then you can run it on the terminal ( if you have guile installed, ./terras-heritage.w should work ).
This is really neat! The sliding option is a great fit for the speed.
I’m only in the first upstairs level and saw in the devlog that there’s a lot more to see, but my first takeaway is that I’m mightily impressed!
One thing that almost led me to think it didn’t work is that I couldn’t hit “any key”, but had to hit xza or s to start the game.
(maybe you could add a note about that so others don’t fall in the same trap)
Thank you for sharing.
Next entries in Terra’s Heritage devlog – it’s the last day of the game jam:
Day 9: first scene works, thoughts about zero downtime update https://www.draketo.de/kreatives/terras-heritage-devlog#day-9-first-scene-update
Day 8: job and family and being terrified and procrastinating https://www.draketo.de/kreatives/terras-heritage-devlog#day-8
Day 7: minimal polish https://www.draketo.de/kreatives/terras-heritage-devlog#day-7-polish
Day 6: music and accessibility https://www.draketo.de/kreatives/terras-heritage-devlog#day-6-music-accessibility
This is really neat! I’m struggling with really understanding the card system (I’m not sure why I was successful in the first levels), but the game just works and got me to keep playing several levels.
(I’m sorry for only testing now; I fell ill just before the weekend I wanted to use for testing games and was in pretty deep mental overload in the months since)
Looks pretty interesting. Firstoff: It worked, showing a chat in the browser with other people in it.
When moving to the ?Arcade and then moving back to the ?Lobby, I got an error:
Uncaught exception in task: In fibers.scm: 172:8 4 () In goblins/actor-lib/io.scm: 56:10 3 () 87:14 2 (_ ) 87:14 1 ( _) In ice-9/boot-9.scm: 1676:22 0 (raise-exception _ #:continuable? _) ice-9/boot-9.scm:1676:22: In procedure raise-exception: Wrong type to apply: #f
;; === Caught error: === ;; message: #<<message> from-vat: #<procedure connector args> to: #<local-object ^read-write-io> resolve-me: #f args: (write #<procedure 7f8021130b40 at fantasary/web-client.scm:654:10 (resource)>)> ;; exception: #<&compound-exception components: (#<&error> #<&origin origin: #f> #<&message message: “IO access halted!”> #<&irritants irritants: ()> #<&exception-with-kind-and-args kind: misc-error args: (#f “IO access halted!” () #f)>)> In goblins/core.scm: 1124:9 2 (_$ #<local-object ^read-write-io> (write #<procedure?>)) In goblins/actor-lib/io.scm: 149:14 1 (halted-beh . _) In ice-9/boot-9.scm: 1676:22 0 (raise-exception _ #:continuable? _)
… and many more like this.



