一键导入
run-test-client
Launch DCLPulseTestClient bot(s) against a Pulse server. Use when the user wants to run, start, or launch the test client / bot / load test.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Launch DCLPulseTestClient bot(s) against a Pulse server. Use when the user wants to run, start, or launch the test client / bot / load test.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Validate the full client↔server networking flow end-to-end — QUIC/UDP connect, DCL ECDSA handshake, movement, interest-managed state fan-out, and resync — by running two DCLPulseTestClient bots against a live server and cross-checking server logs, client logs, and per-transport Prometheus metrics. Covers ENet and WebTransport; WebTransport needs the extra cert/bind setup documented here. Use when asked to validate, verify, or smoke-test the end-to-end flow, especially over WebTransport.
Modify the Pulse wire protocol — add/change/remove messages, enums, fields, or quantization options in the .proto files and regenerate C# bindings. Use when the user wants to change the wire format, add a new Client/Server message variant, add or retune a quantized field, or otherwise touch the schema.
Add a defense against a specific network/protocol attack vector to Pulse — isolate protection in Hardening/ classes, wire it through config + metrics + docs, and verify with Rider inspections. Use when the user wants to add rate limiting, admission control, input validation, resource caps, replay protection, or any other server-side defense.
Add a new metric to the Pulse analytics layer — instrument, accumulate, snapshot, export to Prometheus, and display on the console dashboard. Use when the user wants to track a new server metric.
Stop running DCLPulseTestClient bots gracefully. Use when the user wants to stop, kill, disconnect, or shut down the test client / bots.
| name | run-test-client |
| description | Launch DCLPulseTestClient bot(s) against a Pulse server. Use when the user wants to run, start, or launch the test client / bot / load test. |
Run one or more headless test bots that connect to a Pulse game server.
Before launching, verify:
metaforge --version. If it fails, tell the user to install MetaForge and add it to PATH.DOTNET_ROOT="$HOME/.dotnet" PATH="$HOME/.dotnet:$PATH" dotnet run --project src/DCLPulseTestClient -p:GenerateProto=false -- $ARGUMENTS
If no arguments are provided, use the defaults (account enetclient-test, 1 bot, server 127.0.0.1:7777, spawn at Genesis Plaza -104, 0, 5).
| Argument | Default | Description |
|---|---|---|
--account=<name> | enetclient-test | MetaForge account name (or prefix when --bot-count > 1) |
--bot-count=<N> | 1 | Number of bots to spawn in the same process |
--ip=<address> | 127.0.0.1 | Server IP |
--port=<port> | 7777 | Server UDP port |
--pos-x=<float> | -104 | Spawn X |
--pos-y=<float> | 0 | Spawn Y |
--pos-z=<float> | 5 | Spawn Z |
--spawn-radius=<float> | 10 | Radius of the circle bots spawn on |
--dispersion-radius=<float> | 20 | Max wander distance from spawn origin |
--rotate-speed=<deg/s> | 90 | Idle rotation speed |
When --bot-count > 1:
<account>-0, <account>-1, ..., <account>-{N-1} (each auto-created via MetaForge)When --bot-count=1 (default): account name is used as-is, ESC key quits.
Run the command in the foreground so the user can see the bot console output (peer joins/leaves, emote events, resync requests). Each log line is prefixed with [accountName].
If the user passes custom arguments via $ARGUMENTS, forward them as-is after --. If they describe what they want in natural language (e.g. "run 5 bots on 10.0.0.5"), translate to the appropriate CLI flags.
When the user mentions a location by name, translate to position flags:
| Location | Flags |
|---|---|
| "genesis plaza" (default) | --pos-x=-104 --pos-y=0 --pos-z=5 |
| "world" or "realm" | --pos-x=0 --pos-y=0 --pos-z=0 |
brew install enet. On Windows: ensure enet.dll is in the output directory.metaforge account remove <name> then re-run to create a fresh account.