Skip to main content

Panda3D C++ extension module

Project description

Panda3D Pipes

"The internet is a series of pipes" — Some guy, probably.

NOT PRODUCTION READY. HEAVILY EXPERIMENTAL

A networked distributed-object framework for Panda3D built on top of Steam networking sockets. It provides authoritative server snapshots with delta compression, client-side interpolation, zone-based interest management, and a DC (distributed class) schema for defining replicated object fields — all driven by a tick-based simulation loop.

The original foundation of Panda3D pipes is based on the work of Brian Lach from the Panda3D player project.

Features

  • Snapshot replication — The server captures the state of every distributed object each tick and sends delta-compressed snapshots to clients. Only changed fields are transmitted.
  • Client-side interpolation — Templated C++ InterpolatedVariable types (float, Vec2/3/4, Quaternion) record value history and interpolate smoothly between received snapshots using linear or Hermite curves, with configurable extrapolation.
  • Zone-based interest — Clients subscribe to zones; the server only sends object data for zones a client cares about.
  • DC schema — Shared .dc files define the replicated fields, ownership rules (ownsend, clsend), and broadcast behaviour for each distributed class.
  • Distributed object lifecycle — Objects follow a well-defined lifecycle: Fresh → Generated → Alive → Disabled → Deleted, with separate client, server (AI), and owner views.
  • Clock drift correction — A drift manager keeps the client simulation clock aligned to the server tick using sliding-window offset averaging and configurable correction thresholds.
  • Ping / RTT tracking — Built-in ping protocol with a sliding-window average; per-client latency is available on both the server and client.
  • Per-client rate control — Update rate, command rate, and interpolation amount are individually negotiable per client.
  • C++ performance core — Snapshot packing, field unpacking (CClientRepository), frame management, packed objects, and math utilities are implemented in C++ and exposed to Python via Panda3D's interrogate system.
  • Steam networking transport — Uses Valve's SteamNetworkingSockets for reliable/unreliable messaging, NAT traversal, and optional Steam authentication.

Dependencies

  • Panda3D 1.10.14+
  • panda3d-steamworks — Python/C++ bindings for Steamworks networking
  • panda3d-toolbox — Runtime helpers used by the framework
  • Steam client running (required for Steam networking sockets)
  • CMake 3.16+, a C++ compiler, and Python 3.10+

Building

pip install .

This invokes the CMake / interrogate pipeline via setuptools to compile the C++ extension module (panda3d_pipes).

Set SETUPTOOLS_SCM_PRETEND_VERSION to control the wheel version if building outside of CI.

Quick Start

See the examples/ directory for a minimal client/server demo. In two terminals from the repository root:

# Terminal 1 — start the server
python examples/server.py

# Terminal 2 — connect a client
python examples/client.py

The server listens on port 27015, spawns avatars for connecting clients, and relays chat messages. The client connects, sends a greeting, and periodically moves its avatar.

Configuration

Configuration is done through Panda3D PRC variables. Key defaults:

Variable Default Description
pipes-tickrate 66 Simulation tick rate (Hz)
pipes-maxupdaterate 255 Max snapshot send rate per client
pipes-minupdaterate 1 Min snapshot send rate per client
pipes-max-clients 24 Maximum concurrent clients
pipes-snapshot-history 50 Snapshots retained for delta compression
pipes-password empty Optional server password
pipes-updaterate 20 Desired snapshot receive rate
pipes-cmdrate 100 Command send rate
pipes-interp 0.1 Interpolation buffer (seconds)
pipes-interp-ratio 2 Ratio applied to update rate for interp
pipes-ping-interval 0.5 Ping measurement interval (seconds)

The effective interpolation delay is max(pipes-interp, pipes-interp-ratio / pipes-updaterate).

License

This project is licensed under the BSD 3-Clause License — see LICENSE for details.

The Steamworks SDK is Copyright © Valve Corporation and is subject to the rules outlined at Distributing Open Source.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

panda3d_pipes-0.0.1.dev10-cp314-cp314-win_amd64.whl (284.0 kB view details)

