A package on ludic.base alone. DevlinkNet is the transport (a game binds Udp, the test a fake); DevlinkWorld's members are the verbs, each defaulting to "not offered" (err unbound): ping, hello (with Build.schema_hash as 16 hex digits), cam_get / cam_set / cam_release, goto, map_load, time, weather, shot, pause / resume / step. One request a frame, parsed in place from a fixed 8 KB buffer and answered into another; map_load, shot and step answer later by id, one at a time, 5 s at most. Loopback senders only, opened only when enabled() (dev_tools), co-op refuses everything but ping and hello. tests/devlink_test: each answer byte for byte, bad arguments, a stranger dropped, co-op, the late answers and their timeout, a closed build that never opens. Compiles; not run (the Master runs the package tests). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
9 lines
733 B
Markdown
9 lines
733 B
Markdown
bump: minor
|
|
type: feature
|
|
**`ludic.devlink`: an editor's live link into a running dev build** (protocol v1, frozen with Ludic
|
|
Studio). Loopback UDP through the `DevlinkNet` port, one request a frame parsed in place from one fixed
|
|
8 KB buffer and answered into another; every verb a `DevlinkWorld` member defaulting to "not offered":
|
|
`ping`, `hello` (the build's schema hash as 16 hex digits), `cam_get` / `cam_set` / `cam_release`, `goto`,
|
|
`map_load`, `time`, `weather`, `shot`, `pause` / `resume` / `step`, the slow three answered later by id.
|
|
A socket is opened only when `enabled()` says so (a game binds `dev_tools`), a sender off this machine is
|
|
dropped, and a connected co-op session refuses everything but `ping` and `hello`.
|