panda3d

Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

https://github.com/panda3d/panda3d

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 172 committers (1.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.7%) to scientific vocabulary

Keywords

c-plus-plus cross-platform game-development game-engine gamedev multi-platform open-source opengl panda3d panda3d-game-engine python

Keywords from Contributors

transformation unit-testing
Last synced: 6 months ago · JSON representation

Repository

Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Basic Info
  • Host: GitHub
  • Owner: panda3d
  • License: other
  • Language: C++
  • Default Branch: master
  • Homepage: https://www.panda3d.org/
  • Size: 159 MB
Statistics
  • Stars: 4,878
  • Watchers: 199
  • Forks: 838
  • Open Issues: 344
  • Releases: 22
Topics
c-plus-plus cross-platform game-development game-engine gamedev multi-platform open-source opengl panda3d panda3d-game-engine python
Created over 12 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing Funding License

README.md

Build Status OpenCollective OpenCollective

Panda3D

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for any purpose, including commercial ventures, thanks to its liberal license. To learn more about Panda3D's capabilities, visit the gallery and the feature list. To learn how to use Panda3D, check the documentation resources. If you get stuck, ask for help from our active community.

Panda3D is licensed under the Modified BSD License. See the LICENSE file for more details.

Installing Panda3D

The latest Panda3D SDK can be downloaded from this page. If you are familiar with installing Python packages, you can use the following command:

bash pip install panda3d

The easiest way to install the latest development build of Panda3D into an existing Python installation is using the following command:

bash pip install --pre --extra-index-url https://archive.panda3d.org/ panda3d

If this command fails, please make sure your version of pip is up-to-date.

If you prefer to install the full SDK with all tools, the latest development builds can be obtained from this page.

These are automatically kept up-to-date with the latest GitHub version of Panda.

Building Panda3D

Windows

You can build Panda3D with the Microsoft Visual C++ 2017, 2019 or 2022 compiler, which can be downloaded for free from the Visual Studio site. You will also need to install the Windows SDK, and if you intend to target Windows Vista, you will also need the Windows 8.1 SDK.

You will also need the thirdparty dependency libraries available for the build scripts to use. These are available from one of these two URLs, depending on whether you are on a 32-bit or 64-bit system, or you can click here for instructions on building them from source.

  • https://www.panda3d.org/download/panda3d-1.10.15/panda3d-1.10.15-tools-win64.zip
  • https://www.panda3d.org/download/panda3d-1.10.15/panda3d-1.10.15-tools-win32.zip

After acquiring these dependencies, you can build Panda3D from the command prompt using the following command. Change the --msvc-version option based on your version of Visual C++; 2022 is 14.3, 2019 is 14.2, 2017 is 14.1, and 2015 is 14. Remove the --windows-sdk=10 option if you need to support Windows Vista, which requires the Windows 8.1 SDK.

bash makepanda\makepanda.bat --everything --installer --msvc-version=14.3 --windows-sdk=10 --no-eigen --threads=2

When the build succeeds, it will produce an .exe file that you can use to install Panda3D on your system.

Note: you may choose to remove --no-eigen and build with Eigen support in order to improve runtime performance. However, this will cause the build to take hours to complete, as Eigen is a heavily template-based library, and the MSVC compiler does not perform well under those circumstances.

Linux

Building Panda3D on Linux is easy. All you need is to invoke the makepanda script using the version of Python that you want Panda3D to be built against.

Run makepanda.py with the --help option to see which options are available. Usually, you will want to specify the --everything option (which builds with support for all features for which it detects the prerequisite dependencies) and the --installer option (which produces an installable .deb or .rpm file for you to install, depending on your distribution).

The following command illustrates how to build Panda3D with some common options: bash python3 makepanda/makepanda.py --everything --installer --no-egl --no-gles --no-gles2 --no-opencv

You will probably see some warnings saying that it's unable to find several dependency packages. You should determine which ones you want to include in your build and install the respective development packages. You may visit this manual page for an overview of the various dependencies.

If you are on Ubuntu, this command should cover the most frequently used third-party packages:

bash sudo apt-get install build-essential pkg-config fakeroot python3-dev libpng-dev libjpeg-dev libtiff-dev zlib1g-dev libssl-dev libx11-dev libgl1-mesa-dev libxrandr-dev libxxf86dga-dev libxcursor-dev bison flex libfreetype6-dev libvorbis-dev libeigen3-dev libopenal-dev libode-dev libbullet-dev nvidia-cg-toolkit libgtk-3-dev libassimp-dev libopenexr-dev

Once Panda3D has built, you can either install the .deb or .rpm package that is produced, depending on which Linux distribution you are using. For example, to install the package on Debian or Ubuntu, use this:

bash sudo dpkg -i panda3d*.deb

If you are not using a Linux distribution that supports .deb or .rpm packages, you may have to use the installpanda.py script instead, which will directly copy the files into the appropriate locations on your computer. You may have to run the ldconfig tool in order to update your library cache after installing Panda3D.

Alternatively, you can add the --wheel option, which will produce a .whl file that can be installed into a Python installation using pip.

