04 / 05 · 2023.07 — 2024.07
Guangzhou Chenchuang Technology Development Co., Ltd.
Backend and agent work on a simulation product line: the main business service, engine lifecycle management and multi-user co-editing of a battlefield-simulation platform in Go (Gin), plus Python integration with a C++ wargaming platform, red/blue agents and a live monitor.
- Role
- Python Developer
- Industry
- Simulation & wargaming (research software)
- Location
- Beijing
- Tenure
- 1 yr 1 mo
Key results
~100
Endpoints in the main business service, across 17 modules — models, entities, equipment, dictionaries, templates, scenario versions
38
Wargaming-platform integration interfaces wrapped over ZeroMQ + Protobuf
16
Entered agents deployed and evaluated (rule-based, ML, deep networks)
Projects here
PROJECTS · 22023.07 – 2024.07(1 yr) · Backend developer (Go / Python)
Battlefield Parallel Simulation System
The company's core product: a browser-based battlefield-simulation platform for research institutes. Users compose scenarios on a 3D digital globe, push them to a simulation engine with one click, and get live situation display, multi-user co-editing, recording/replay and effectiveness evaluation.
- Designed and built the main business service (Gin + MongoDB) in router/controller/service/model layers — 17 modules and about 100 endpoints covering models, entities, equipment, data dictionaries, templates and scenario versions
- Designed simulation-engine lifecycle management: dynamic port allocation, scenario export as engine input, process launch and registration via os/exec, goroutines that detect exit and reclaim resources — supporting several simulations in parallel
- Implemented multi-user scenario co-editing with a WebSocket hub and per-task rooms: separate read/write goroutines with heartbeat, a flattened scenario-tree index cache, and incremental command broadcast
- Built the operator service: scenario JSON → external simulation-engine XML conversion (3,000+ lines) and GeoJSON area/intersection/union computation; per-frame situation recording with pause, speed control and timeline replay
- Wrote the engine console in Go: connects to the scheduler over TCP, relays engine commands, and exposes HTTP endpoints to start, pause and resume a simulation
- Built a radar-signal generation service with Tornado + SciPy (chirp pulses, clutter, echoes), generated asynchronously on background threads and deployed with Docker
- Go
- Gin
- MongoDB
- MySQL
- Redis
- NSQ
- WebSocket
- Python
- Tornado
- SciPy
- Docker
System architecture
2023.07 – 2024.07(8 mos) · Python developer — agents and platform integration
Intelligent adversarial wargaming
A command-and-decision agent project for an unmanned air-sea scenario (island defence vs carrier strike group). A C++ wargaming platform adjudicates; on the Python side I built the platform integration, the red and blue agents and a live monitor of the engagement.
- Built the platform-integration layer over ZeroMQ (REQ + DEALER) and Protobuf, wrapping 38 interfaces — simulation control, unit/task/damage queries, routes, take-off, grouping; a runner drives the observe → decide → command loop at a fixed step and scores the outcome
- Red defence agent: staged decision-making — perception, information fusion, missile/gun/laser fire allocation, strike verification. Blue attack agent: multiple courses of action, drone-squadron launch and saturation strikes
- Deployed and evaluated 16 entered agents (rule-based, ML, deep networks), resolved dependency and runtime problems, dissected representative strategies and gave a tech talk
- Agent state is published over MQTT; built a PyQt5 live monitor with tabs for red/blue units and damage, plus per-round offline dumps for review
- Python
- ZeroMQ
- Protobuf
- MQTT
- PyQt5
- NumPy
System architecture
System data flow
Abstract sketch · no internal detailsScenario editor
Vue + Cesium · WebSocket co-editing
Gin main service
17 modules · ~100 endpoints
▲ My part
Operator service
Scenario JSON → engine XML
▲ My part
Engine console
Go · relays commands over TCP
▲ My part
Simulation engine
Run · situation feedback
3D display
Situation · replay
Team & daily life
Photos are shared with colleagues' consent, or other people's faces are blurred
What I learned here
On the simulation product line I wrote server-side Go for the first time: goroutines and a WebSocket hub for multi-user co-editing, os/exec to manage the simulation engine’s process lifecycle, and how to organise a service of about 100 endpoints into router / controller / service / model layers.
The other thread was Python integration with a C++ wargaming platform — agents and a live monitor on top of ZeroMQ + Protobuf. Deploying and evaluating 16 entered agents let me dissect representative rule-based, ML and deep-network strategies, and I gave a tech talk on them.
TECH STACK
- Go
- Gin
- Python
- Tornado
- MongoDB
- MySQL
- Redis
- NSQ
- WebSocket
- ZeroMQ
- Protobuf
- MQTT
- PyQt5
- Vue 2
- Cesium
- Docker