* 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