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.

38 lines
2.0 KiB

* Break
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
- [[https://github.com/cbaggers/cepl][CEPL]] ([[http://techsnuffle.com/cepl/api.html][Documentation]]) :: Lispy way to work with OpenGL
- [[https://github.com/cbaggers/rtg-math][rtg-math]] ([[http://techsnuffle.com/rtg-math/rtg-math-reference.html][Documentation]]) :: Lisp-side math library
- [[https://github.com/cbaggers/varjo][vari and varjo]] ([[http://techsnuffle.com/varjo/vari-reference.html][language documentation]] [[http://techsnuffle.com/varjo/varjo-reference.html][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