01 / Investigation & research · Unreal prototype
LastKnown
A plate becomes a record. A record becomes a place worth checking.
LastKnown is a first-person investigation prototype built around an operations environment: registry terminals, linked evidence, a city map table and radio information. The central fantasy is research—turning incomplete information into a useful lead.
01 / Actual game systems
One set of references, several surfaces.
BuildCaseForSeed selects person, vehicle plate and canonical city-location references from a seeded stream. BuildEvidenceSurface validates those references, builds registry records and resolves the location to a city point. On success, it assigns the case owner and address to its record copies.
The DMV and people widgets both construct the seed-1001 evidence surface. That provides a concrete shared example across interfaces. It is a deterministic evidence demonstration, not an unlimited procedural narrative engine or general relational database.
02 / Registry terminals
The lookup matters because it connects information.
The vehicle widget normalizes a plate search, checks its case records and can synthesize a record for another accepted plate. The record builder uses a CRC-derived seed, a vehicle catalog and addresses from the canonical city. Fields include license plate, registered owner, vehicle color, address, registration status and notes.
People records have a separate name-based builder. The case evidence surface supplies its associated address; generic generated people do not universally receive one. These are fictional game registries, with no connection to a real police or government service.
03 / A physical map
Keep the evidence attached to its place.
LastKnownMapViewComponent implements pan, zoom, drawing, erasing and map tokens through controller input paths. City coordinates are fitted to the table surface. Stroke clipping keeps annotations within bounds, while panning shifts stored strokes and tokens with the city underlay.
The shared city layout gives records spatial context. It does not establish a fully explorable city, traffic simulation or live suspect tracking.
04 / Local image generation · integration code
A registry photo without blocking the game thread.
DMVPhotoGeneratorSubsystem queues work on an FRunnable worker. A prompt-aware disk cache can reuse an existing PNG; otherwise a local stable-diffusion.cpp child process generates the image. The worker decodes the PNG and schedules delivery on the game thread, where the subsystem makes the texture available to the registry.
- Registry requestNormalized plate + vehicle description
- Serialized worker queueCheck disk cache using subject + prompt hash
- Cache hit → reuse PNGCache miss → local stable-diffusion.cpp CLI with seeded input → output PNG
- Decode image pixelsReturn success or failure to the game thread
- Registry photographReady texture displayed through a Slate brush; placeholder while pending or failed
The code handles missing executables, child-process exit and timeouts. Model setup, successful generation, latency and packaged-build completeness have not been verified here. The documented CPU retry currently passes the same configured backend again, so a working CPU fallback is not established.
05 / Radio · local AI experiment
From generated text to a voice on the desk.
A game-instance subsystem starts a persistent localhost llama server and sends HTTP/JSON requests. The portophone component processes the response, starts Piper for each speech request, decodes PCM16 WAV audio and applies radio coloration. A controller debug transmission path is connected; text output can reach the whiteboard.
- Radio prompt → localhost llama server
- Processed text → Piper child process
- WAV → PCM decode → radio coloration → playback
- Whiteboard text broadcast after successful speech generation
Weak object references and transmission IDs guard speech callbacks against stale work. Keeping model language consistent with trustworthy case facts remains an integration challenge; a complete reliable NPC conversation system has not been verified.
06 / The short portfolio adaptation
A useful lead, not a claimed solved case.
The desk you can play here uses authored case P-014: plate LK-42-09 links to Anna de Vries and Kadeweg 18. You match both street and number on a schematic map. The fixture values, dispatch, map layout, progressive sequence and project reveal were created for this portfolio. They are not the output of the Unreal case generator or a literal mission from the game.
The native project contains a resolution evaluator, but a connected player-facing submission/solve loop remains unverified. The browser only records a follow-up lead. Its fixed data demonstrates consistent references without running the original C++ generator, local AI or a live database.
07 / Engineering & development record
Different interfaces, shared state, uncertain timing.
Visible challenges include switching input between first-person movement and world-space text entry, fitting and clipping map annotations, keeping generated photographs aligned with record descriptions, and managing child processes and callbacks across object lifetimes. Unreal C++, UMG/Slate, procedural meshes, HTTP/JSON, ImageWrapper and background work all appear in the implementation.
Source and contribution notes
Static source inspection, September 2026: InvestigationCase.cpp, InvestigationEvidenceSurfaceBuilder.cpp, progress/briefing code, DMV and people records/widgets, LastKnownMapViewComponent.cpp, controller bindings, DMVPhotoGeneratorSubsystem.cpp, LastKnownLlamaServerSubsystem.cpp and LastKnownPortophoneComponent.cpp.
The source audit records changes by both MieskeB and cayden. It attributes persistent llama-server and radio changes at 971d3f33, plus map/whiteboard work, to cayden. This supports bounded contributions to those areas; it does not establish sole authorship of the project or every system described here. Unreal builds, inference and native automation tests were not run for this slice.
Reserved: operations-desk screenshot and gameplay footage; paired evidence/registry captures; map annotations; generated DMV vehicle examples with model/backend provenance; annotated C++ excerpts. No substitute gameplay media is presented here.