Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Who is doing Common Lisp and How?

A topic by screwtape created 10 days ago Views: 1,427 Replies: 10
Viewing posts 1 to 5
Submitted (6 edits)

Who else is using ANSI CL? If you will forgive my laziness to sift through everyone, could people chime in about their CL game and where they’re devloging?

I guess I am using my NicCLIM starting with my somewhat late initial devlog: Mastodon toot: https://gamerplus.org/@screwlisp/115476828348071343

Devlog 0: https://screwlisp.small-web.org/lispgames/actual-game-gamejam/

My NicCLIM is really just the clim 2 spec’s formatting-table macro and McCLIM as such. I am trying out writing reuseable #codeTooting toots as a style, so the four zones/maps of my game initially were the REPL commands:

;; Make map:
'grass-clearing.map
'(12 8)
'(grass)
;; (to "§")

;;peek:
'grass-clearing.map
;; (to «†»)

'solid-rock.map
'(12 8)
'(solid rock)
;; (to "§")

'solid-rock.map
;; (to "†")

'rock-cavern.map
'(12 8)
'(rock cavern)
;; (to "§")

'(solid-rock.map rock-cavern.map mountain-cave.map)
'(1 3 2 4) ; argh y1 y2 x1 x2
;; (to "‡")

'mountain-cave.map
;; (to "†")

Anchored to the toots in that thread:

# «§»  (to ".§")

https://gamerplus.org/@screwlisp/115476875141207449

# «†»  (to ".†")

https://gamerplus.org/@screwlisp/115476882368216801

# «‡»  (to ".‡")

https://gamerplus.org/@screwlisp/115476901608166443

So you would enter three values one by one into the repl, and then the toot jump consumes those values. DM joked that I had independently rediscovered forth, which is a lisp tradition I think. The anchors are Edrx’s eev emacs style. https://anggtwu.net/#eev

(+1)

Now that you've done the hard part, next, this is obviously a footnote generator, so just toss out some code to generate semantically meaningful footnotes. Bonus points for doing that with a CL expert system instead of an LLM. Then extend it (whichever way you go) to generate (accurate) bibliographic references.

Submitted

Ah, yeah. If I had not-just-seven-days I wanted to particularly implement Pitman’s https://dspace.mit.edu/handle/1721.1/5619 which basically was a lisp machine system like that. This jam I will see how things as they are now evolve and get insights like yours.

Submitted (1 edit)

Continuing the spirit of my above extraction-of-the-code from my 1th https://screwlisp.small-web.org/lispgames/the-other-threeish-checkmarks/ jam devlog, here is what happened, I guess. Use your imagination and/or emacs for the eev-mode tooling.

All new repl lines:

;; «🎭» (to “.🎭”)
(setf (get ** :bitmap) *)

'SOLID
'IMGS/SOLID.PNG
;; (to "🎭")

'ROCK
'IMGS/ROCK.PNG
#.+++

'TREE
'IMGS/TREE.PNG
#.+++

'GRASS
'IMGS/GRASS.PNG
#.+++

'LAMBDA
'IMGS/LAMBDA.PNG
#.+++