macOS

On macOS, you will need to download a set of precompiled thirdparty packages in order to compile Panda3D, which can be acquired from here.

After placing the thirdparty directory inside the panda3d source directory, you may build Panda3D using a command like the following:

bash python makepanda/makepanda.py --everything --installer

You may target a specific minimum macOS version using the --osxtarget flag followed by the release number, eg. 10.9 or 10.14.

If the build was successful, makepanda will have generated a .dmg file in the source directory containing the installer. Simply open it and run the package file in order to install the SDK onto your system.

FreeBSD

Building on FreeBSD is very similar to building on Linux. You will need to install the requisite packages using the system package manager. To install the recommended set of dependencies, you can use this command:

bash pkg install pkgconf bison png jpeg-turbo tiff freetype2 harfbuzz eigen squish openal opusfile libvorbis libX11 mesa-libs ode bullet assimp openexr

You will also need to choose which version of Python you want to use. Install the appropriate package for it (such as python37 or python38) and run the makepanda script with your chosen Python version:

bash python3.11 makepanda/makepanda.py --everything --installer --no-egl --no-gles --no-gles2

If successful, this will produce a .pkg file in the root of the source directory which you can install using pkg install.

Android

Although it's possible to build Panda3D on an Android device using the termux shell, the recommended route is to cross-compile .whl files using the SDK and NDK, which can then be used by the build_apps command to build a Python application into an .apk or .aab bundle. You will need to get the latest thirdparty packages, which can be obtained from here:

https://rdb.name/thirdparty-android.tar.gz

This includes a copy of Python 3.13 compiled for Android. You will need to use Python 3.13 on the host as well.

These commands show how to compile wheels for the supported Android ABIs:

bash export ANDROID_SDK_ROOT=/home/rdb/local/android python3.13 makepanda/makepanda.py --everything --outputdir built-droid-arm64 --arch arm64 --target android-21 --threads 6 --wheel python3.13 makepanda/makepanda.py --everything --outputdir built-droid-armv7a --arch arm --target android-21 --threads 6 --wheel python3.13 makepanda/makepanda.py --everything --outputdir built-droid-x86_64 --arch x86_64 --target android-21 --threads 6 --wheel python3.13 makepanda/makepanda.py --everything --outputdir built-droid-x86 --arch x86 --target android-21 --threads 6 --wheel

It is now possible to use the generated wheels with build_apps, as explained on this page:

https://discourse.panda3d.org/t/deployment-for-android/28226

Running Tests

Install PyTest and run the pytest command. If you have not installed Panda3D, you will need to configure your environment by pointing the PYTHONPATH variable at the built directory. On Linux, you will also need to point the LD_LIBRARY_PATH variable at the built/lib directory.

As a convenience, you can alternatively pass the --tests option to makepanda.

Reporting Issues

If you encounter any bugs when using Panda3D, please report them in the bug tracker. This is hosted at:

https://github.com/panda3d/panda3d/issues

Make sure to first use the search function to see if the bug has already been reported. When filling out a bug report, make sure that you include as much information as possible to help the developers track down the issue, such as your version of Panda3D, operating system, architecture, and any code and models that are necessary for the developers to reproduce the issue.

If you're unsure whether you've encountered a bug, feel free to ask in the forums or the IRC channel before opening an issue.

Supporting the Project

If you would like to support the project financially, visit our campaign on OpenCollective. Your contributions help us accelerate the development of Panda3D.

For the list of backers, see the BACKERS.md file or visit the Sponsors page on our web site. Thank you to everyone who has donated!

Owner

  • Name: Panda3D
  • Login: panda3d
  • Kind: organization

Panda3D is an open-source, cross-platform game engine designed for Python and C++ programming.

GitHub Events

Total
  • Create event: 10
  • Commit comment event: 1
  • Release event: 1
  • Issues event: 79
  • Watch event: 378
  • Delete event: 8
  • Issue comment event: 200
  • Push event: 159
  • Pull request review comment event: 10
  • Pull request review event: 19
  • Pull request event: 57
  • Fork event: 57
Last Year
  • Create event: 10
  • Commit comment event: 1
  • Release event: 1
  • Issues event: 79
  • Watch event: 378
  • Delete event: 8
  • Issue comment event: 200
  • Push event: 159
  • Pull request review comment event: 10
  • Pull request review event: 19
  • Pull request event: 57
  • Fork event: 57

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 25,873
  • Total Committers: 172
  • Avg Commits per committer: 150.424
  • Development Distribution Score (DDS): 0.628
Past Year
  • Commits: 279
  • Committers: 13
  • Avg Commits per committer: 21.462
  • Development Distribution Score (DDS): 0.082
