114 lines
4.1 KiB
Markdown
114 lines
4.1 KiB
Markdown
---
|
|||
|
|
name: Plugin Server Data Plan
|
||
|
|
overview: "Concrete work plan for the current V8 plugin (Plugin API 26): improve what we send via retail TeamSpeak (plugin commands + hub policy). No ServerLib app. No hybrid authority in v1. Inventory already in vergleichs.md."
|
||
|
|
todos:
|
||
|
|
- id: inventory-wire
|
||
|
|
content: "DONE — vergleichs.md inventories CEPOS, hub keys, used/unused API 26"
|
||
|
|
status: completed
|
||
|
|
- id: protocol-design
|
||
|
|
content: "Write doku design: versioned CE* plugin-command map + hub schema version (doc only, freeze wire rules)"
|
||
|
|
status: pending
|
||
|
|
- id: hub-schema-vnext
|
||
|
|
content: "Specify additive hub keys (feature flags, schema version) — clients read only"
|
||
|
|
status: pending
|
||
|
|
- id: implement-cemode
|
||
|
|
content: "First code WP: CEMODE (or equivalent) edge send on voice-mode change — one function, keep CEPOS"
|
||
|
|
status: pending
|
||
|
|
- id: wire-filter-intensity
|
||
|
|
content: "Optional follow-up WP: actually wire hubAudioFilterIntensity / FilterIntensity into PCM if still unwired"
|
||
|
|
status: pending
|
||
|
|
- id: whisper-experiment
|
||
|
|
content: "Later experiment only: requestClientSetWhisperList for admin overlay — not proximity"
|
||
|
|
status: pending
|
||
|
|
- id: no-serverlib
|
||
|
|
content: "Never revive ClientLib/ServerLib custom app in this workstream"
|
||
|
|
status: pending
|
||
|
|
isProject: false
|
||
|
|
---
|
||
|
|
|
||
|
|
# Current-plugin plan: better use of retail TeamSpeak (API 26)
|
||
|
|
|
||
|
|
**Locked product:** existing V8 DLL on retail TeamSpeak (`PLUGIN_API_VERSION 26`).
|
||
|
|
**Locked approach:** **A-only** — send/store more via TeamSpeak relay + hub description.
|
||
|
|
**Deferred:** hybrid voice authority, radio product, ServerLib custom app.
|
||
|
|
**Baseline inventory:** [`vergleichs.md`](../../vergleichs.md).
|
||
|
|
|
||
|
|
```text
|
||
|
|
Keep: Pos.txt -> CEPOS -> client proximity -> PCM/3D
|
||
|
|
Improve: cleaner peer messages + richer hub policy on TS server
|
||
|
|
Never: expect ts3server to compute who hears whom
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 0. Constraints (from live plugin)
|
||
|
|
|
||
|
|
| Can | Cannot |
|
||
|
|
|---|---|
|
||
|
|
| `sendPluginCommand` relay (CEPOS today) | Proximity math inside retail `ts3server` |
|
||
|
|
| Hub policy in root channel description | True packet drop for inaudible speakers |
|
||
|
|
| Client PCM + 3D as hearing | Trust client position as anti-cheat truth |
|
||
|
|
| Optional later: `requestClientSetWhisperList` overlays | Replace PCM with ServerLib routing |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. Work packages (ordered)
|
||
|
|
|
||
|
|
### WP0 — Inventory (done)
|
||
|
|
|
||
|
|
- CEPOS 56-byte layout, throttle/keepalive
|
||
|
|
- Hub `[GLOBAL]` / zones / races / defaults keys
|
||
|
|
- Used vs unused `TS3Functions`
|
||
|
|
- Documented in `vergleichs.md`
|
||
|
|
|
||
|
|
### WP1 — Protocol + hub design (doc only)
|
||
|
|
|
||
|
|
**Plugin commands (keep CEPOS wire-compatible):**
|
||
|
|
|
||
|
|
| Prefix | Purpose | When to send |
|
||
|
|
|---|---|---|
|
||
|
|
| `CEPOS:` | Position + voiceDistance (unchanged 56 B) | Throttled move + 1 Hz keepalive |
|
||
|
|
| `CEDRAIN:` | Wakeup (unchanged) | Internal |
|
||
|
|
| `CEMODE:` **(first new)** | Voice mode id + distance | On mode change only (edge) |
|
||
|
|
| `CEPING:` (later) | Seq / stale hint | Low rate |
|
||
|
|
| `CEAUTH:` (later) | Soft identity hint | On connect — still spoofable |
|
||
|
|
|
||
|
|
Rules: `sendPluginCommand` only; bounds-check; throttle; no secrets; unknown prefixes ignored.
|
||
|
|
|
||
|
|
**Hub schema (additive):** `SchemaVersion` + flags; missing keys = old defaults; clients read only.
|
||
|
|
|
||
|
|
### WP2 — First code change (Golden Rule: one function)
|
||
|
|
|
||
|
|
**Implement `CEMODE` only:**
|
||
|
|
|
||
|
|
1. On voice-mode change, send small plugin command (mode + distance).
|
||
|
|
2. Peers update without waiting for CEPOS keepalive.
|
||
|
|
3. Do not break 56-byte CEPOS.
|
||
|
|
|
||
|
|
Likely files: `ts3_cepos.c` / new cmd dispatch, `voice_modes.c`, `ts3_entry.c`, `doku/aenderungen/…`.
|
||
|
|
|
||
|
|
**Off-limits in WP2:** hub keys, whisper lists, filter wiring, radio, hybrid backend.
|
||
|
|
|
||
|
|
### WP3 — Optional: wire FilterIntensity if still unwired (ask first)
|
||
|
|
|
||
|
|
### WP4 — Optional: whisper-list admin overlay experiment (not proximity)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. Out of scope
|
||
|
|
|
||
|
|
- ServerLib custom app / `ts3-Testing` product
|
||
|
|
- Proximity inside retail `ts3server`
|
||
|
|
- Hybrid authority (unless reopened)
|
||
|
|
- Breaking CEPOS without compatibility plan
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. Success / test
|
||
|
|
|
||
|
|
- Two clients: mode hotkey → peer sees update via `CEMODE`; CEPOS distance still works; old clients ignore `CEMODE` and keep CEPOS.
|
||
|
|
|
||
|
|
## 4. Default on “go”
|
||
|
|
|
||
|
|
Implement **CEMODE** first.
|