WIP breakout clone
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mil 809335c869 Initial commit 1 year ago
.gitignore Initial commit 1 year ago
README.org Initial commit 1 year ago
break.asd Initial commit 1 year ago
break.lisp Initial commit 1 year ago
objects.lisp Initial commit 1 year ago
package.lisp Initial commit 1 year ago
render.lisp Initial commit 1 year ago
scene.lisp Initial commit 1 year ago
utils.lisp Initial commit 1 year ago



Breakout clone with some future plans.

building, running

  • install quicklisp

  • place the repository in a directory listed in quicklisp:*local-project-directories*

  • start emacs and slime. SBCL is the only CL implementation tested.

  • run (ql:quickload :break) and switch to the :break package.

  • run (cepl:repl) to start CEPL

  • create a pad and assign it to *pad*

  • (run-loop) starts the game loop and (stop-loop) stops it. Consider not recompiling the functions while the loop is running because you'll lose access to the closure.

lisp libraries used and where to find them

CEPL (Documentation)

Lispy way to work with OpenGL

rtg-math (Documentation)

Lisp-side math library

vari and varjo (language documentation compiler documentation)

Shader language and its compiler

things to do

Note: DONE doesn't mean the subheading's content is irrelevant.

DONE Decouple coordinate system from rendering resolutionn

The playable are has is 320 x 240 in size. The size is defined in a global variable, and parts of the code that need it read it. Entity positions and sizes are not adjusted if the size changes, but otherwise it can be adjusted at runtime.

TODO Remove global variables

State relevant to any given scene should be possible to keep in an object representing the scene itself. All update methods should take the context as an argument, rather than accessing global variables defined after the methods.

TODO Add a menu system and a scene loader

A menu is a kind of scene.

Scenes should probably be on a stack so that you can push/pop them to arbitrary depths.

TODO Implement keybindings