A downloadable game for Windows and Linux

A sprint racing minigame created for the Spring Lisp Game Jam 2025. Uses Common Lisp as the implementation language. Published under the GPLv3. Similar mechanics to the bond racing minigames from SW: KotOR.

Try to hit boost pads and watch out for obstacles.

One very small track included... for now.

Controls:

Left Arrow: turn left
Right Arrow: turn right
R: reset

GitLab repository: https://gitlab.com/uthar/swooprace

Download

Download
SwoopRace.zip 1.7 MB
Download
SwoopRace-bin.zip 34 MB

Install instructions

Unpack the "bin" archive and run the standalone binary from the directory it's in.

Game can be built from source by the "build.lisp" script in the source zipball.

The "bin" archive also contains the assets needed to run the game.

Comments

Log in with itch.io to leave a comment.

I can’t run the game due to missing assets (cubemap desert night). I tried the binary and running source with sbcl.

Ah... sorry for the trouble. 

How are you starting the binary? It needs the 'asset' dir to be in the working dir (so ./racerdemo instead of e.g. ./build/racerdemo). 

In case of linux missing libraries, you could try running with wine64 ./racerdemo.exe.

Or, copying that asset dir from the 'bin' archive to the source dir should do the trick.  Also needs an SDL2 DLL (there's one from Debian in the bin zip).

Thanks for the suggestion. Unfortunately the windows binary with wine did not work; it had opengl errors.

When I tried running from source, I was missing the assets dir, but even with that added I get the same error as trying to run the linux binary.

Here’s the output, fyi:

boom
Unhandled SIMPLE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                    {1002C18003}>:
  519 is not defined as a value for enum type #<CFFI::FOREIGN-ENUM SDL2/EVENTS:EVENT-TYPE>.

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002C18003}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SIMPLE-ERROR "~S is not defined as a value for enum type ~S." {1004D771E3}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SIMPLE-ERROR "~S is not defined as a value for enum type ~S." {1004D771E3}>)
2: (INVOKE-DEBUGGER #<SIMPLE-ERROR "~S is not defined as a value for enum type ~S." {1004D771E3}>)
3: (ERROR "~S is not defined as a value for enum type ~S." 519 #<CFFI::FOREIGN-ENUM SDL2/EVENTS:EVENT-TYPE>)
4: (CFFI::%FOREIGN-ENUM-KEYWORD #<CFFI::FOREIGN-ENUM SDL2/EVENTS:EVENT-TYPE> 519 :ERRORP T)
5: (RACERDEMO::HANDLE-INPUT)
6: (RACERDEMO::FRAME 16)
7: (RACERDEMO::RUN)
8: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
9: ((FLET "WITHOUT-INTERRUPTS-BODY-3" :IN SB-IMPL::START-LISP))
10: (SB-IMPL::START-LISP)

Thanks for the stacktrace,

Looks like my bad - a bug in the lisp-side SDL bindings (missing event type). That's interesting... have to dig into SDL source how that can happen.

Do you have maybe some unusual hardware such as joystick/foot pedals? (Trying to see if such an event type could be coming from).

For now this could be the quickest fix (pushed that to gitlab too):

--- a/lisp/racerdemo.lisp
+++ b/lisp/racerdemo.lisp
@@ -95,7 +95,7 @@
   (let ((event (sdl2:make-event)))
     (unwind-protect
          (loop while (plusp (sdl2:poll-event event)) do
-           (let ((event-type (cffi:mem-ref event 'sdl2:event-type)))
+           (let ((event-type (ignore-errors (cffi:mem-ref event 'sdl2:event-type))))
              (handle event-type event)))
       (cffi:foreign-free event))))

The most unusual hardware I have is an old Logitech G13. I also have a Logitech G633 headset but, other than that, just a mouse and keyboard.

I pulled the latest source and it works! I hope it was helpful to learn about this bug :)