summaryrefslogtreecommitdiff
path: root/README.md
blob: 3f0e71c29801b851f26967d524c668bf4e46491a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Chickadee Game Template

This repository provides a template to use as a starting point for
making a new game using
[Chickadee](https://dthompson.us/projects/chickadee.html)!  It
includes all the autotools boilerplate so you don't have to worry
about that nonsense too much.

## Using Guix

We *highly recommend* using [Guix](https://guix.gnu.org/) to manage
your development environment.  Once Guix is installed, getting all of
the dependencies you need to develop is *easy*.  Just run `guix shell`
from the root directory of this repository and you'll be good to go!

## Building from source

Assuming Guile and Chickadee are installed on your system, a fresh
project can be built like so:

```
./boostrap.sh
./configure
make -j$(nproc)
```

After the build system is initialized, only `make` needs to be run to
recompile the Scheme modules.

## Running the game

To run the game from the source checkout, use the `pre-inst-env` wrapper script:

```
./pre-inst-env run-game
```

## REPL-driven development

After the game is launched, a Guile REPL server will be running on
port 37146.  We recommend using the
[Geiser](https://geiser.nongnu.org/) Emacs extension for connecting to
it using `M-x connect-to-guile`.  Once Geiser connects to the REPL,
the game can be modified while it runs!

## Bundling

If you are setup to produce redistributable bundles of Chickadee games
(see
https://dthompson.us/manuals/chickadee/Invoking-chickadee-bundle.html),
then you can use `chickadee bundle` to produce binary release bundles.
This is admittedly an area where things really do not "just work" as
they should, so do reach out for help if you need it.