Uploaded CPython 3.14Windows x86-64

panda3d_pipes-0.0.1.dev10-cp314-cp314-manylinux_2_39_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

panda3d_pipes-0.0.1.dev10-cp314-cp314-macosx_15_0_universal2.whl (205.0 kB view details)

Uploaded CPython 3.14macOS 15.0+ universal2 (ARM64, x86-64)

panda3d_pipes-0.0.1.dev10-cp313-cp313-win_amd64.whl (274.9 kB view details)

Uploaded CPython 3.13Windows x86-64

panda3d_pipes-0.0.1.dev10-cp313-cp313-manylinux_2_39_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

panda3d_pipes-0.0.1.dev10-cp313-cp313-macosx_15_0_universal2.whl (204.7 kB view details)

Uploaded CPython 3.13macOS 15.0+ universal2 (ARM64, x86-64)

panda3d_pipes-0.0.1.dev10-cp312-cp312-win_amd64.whl (274.7 kB view details)

Uploaded CPython 3.12Windows x86-64

panda3d_pipes-0.0.1.dev10-cp312-cp312-manylinux_2_39_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

panda3d_pipes-0.0.1.dev10-cp312-cp312-macosx_15_0_universal2.whl (204.4 kB view details)

Uploaded CPython 3.12macOS 15.0+ universal2 (ARM64, x86-64)

panda3d_pipes-0.0.1.dev10-cp311-cp311-win_amd64.whl (273.3 kB view details)

Uploaded CPython 3.11Windows x86-64

panda3d_pipes-0.0.1.dev10-cp311-cp311-manylinux_2_39_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

panda3d_pipes-0.0.1.dev10-cp311-cp311-macosx_15_0_universal2.whl (202.1 kB view details)

Uploaded CPython 3.11macOS 15.0+ universal2 (ARM64, x86-64)

panda3d_pipes-0.0.1.dev10-cp310-cp310-win_amd64.whl (273.6 kB view details)

Uploaded CPython 3.10Windows x86-64

panda3d_pipes-0.0.1.dev10-cp310-cp310-manylinux_2_39_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

panda3d_pipes-0.0.1.dev10-cp310-cp310-macosx_15_0_universal2.whl (202.6 kB view details)

