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.dev6-cp314-cp314-win_amd64.whl (273.8 kB view details)

Uploaded CPython 3.14Windows x86-64

panda3d_pipes-0.0.1.dev6-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.dev6-cp314-cp314-macosx_15_0_universal2.whl (194.9 kB view details)

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

panda3d_pipes-0.0.1.dev6-cp313-cp313-win_amd64.whl (265.4 kB view details)

Uploaded CPython 3.13Windows x86-64

panda3d_pipes-0.0.1.dev6-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.dev6-cp313-cp313-macosx_15_0_universal2.whl (194.9 kB view details)

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

panda3d_pipes-0.0.1.dev6-cp312-cp312-win_amd64.whl (265.3 kB view details)

Uploaded CPython 3.12Windows x86-64

panda3d_pipes-0.0.1.dev6-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.dev6-cp312-cp312-macosx_15_0_universal2.whl (194.6 kB view details)

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

panda3d_pipes-0.0.1.dev6-cp311-cp311-win_amd64.whl (264.5 kB view details)

Uploaded CPython 3.11Windows x86-64

panda3d_pipes-0.0.1.dev6-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.dev6-cp311-cp311-macosx_15_0_universal2.whl (192.6 kB view details)

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

panda3d_pipes-0.0.1.dev6-cp310-cp310-win_amd64.whl (264.8 kB view details)

Uploaded CPython 3.10Windows x86-64

panda3d_pipes-0.0.1.dev6-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.dev6-cp310-cp310-macosx_15_0_universal2.whl (193.0 kB view details)

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

File details

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

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f234fa2360dfdc37145cc81d631401badca691983fc48e45e5f6c82ff47fceeb
MD5 ce586fb202e7165ca18eed38c16bd971
BLAKE2b-256 6c32eee60fb68ad5383b21d7eae3bef3d4ca32ed0c2823ec5c99d9fe746f33e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 19429824d2d702e3d67f2f723f465b1823304bbaf029d613bfadc720b60c2f89
MD5 cf06f1a96094b7b9c80e56e21e4b0870
BLAKE2b-256 d55c8c5f8a515c8394fdb1cbfda7f15e7a51d387f74cdcb1a9ad70b5806181c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp314-cp314-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp314-cp314-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 29329be9941d70885d5d310fd444d9131f7cd4f1c22d7ebaeb9b78081f3f9811
MD5 421b685266c6a44848d20b05fda1c4ec
BLAKE2b-256 12103b8b6c0be8e642389062095549d436edde9c09a4f068d11170b6b7297e71

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1c30bf52ae01ced725e0a97269b9ceaddcacaaa468bb8cfcb139251ab2b31efd
MD5 4e25e73d25faec8efd983d175d009575
BLAKE2b-256 7417b8adfa5bf2c6b80443e0ab66a7c1fae71d372e3316fbace0ebebc0747c94

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 8f1dec389b2627398c67749d468b53a0e5f117cee3bb573a49ebac71fc4ba2fb
MD5 979102afb1c6c7f65bde014416ccab19
BLAKE2b-256 c05b91dc69b915b34304bcd767921dd063cb87588e873583b0485016acb75570

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp313-cp313-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp313-cp313-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 cc2ffd0a36900080fd29e79942838e6132f13e05da7b0f7455069cdf4d659ee6
MD5 d49cb991589a6f6d41fec5f70d16dcad
BLAKE2b-256 2831f478a89cde07cbcc9afc2d17065b0b3ca4f1b9b5d7cb08c45bd19d2d22d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 65bfb4104d1625f3e21680f73a22cfc4e565ae3b5cbef9d3523c32a35e37ec5d
MD5 a97d65e9e9cb2c8efd9a0bbed758e32c
BLAKE2b-256 f7c7efd3095d634eb987604f083824293632d18f879fa271ef4fa6bf204ffa8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 34e2a9d637cea82dbd1ddc6b53eac5e46d1194208e53a1d3178d0183aa2b3fa3
MD5 bb55447833f9d13e157a09be274e5325
BLAKE2b-256 e82a0056b9c18ff9b4163648cad6d1e881ae7cf295b74e8afe5955620f5d9f4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 2aee617033a358977b743d513ea2343da1ca10199f34d6e29a96f95637d91339
MD5 17c41545fccf1e5bbf4131d9c4000908
BLAKE2b-256 577fa55c93b9b847c70c6a3d6a0626009f70d8e2d789ebc618759e824597bbb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fc3e3b23e6a5872f471243f5f4c5f20d82694032523c24de8ef0eeb0355c033d
MD5 e4203b7302e1fb63c3c84edb74f23f79
BLAKE2b-256 bcf0cad0b2efe594a005a2f55c2032c13fdef496da1d305e5b43d652b27e6843

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 38a93699a9becb884659f08da5594c0df5addeb201ccd241cdd17531b0988a4f
MD5 37f575c1bd6c557e3bc92f088763738d
BLAKE2b-256 138003142c8572628fcb1882921eaa16af502ac3d5f7e1d3c51a19682cacce35

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp311-cp311-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp311-cp311-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 18481ca4dfbd3591858e724fee4334543dec5ea5bf25bf25cc6cae4863444a83
MD5 de0ba025b9046df69628f9bdcdc22f13
BLAKE2b-256 e511d3f2bc86cf24c7de631ffd39a17c6cf16c42d091f5e8784021085fb3b39a

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6e6447176609af3e44d9c87c53797cb1ebe55dc62e8f4f84415ccdf1aedb321c
MD5 c5d6845dae877381816000c83712d86d
BLAKE2b-256 857a8f04b46ca11013245ef4672691ebd5a4326f2c9a694cd8b20d10ccea633c

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 907ff88c3dadac023e969a441af856c62a2e47fbf2d47fd3cdaf6adc60ac9cb1
MD5 9e4c5ab13ec2face7ae1e6d8b278b152
BLAKE2b-256 d5d07d71782a63652464e069108eb6fc8fe763a0bd99ba0d025718376712e804

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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.dev6-cp310-cp310-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for panda3d_pipes-0.0.1.dev6-cp310-cp310-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 b252489431b2d021e262917587a3e4d18bb7a4caee3bda3098424b44d599573c
MD5 cf227f447a55eeb36367ed44fee0ee88
BLAKE2b-256 f8a5945040e14d2bdd362f2a3bf3c77e9ca6e1f4959eb2d3dd00becd30422751

See more details on using hashes here.

Provenance

The following attestation bundles were made for panda3d_pipes-0.0.1.dev6-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