aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGene Pasquet <dev@etenil.net>2026-04-20 10:52:39 +0100
committerGene Pasquet <dev@etenil.net>2026-04-20 10:52:39 +0100
commit71bb4e8744e733477b9584443adbe8f920458be1 (patch)
treeef0d688400bd56decd2c5fd19421076f1c608859
parente0683e0463ea5664f846154bf0478ff0712e0e71 (diff)
refinement
-rw-r--r--Makefile31
-rw-r--r--README.org8
-rw-r--r--TODO.org5
-rw-r--r--downstroke.egg2
4 files changed, 22 insertions, 24 deletions
diff --git a/Makefile b/Makefile
index 4bd284a..ba0ce31 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,8 @@
.DEFAULT_GOAL := engine
+CSI ?= csi
+CSI_FLAGS := -I $(CURDIR) -I $(CURDIR)/bin
+
# Canonical release string for the tree — keep in sync with downstroke.egg and
# README v… markers (see bump-version).
VERSION := 1.0.0rc1
@@ -63,18 +66,18 @@ clean:
test:
@echo "Running unit tests..."
- @csi -s tests/entity-test.scm
- @csi -s tests/world-test.scm
- @csi -s tests/tilemap-test.scm
- @csi -s tests/physics-test.scm
- @csi -s tests/input-test.scm
- @csi -s tests/renderer-test.scm
- @csi -s tests/assets-test.scm
- @csi -s tests/engine-test.scm
- @csi -s tests/animation-test.scm
- @csi -s tests/prefabs-test.scm
- @csi -s tests/scene-loader-test.scm
- @csi -s tests/tween-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/entity-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/world-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/tilemap-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/physics-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/input-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/renderer-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/assets-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/engine-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/animation-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/prefabs-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/scene-loader-test.scm
+ @$(CSI) $(CSI_FLAGS) -s tests/tween-test.scm
# Run a single test file with optional name/group filtering (pytest -k style).
# make filter FILE=tests/physics-test.scm # whole file
@@ -82,10 +85,10 @@ test:
# make filter FILE=tests/physics-test.scm G=apply # groups matching regex
# Note: combining K/G with TEST_QUIET=1 hits a known bug in the `test` egg
# (modulo error in summary timing), so this target intentionally doesn't
-# expose Q. Use `TEST_QUIET=1 csi -s <file>` directly when you want quiet.
+# expose Q. Use `TEST_QUIET=1 $(CSI) $(CSI_FLAGS) -s <file>` when you want quiet.
filter:
@if [ -z "$(FILE)" ]; then echo "usage: make filter FILE=<test.scm> [K=name-regex] [G=group-regex]"; exit 2; fi
- @$(if $(K),TEST_FILTER='$(K)') $(if $(G),TEST_GROUP_FILTER='$(G)') csi -s $(FILE)
+ @$(if $(K),TEST_FILTER='$(K)') $(if $(G),TEST_GROUP_FILTER='$(G)') $(CSI) $(CSI_FLAGS) -s $(FILE)
demos: engine $(DEMO_BINS)
diff --git a/README.org b/README.org
index 1601e7d..a474ff7 100644
--- a/README.org
+++ b/README.org
@@ -45,7 +45,7 @@ The engine lives in this repository as modular Chicken units, with demos, docs,
| 11 | Package as Chicken egg (v1.0.0rc1) | rc |
| 12 | Macroknight ported to use the egg | pending |
-Milestones 1–6 were pure refactoring. Milestone 7 was the API pivot (=make-game=, =game-run!=, pipeline). Milestones 11–12 are packaging and proving the egg against macroknight. Finer-grained planning may live outside this repo (=CLAUDE.md= points to the extraction notes).
+Milestones 1–6 were pure refactoring. Milestone 7 was the API pivot (=make-game=, =game-run!=, pipeline). Milestones 11–12 are packaging and proving the egg against macroknight. Finer-grained planning may live outside this repo (for example in =downstroke.org= or macroknight's historical =TODO-engine.org=).
** Dependencies
@@ -70,9 +70,9 @@ make demos # build demo games (verifies they compile)
make clean # remove bin/
#+end_src
-Single test module:
+Single test module (from repo root; space after each =-I= is required by =csi=):
#+begin_src sh
-csi -s tests/physics-test.scm
+csi -I "$(pwd)" -I "$(pwd)/bin" -s tests/physics-test.scm
#+end_src
The canonical version string is =VERSION= at the top of the =Makefile=; it must match =((version "…")= in =downstroke.egg= and the =v…= marker in the milestone table. Bump all three with =make bump-version NEW=1.2.3= (POSIX =sed=; =NEW= must not contain =&=, backslash, or =#=).
@@ -85,7 +85,7 @@ Modules live at the project root. Each compiles as a Chicken unit (=csc -c -J -u
| Module | Responsibility |
|----------------+---------------------------------------------------|
-| =entity= | Plist accessors: =entity-ref=, =entity-set= |
+| =entity= | Alist accessors: =entity-ref=, =entity-set= |
| =tilemap= | TMX/TSX parsing (expat), tileset loading |
| =world= | Scene struct, entity list ops, camera |
| =physics= | Gravity, velocity, AABB tile + entity collisions |
diff --git a/TODO.org b/TODO.org
deleted file mode 100644
index c09e063..0000000
--- a/TODO.org
+++ /dev/null
@@ -1,5 +0,0 @@
-#+SEQ_TODO: TODO(t) DOING(o) | DONE(d)
-* Downstroke TODO
-
-** TODO change exports so that imports follow the chicken convention: =(import (downstroke engine))=
-** DOING Debug flattening prefabs and mixins with things like compose-prefab that result in duplicate keys
diff --git a/downstroke.egg b/downstroke.egg
index 7327924..0f66bcd 100644
--- a/downstroke.egg
+++ b/downstroke.egg
@@ -32,7 +32,7 @@
(component-dependencies downstroke.entity downstroke.world))
(extension downstroke.engine
(source "engine.scm")
- (component-dependencies downstroke.renderer downstroke.world downstroke.input downstroke.assets downstroke.animation))
+ (component-dependencies downstroke.renderer downstroke.world downstroke.input downstroke.assets downstroke.physics downstroke.tween downstroke.animation))
;; Link SDL2_mixer explicitly so downstroke.mixer.so lists libSDL2_mixer in
;; DT_NEEDED; otherwise Mix_* symbols can be undefined at dlopen time.
;; csc requires "-L" before "-l..." so the flag is passed through to the linker.