Top Committers
Name Email Commits
David Rose d****d@d****m 9,616
rdb g****t@r****e 6,521
cxgeorge 1,397
Darren Ranalli g****b@d****m 1,043
Dave Schuyler n****r@g****m 963
Josh Yelon j****n@g****m 783
Sam Edwards C****s@g****m 756
Mark Mine m****e@d****m 521
Joe Shochet s****t@g****m 487
Cary Sandvig f****g@u****t 333
Mike Goslin m****n@u****t 331
Asad M. Zaman m****z@u****t 272
Josh Wilson h****h@u****t 267
Gyedo Jeon g****n@g****m 252
Zachary Pavlov z****v@g****m 219
Mitchell Stokes m****n@g****m 203
enn0x r****r@g****t 149
Roger Hughston r****n@u****t 142
Chris Brunner g****b@c****s 134
kestred k****d@r****m 133
Samir Naik s****k@g****m 113
Daniel d****l@t****s 64
Redmond Urbino r****b@g****m 57
Jesse Schell j****e@s****m 50
Arkady Trestman a****n@u****t 48
fireclawthefox f****x@g****m 46
Donny Lawrence t****a@t****m 44
Justin Butler j****r@u****t 44
Ken Patel k****o@g****m 39
Joseph Lee j****e@u****t 39
and 142 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 334
  • Total pull requests: 238
  • Average time to close issues: 6 months
  • Average time to close pull requests: 8 months
  • Total issue authors: 129
  • Total pull request authors: 62
  • Average comments per issue: 3.24
  • Average comments per pull request: 2.16
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 47
  • Pull requests: 70
  • Average time to close issues: 23 days
  • Average time to close pull requests: 9 days
  • Issue authors: 32
  • Pull request authors: 25
  • Average comments per issue: 1.19
  • Average comments per pull request: 0.51
  • Merged pull requests: 23
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • rdb (46)
  • el-dee (21)
  • ArsThaumaturgis (14)
  • git2323 (12)
  • Schwarzbaer (11)
  • BMaxV (11)
  • Clockwork-Muse (8)
  • kamgha (8)
  • Moguri (7)
  • janEntikan (6)
  • Wizzerinus (6)
  • Epihaius (6)
  • Frangwhuf (5)
  • serkkz (5)
  • Souzooka (5)
Pull Request Authors
  • WMOkiishi (23)
  • pmp-p (21)
  • darktohka (14)
  • BMaxV (11)
  • johnnyapol (11)
  • RegDogg (8)
  • Moguri (7)
  • kamgha (7)
  • el-dee (7)
  • dependabot[bot] (7)
  • git2323 (6)
  • ArsThaumaturgis (6)
  • Maxwell175 (6)
  • kekwlboy12469 (6)
  • maxrdz (6)
Top Labels
Issue Labels
enhancement (162) bug (38) discussion (29) build (23) good first issue (21) direct (13) macos (13) usability (13) windows (11) deployment (11) regression (10) interrogate (8) bullet (6) cleanup (6) pstats (6) question (5) performance (4) directgui (4) opengl (4) docs (3) roadmap (2) assimp (2) ffmpeg (2) webgl (2) android (1) incomplete (1) wontfix (1) invalid (1)
Pull Request Labels
directgui (10) dependencies (7) direct (3) samples (3) gsoc (3) macos (2) enhancement (2) deployment (2) priority (2) bug (2) interrogate (2) cleanup (1) android (1) discussion (1) build (1) github_actions (1)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 102,205 last-month
  • Total dependent packages: 24
    (may contain duplicates)
  • Total dependent repositories: 192
    (may contain duplicates)
  • Total versions: 53
  • Total maintainers: 2
pypi.org: panda3d

Panda3D is a framework for 3D rendering and game development for Python and C++ programs.

  • Versions: 25
  • Dependent Packages: 23
  • Dependent Repositories: 191
  • Downloads: 102,205 Last month
Rankings
Dependent packages count: 0.8%
Dependent repos count: 1.1%
Stargazers count: 1.1%
Average: 1.3%
Forks count: 1.5%
Downloads: 1.9%
Maintainers (2)
Funding
  • https://opencollective.com/panda3d
Last synced: 6 months ago
proxy.golang.org: github.com/panda3d/panda3d
  • Versions: 22
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 9.0%
Average: 9.6%
Dependent repos count: 10.2%
Last synced: 6 months ago
conda-forge.org: panda3d

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for any purpose, including commercial ventures, thanks to its liberal license. To learn more about Panda3D's capabilities, visit the gallery and the feature list. To learn how to use Panda3D, check the documentation resources. If you get stuck, ask for help from our active community.

  • Versions: 6
  • Dependent Packages: 1
  • Dependent Repositories: 1
Rankings
Stargazers count: 5.9%
Forks count: 5.9%
Average: 16.2%
Dependent repos count: 24.1%
Dependent packages count: 28.9%
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v1 composite
  • actions/setup-python v4 composite
.github/workflows/mypy.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
contrib/src/panda3dtoolsgui/setup.py pypi
requirements-test.txt pypi
  • Pmw-py3 ==2.1 test
  • pytest * test
  • pytest-cov * test
samples/asteroids/requirements.txt pypi
  • panda3d *
samples/asteroids/setup.py pypi
tests/requirements.txt pypi
  • panda3d * test
  • pytest ==3.2.0 test
tests/setup.py pypi