25 lines
1.8 KiB
Org Mode
25 lines
1.8 KiB
Org Mode
* Minimal Fennel Love2D Setup
|
|
|
|
In a lead up to the annual [[https://itch.io/jam/autumn-lisp-game-jam-2018][Autumn Lisp Game Jam]] I thought I'd look into Phil Hegelberg's approach to last Aprils Jam, using [[https://love2d.org/][love2d]] in concert with [[https://fennel-lang.org/][fennel]]. Phil outlines his approach on his [[https://love2d.org/][blog]].
|
|
|
|
The first step is to see how fennel works as a standalone execution environment, then slowly integrate some of the love2d API.
|
|
|
|
This repo contains the minimal viable setup to get started with Phil Hegelberg's game design process, plus some additional libraries.
|
|
|
|
#+BEGIN_SRC bash
|
|
PROJECT=project-name
|
|
git clone https://gitlab.com/alexjgriffith/min-love2d-fennel.git $PROJECT
|
|
cd $PROJECT
|
|
rm -rf .git
|
|
#+END_SRC
|
|
|
|
* Phil's Modal Callbacks (PMC)
|
|
Phil Hegelberg's [[https://gitlab.com/technomancy/exo-encounter-667/][exo-encounter-667]] is structured using a modal callback system. Each game state has a mode and each mode has a series of specific callbacks.
|
|
|
|
If you design your game as a series of states in a very simple state machine, for example *start-screen*, *play* and *end*, with unidirectional progression, you can easily separate the logic for each state into state/mode specific callbacks. As an example, in order to have state dependant rendering that differs between start-screen,play and end you could provide a *draw* callback for each of those states. Similarly if we need state dependent logic and keyboard input we could provide *update* and *keyboard* callbacks. As you iterate you can add and remove callbacks and states/modes as needed with very little friction.
|
|
|
|
|
|
* Emacs Setup
|
|
Once you install the latest version of [[https://gitlab.com/technomancy/fennel-mode][fennel-mode]], you can run
|
|
=C-u M-x fennel-repl= followed by =love .= to launch a repl.
|