From 54db203e8632378bbad4a70a2981954a9942d53d Mon Sep 17 00:00:00 2001 From: STEINNI Date: Sun, 7 Jun 2026 10:44:28 +0000 Subject: [PATCH] untested collision/near miss detection, with prisms auto-refresh --- doc/prompts_blobs.txt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/doc/prompts_blobs.txt b/doc/prompts_blobs.txt index 8922ade..1aaa99b 100644 --- a/doc/prompts_blobs.txt +++ b/doc/prompts_blobs.txt @@ -11,3 +11,29 @@ The server-side of this API is served by the node daemon in p42api. p42api has a folder 'api' with one file / module per API service, they are all declared in and imported by api/index.js. Each module defines a mapping object, that contains all the complete urls served, http-method, and local handling method. +We are now focusing on P42 God Daemons (in folder p42GodDaemons). +Every daemon in there is connected to several Redis. At least one Arena redis, and one System Redis. +PUB/SUB channels are prefixed accordingly, following the configuration token "chansNamespace" +and anything outside the configured combination Redis host & port + chansNamespace is illegal. +In the future, there might be several different Redis (in mesh) serving the same chansNamespace. + +GPS Daemon is the global positionning system of the arena. +It holds the current position of every agent in the arena. +Agents change their 3D speed vector whenever they want by informing GPS (via the agentVectorChangeChannel) +A typical agent event looks like +{ "eventType": "change", "payload": { "newVector": { "x": 5, "y": -2.34, "z": 0 } }, "sender": "agent42" } +On every speed vector change, GPS computes the 4D worldline of the agent, +and scans all other worldlines to find those intersecting, or approaching less than a configurable distance. +Each collision/ near-miss is then registered. +As time passes, GPS fires events towards concerned agents based on this register. +On every speed vector change, this register is searched and all entries containing the agent changing its speed are deleted. +To speed-up and limit the intersection computations, we will take an approach using rectangular 4-prisms : +Each pair of wordlines to test for collision / near-miss is enclosed in a 4-prism of a certain configurable time-height (thus how far in the future we test), +and we just test for intersecting prisms. +Only if the prisms intersect do we compute the real minimal-distance and its time, that we keep in the register. +Comparing a pair of worldlines should be a separated method and the looping through all agents in a separated method as well. +The reason for this remark is to take provision for a future where I might want to paralellize this (instead of looping through), in a GPU. + + + +{ "eventType": "remove", "payload": { }, "sender": "agent42" } \ No newline at end of file