Devcontainer and collab documentation

This commit is contained in:
Jakub 2026-04-26 15:55:05 +08:00
parent 9be1526cb1
commit 0a21a14033
2 changed files with 20 additions and 13 deletions

20
COLLABORATION.org Normal file
View file

@ -0,0 +1,20 @@
#+title: Collaboration
Imugi can be easily built without any local chicken scheme installation by using the devcontainer spec included in this repository.
* Using the Devcontainers CLI
First, run ~npm install -g @devcontainers/cli~ to install the devcontainers CLI tool.
This requires a working Docker installation, the steps to which can be found [[https://docs.docker.com/engine/install/][here]]. Also assign your user to the ~docker~ group to avoid having to use ~sudo~ with docker and devcontainer commands.
Once both of the above are installed, the devcontainer can be started with ~devcontainer up --workspace-folder .~ in the repository root. This will build a Debian Trixie container including all Chicken dependencies, and also build Raylib as a static library. We prefer to build with static linking in order to make distribution less annoying.
Once the devcontainer is running, enter it with ~devcontainer exec --workspace-folder . bash~. This will put you at the repository root.
* Running Tests & Samples
From the ~build~ directory, run ~csm -program <module>~ to build a particular module, the ~./<module>~ to run it.
Any module defined in the ~samples~ or ~test~ directory can be run like this, either to show an example game or to run tests for a particular engine module.
If you are running the devcontainer on an X11 Linux host, running the compiled module should forward the window to your hosts X11 display. YMMV for Wayland and non-Linux hosts.

View file

@ -184,16 +184,3 @@ Functions for evaluating the render queues. ~evaluate-render-queue~ evaluates a
(create-window process: (next-frame) close-predicate: (window-should-close?)) (create-window process: (next-frame) close-predicate: (window-should-close?))
#+end_src #+end_src
~create-window~ creates a window using the window parameters described above, sets the target frames per second, then enters a loop which runs the ~process:~ function (~next-frame~ by default) on each frame, unless ~close-predicate:~ (Raylib's ~window-should-close~ function by default) returns true, in which case the window is closed. ~create-window~ creates a window using the window parameters described above, sets the target frames per second, then enters a loop which runs the ~process:~ function (~next-frame~ by default) on each frame, unless ~close-predicate:~ (Raylib's ~window-should-close~ function by default) returns true, in which case the window is closed.
* Dependencies
The following Chicken dependencies are required:
- raylib
- SRFI-99
- SRFI-113
- SRFI-69
- csm
- SRFI-78
* Running
From the ~build~ directory, run ~csm -program test.engine .. && ./test.engine~ to run engine tests.