Uploaded CPython 3.10macOS 15.0+ universal2 (ARM64, x86-64)

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e6c10972e236e76f02100dea6c12cf2547d624be62e0a4e73303803de9805a80
MD5 32bf4001c8dbdf2b895a9a443ff7b6f9
BLAKE2b-256 d0dcb3dc2ab29c132dda697e03bb0c9dac15f0a6cf394843f68fc3341a5eb5c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp314-cp314-win_amd64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 0b7567472b1f00973ab8b6708b1f39a4c3a9f3876dfc033bdca1e295a7208183
MD5 e54d36dcb2a44c858508435ee8039c28
BLAKE2b-256 45abb295e450e92f3e09fc2e04416b4409bff60be53e4fdd4fc3c6a38a9ae172

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp314-cp314-manylinux_2_39_x86_64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp314-cp314-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 851019e9e83a7d065021b3b5d715b47b2ed54523c2c01b9e08ba2cc3e1e19c1c
MD5 ba200f915178e98fdf2b2c42023e2b00
BLAKE2b-256 0d2c9cf66784e7b41bf15fa9c321bea0b93be49824129d4024abdfc05c5c817f

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp314-cp314-macosx_15_0_universal2.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6a1935e78d77ab07bc8a7911db07651910e53e09d283623eeb0a67dcde4fd215
MD5 4e17fe088d1f4b7e7e7485afc48ad1e3
BLAKE2b-256 5c0c187edf7766704f88513d867f45b683144015ed4f295890120697d1b44737

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp313-cp313-win_amd64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9a86b84b43b83723b795b4cbdb2a44ec8272ac519f995ef671d15f9328536a0a
MD5 c575dcfe34c4d6b629627f65038eae4a
BLAKE2b-256 33c6a4bda077bba8441bc3edceaaf8a234d49ce386c9efb1bdea98fe7d031272

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp313-cp313-manylinux_2_39_x86_64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp313-cp313-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp313-cp313-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 0a4aadbadffc2637e8ca71157ac1f950cb887610089de27146ae099e6e9c79d1
MD5 8270204140801578c6076160ed2aa4a4
BLAKE2b-256 3e344f319ef547333245fb5fb5fb595df23bc72cc0b9501164566f0f26c90969

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp313-cp313-macosx_15_0_universal2.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f8a6edc749816480f190329ff46db1d46931ab674be58d9fb39c23a798e30e1c
MD5 8a8f9405c3653102df4ee7334ffd9138
BLAKE2b-256 3d976d9e10bca6245752a8d23bbce8d44e04adbe421c64db771450fa459b05a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp312-cp312-win_amd64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 2b365046c8043f47c69de9266d0cb7a16c5df488b88e8f3fd4c31a378aac7637
MD5 31c9b13cbbe9d0f1364ce96a8c0bd847
BLAKE2b-256 0ed33f7635e1e571c38bd4b8a45aebe76f4680cff98360535846b6c20cd2b09a

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp312-cp312-manylinux_2_39_x86_64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 04d2c7bd7cb0ea68c7dbc5da94cae47f4ea49dc72e7d721ca2f3f4f55c1c697a
MD5 178d43e5e2eb7d90c1370f7f84978c23
BLAKE2b-256 c991513e319f1557d6b7986b6c4c11b3656b31242cc1712f2baac42cf318fdde

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp312-cp312-macosx_15_0_universal2.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 522de7726dd16e4d68957c78e90c83f608e8bbca93259890f4bf6d7d57e108e8
MD5 8ea033b0698ce84ccc76eba9938ca85b
BLAKE2b-256 cc226641a3f0f0f5e5695661db4b493159bd306262a183ad2921377625cd0a1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp311-cp311-win_amd64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a0f71e0375ef3de3f9f7a96fcff437252d45f680c88860accab19e7201530202
MD5 8daf3ff5405e9cf31859e75b2b3c2626
BLAKE2b-256 32737a141c791267dd04106cada2a397ffd6fa50495a47872d0e9ccb43d0eae8

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp311-cp311-manylinux_2_39_x86_64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp311-cp311-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp311-cp311-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 64b66c785454c8f50a569b26c1d9a1453902898e4c918cf1dfff02840a012544
MD5 4cf3833277256e9e6cd25ec0c482715f
BLAKE2b-256 f1df91dbc58080cb4b79c96fb25b48755ae0c1a236bb8e2e664896fa199f13c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp311-cp311-macosx_15_0_universal2.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7972c54f1db4ee9b61c8e4bfaa8f2c3defa2b1cddae648592ea9b8db77acfa10
MD5 196214dfc02013a3a0d0a0ab14984d7d
BLAKE2b-256 1de018e7b2e4f2acc42ca43c2a6286096eb750c27a27f6ce5986e68422002059

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp310-cp310-win_amd64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 ed16bb2877dd9cc6e992a3de152e9b7eb15326ae2d6c638448877d2f9b2ddba5
MD5 406a8db2bf212a48687496dbff471cd5
BLAKE2b-256 d754770c840642abe2af07fb9a2710f6a520e5100c5958bbb7d6b9092f988295

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp310-cp310-manylinux_2_39_x86_64.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panda3d_pipes-0.0.1.dev10-cp310-cp310-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev10-cp310-cp310-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 3c3de1234656defda3bf7460e88f121f5a93ebde373744ecfc181cb9e7e64bdd
MD5 29f9f58e0a6aebb26998174c131b0c02
BLAKE2b-256 c62c14576af2c19213620d7d3374e2c4372fc6f23a74032141bff1f224b42eef

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev10-cp310-cp310-macosx_15_0_universal2.whl:

Publisher: ci.yml on DigitalDescent/panda3d-pipes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page