#+TITLE Community Garden * About Community Garden is a simple multiplayer gardening simulator designed as a tech demo for Spritely Goblins. * Building Community Garden relies on some bleeding edge software and currently requires Guix to setup the build environment. Assuming Guix is installed, simply run =guix shell= within the directory containing this README. To build, run: #+BEGIN_SRC sh ./bootstrap ./configure make #+END_SRC * Running Community Garden is split into two programs: =host-garden= and =join-garden=. Networked multiplayer is achieved using the Tor network. ** Starting the Tor daemon Community Garden requires a locally running Tor daemon. See https://docs.racket-lang.org/goblins/captp.html#%28part._.Launch_a_.Tor_daemon_for_.Goblins%29 for instructions on setting that up. ** Starting the host program The =host-garden= program creates a new garden that other people can join. It takes a garden name and the host's name as arguments. #+BEGIN_SRC sh ./pre-inst-env host-garden "Spritely Community Garden" "Alice Gardiner" #+END_SRC Upon successful startup, you should see a graphical window with a basic garden editing interface, and an OCapN URI in the terminal output. This URI is what needs to be shared for those that wish to join the garden. The terminal will also display an event log as players join, edit, and leave. Please note that there is no persistence layer in this demo. When the host program is closed, the garden's state is gone. ** Joining a garden The =join-garden= program is used to join a garden created with =host-garden=. It takes the remote gardener's name and an OCapN URI as arguments. #+BEGIN_SRC sh ./pre-inst-env join-garden "Lemmy Diggit" ocapn://s.onion.foo/bar #+END_SRC Please note that Tor onion services can be very slow to start, so the initial connection may take awhile.