OK, got Kawa Scheme to produce a nice enough GUI window, and I can make menus that work in it!
\o/
Still gotta get sprites working. There's kind of a lot of Scheme-calling-Java engineering in guiframe already.

Now I actually have to make decisions about the game. Kenney has an updated platformer set, but that requires me to design a platform level, which… ugh.

Might just make a dumb shooter. We all love Space Invaders, and there's the Land of Lisp comic…
#scheme #gamedev #lispgamejam

The classic Java developer experience is preserved, even through a Scheme translation layer.

Make a change, build. 99 errors. Take one down, pass it around, 99 errors left in the log.

This took fucking forever, and if I was smarter I'd've noticed AN HOUR AGO! that drawImage wants x1 y1 x2 y2, NOT x y w h; apparently it doesn't want to draw to the left of origin!

Game code: Super tidy and simple.
Impl code that has to talk to Java: FUCKING WHAT.

I don't show the real horrorshow stuff here, my <gui-panel> is an increasing pile of hacks.

The Timer & TimerTask shit is egregious. Couldn't get a lambda to replace the "Anonymous Inner Class" so had to do the full thing.

Extra little pile of hate for the spr binding in gui-sprite-find, since Kawa/Java can't guess at types worth a shit.

Every type annotation is a failure.
#scheme #gamedev #lispgamejam

Zoom!
(sorry for the file size, I'm too lazy to reencode it)
Little work today, got bouncing ship and missiles. Tomorrow, I steal^W draw a bunch of enemies! Art, my old nemesis!
#scheme #gamedev #lispgamejam

I have a screen full of enemies, who move implacably towards me, I can shoot at them and kill them… all good stuff! I had to make a diagram to remember how atan worked. I know, grade-school math but 95% of my work doesn't need geometry or trig! I'm lucky I remember this much.

What I can't work out is casting a goddamned string from (format) to a Java string so I can update a label! Fuck Java!

#kawa #scheme #gamedev #lispgamejam #java #justSayNo #notEvenOnce

Doing some dumb-ass casting got me back to a string which is an IString which converts to a Java String that AWT will accept, because any of that makes sense.

Made a few kills and then got swarmed (I'm the paper plane in the middle). So, tomorrow I replace the generic ships with some genre art.
#scheme #gamedev #lispgamejam

I want to draw my star background in game, not generic graphics frame. Obvs, apply g stuff!

Exception in thread "AWT-EventQueue-0" java.lang.IllegalAccessException: class gnu.expr.PrimProcedure cannot access class sun.java2d.SunGraphics2D (in module java.desktop) because module java.desktop does not export sun.java2d to unnamed module @4f612b26
at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392)

Guess not. Wrapping each func manually works. SIGH #JAVA

So now I have progressive stages, and moving star background! Started on art but aaaaugh. Art.

The colors are all variable to recreate 8-bit "monochrome" where it'd artifact several colors based on TV set RGB phosphors. (the alternative is more white pixels which is boring)

#scheme #gamedev #lispgamejam

Argument #1 'class java.lang.Class' to 'java.lang.Class.getResource(java.lang.String)' has wrong type (class) (expected: java.lang.Class)

#java #notEvenOnce #justSayNo

Submissions to Spring Lisp Game Jam 2025

itch.io

Did some code cleanup, moved sprites out of the guiframe so it's mostly pure Java GUI crap, game is mostly pure logic ("they come out at night, mostly").

Sprite object cleaned up pretty nice, pity it's a front-end to Java objects but I wouldn't object to a SchemeOOPS that did this.
#gamedev #scheme #lispgamejam

@mdhughes doesn't (as java.lang.String thingy) work?
@PaniczGodek I eventually got ::String in there and it accepted it, but it's baffling that a string is not a string.
@mdhughes i honestly don't understand why any type of modern programming ever makes anybody *have* to think about string formats or even encodings. why is no one talking about this?! i should write a sternly-worded letter, but i don't know to who