{"adoption": {"forks": 3092, "observed_at": "2026-08-28T04:11:07.485780+00:00", "stars": 14700}, "canonical_url": "https://ross.abutalabs.com/products/bullet3", "card": {"archived": false, "artifact_type": "library", "description": "Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.", "domain": ["simulation", "robotics", "reinforcement-learning", "computer-vision", "graphics"], "enriched": true, "function": ["simulation", "graphics", "machine-learning", "sdk"], "health_score": 49, "homepage": "http://bulletphysics.org", "language": "C++", "license": "NOASSERTION", "license_family": "other", "maturity": "stable", "member_repos": ["bulletphysics/bullet3"], "name": "bulletphysics/bullet3", "platform": ["cross-platform", "cpp", "python", "windows"], "pushed_at": "2025-10-22T02:13:14+00:00", "repo": "bulletphysics/bullet3", "stars": 14700, "tags": ["physics-engine", "collision-detection", "rigid-body-dynamics", "pybullet", "soft-body", "urdf", "vr", "opencl", "reinforcement-learning-environments", "game-development", "linux", "macos", "android", "ios", "gpu"], "topics": ["simulation", "robotics", "kinematics", "virtual-reality", "reinforcement-learning", "computer-animation", "game-development", "simulator", "pybullet"], "urls": [], "use_cases": ["add physics simulation to a 3D game engine", "simulate robots with URDF models for robotics research", "train reinforcement learning agents in physics-based environments", "simulate rigid and soft body dynamics in real time", "run collision detection on the GPU with OpenCL", "generate synthetic datasets for machine learning with PyBullet"], "what_it_is": "Bullet Physics SDK is a C++ library providing real-time collision detection and rigid/soft body multi-physics simulation, with Python bindings via PyBullet. It is widely used in games, VR, visual effects, robotics, and reinforcement learning research.", "when_to_avoid": ["you need a highly accurate offline/industrial FEA solver rather than real-time physics", "you require extensive commercial support or active issue-tracker assistance", "you need modern C++ standards beyond C++03 compatibility"], "when_to_choose": ["you need a mature, permissively licensed (zlib) real-time physics engine", "you want Python bindings for robotics or RL simulation", "you need cross-platform C++ physics with optional GPU acceleration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bullet3", "repo": "bulletphysics/bullet3", "role": "main", "score": 44}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.485780+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:07:18.644231+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "50ee6212ddfc69a781fc39ae349e65f27ee8c95c45a36403cc44dc718c19feec", "fetched_at": "2026-08-28T04:11:07.485780+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bulletphysics/bullet3"}, {"content_hash": "54b1015fc81bbd1f200b390a098f4da2b4b2aca6f8fef298d5351c78ab7a7d64", "fetched_at": "2026-08-29T08:06:05.036264+00:00", "kind": "homepage", "missing": false, "url": "http://bulletphysics.org"}, {"content_hash": "4480d30291c5ca713ffa2fba5ce8a9e2da824811e251b9fd8d4ddae7f3606b12", "fetched_at": "2026-08-29T08:06:05.039911+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/wordpress/index.php/forum-2"}, {"content_hash": "5178dc29a41f05f8ea61e920fe562e02c9e731a12c63eea5b3cd8ba230512cb1", "fetched_at": "2026-08-29T08:06:05.041665+00:00", "kind": "site_page", "missing": false, "url": "https://pybullet.org/Bullet/phpBB3/viewtopic.php?f=9&t=15500&p=44526"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 48, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5622, "days_push": 316, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 44, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}