IMGS/*.PNG were:

;; «🚪» (to “.🚪”)
`(lambda
     (&rest r)
   (execute-frame-command
    *application-frame*
    '(com-change-map ,*)))

'grass-clearing.map
;; (to "🚪")

#|Output:
(LAMBDA (&REST R)
  (EXECUTE-FRAME-COMMAND
   *APPLICATION-FRAME*
   '(COM-CHANGE-MAP GRASS-CLEARING.MAP)))
|#
(execute-frame-command
 *nic*
 `(com-set-cur1 ,*))
(execute-frame-command
 *nic*
 `(com-cur1-rotatef))

(This lambda was useable inside-the-map to go-through-the-door to another map in a messy looking way; but later it will just be the one game movement action)

Submitted

2th devlog: Basically a retrospective on the first two devlogs and a deeper self experiential examination of tagbody-go centric programming today. Oddly many thousands of words.

https://screwlisp.small-web.org/fundamental/a-prog-feature/

Submitted (1 edit)

3th devlog:

Implementing radio selection windows popups. I really like having these at hand. It even seems to be a missing feature in modern OSes/DEs in my opinion.

https://screwlisp.small-web.org/lispgames/com-popup/

Radio selections for active interaction by the user.

Submitted

Aside, there was this conversation on the Mastodon about gamedev by various people with decades in the subject: https://gamerplus.org/@screwlisp/115501448005940820

Submitted (1 edit)

Okay! I jammed out the last piece of game mechanics

  • keyboard arrowkeys are movement
  • can’t walk through any symbol in impassable
  • if you walk over something with a :radio-choices, it pops up the radio selector with your text and pictures (and notes your choice in cursor cur2

Per the article, I am really hoping anyone who wants to, and either is or is not jamming themselves so far contributes an s-expression “map” to our dungeons of unix_surrealism lisp doom

https://screwlisp.small-web.org/lispgames/game-movement/

A map is an s-expression file like this:

(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	
(WALL)	NIL	NIL	NIL	NIL	NIL	(WALL)	
(WALL)	NIL	NIL	NIL	NIL	NIL	(WALL)	
(WALL)	NIL	NIL	(EXAMPLE)	NIL	NIL	(WALL)	
(WALL)	NIL	NIL	NIL	NIL	NIL	(WALL)	
(WALL)	NIL	NIL	NIL	NIL	NIL	(WALL)	
(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	(WALL)	

Radio choices are like you see in the article. Pictures are symbols with a :bitmap property image path. If you ask me here I will help you coauthor this with me.

https://analognowhere.com/ art theme/source for the jam game.

Submitted

In which I actually make a level for my NicCLIM map editor game like I am asking other people to join my jam submission by doing for/with me this final weekend!

https://screwlisp.small-web.org/lispgames/making-one-nicclim-level/

i.e. me making

(SKY)	(SKY)	(SKY SUN)	(SKY)	(SKY)
(HORIZON)	(HORIZON TREE)	(HORIZON PUFFY)	(HORIZON)	(HORIZON)
(GROUND)	(GROUND OPENBLADE)	(GROUND MAGE)	(GROUND PENGUIN)	(GROUND)
(GROUND)	(GROUND SODA)	(GROUND BAG)	(GROUND)	(GROUND)
(GROUND)	(GROUND)	(GROUND)	(GROUND)	(GROUND)
Clobber SKY-GROUND? y/n  (Y or N) y

out of https://analognowhere.com/techno-mage/stranded/

with my extraction thereof being kindly licensed for lispgamejam compatible reuse by prahou.

Submitted

Done and dusted! https://itch.io/jam/autumn-lisp-game-jam-2025/rate/3822491

I am looking forward to debugging it running with you. Running it after downloading and extracting the assets is literally

(ql:quickload :McCLIM)
(compile-file "~/Downloads/nicclim.lisp")
(load "~/Downloads/nicclim.fas")
(in-package :nic)
(compile-file "~/Downloads/unix-surrealism-jam.lisp")
(load "~/Downloads/unix-surrealism-jam.fas")

(uiop:chdir "~/GAME")
(uiop:chdir "~/GAME") ; not a typo
(load "LEVELS/LEVEL-1-STRANDED.LISP")
(load "LEVELS/LEVEL-2-WALL-RADIO.LISP")
(enclose-map 'TECHNO-MAGE/STRANDED.MAP)

Whence (watch the animated gif video on my blog) / get from the itch submission

Submitted

Article in which I make-my-own-map-as-a-player-of my unix-surrealism-jam. In particular I make a map that is too big to fit on the screen, change it to have a this-jam-movement-radio-choice to move from the edge of the left map onto the right map, put pictures in. I made a white writing graphic, so I put the penguin from https://analognowhere.com/ in the cell behind it so you can kind of see it since the gui is lightfield.

https://screwlisp.small-web.org/lispgames/my-common-lisp-game-jam-self-experience/