February 2018 Development Update

We again bring you some of the highlights of the new developments in the past month. This is however not an exhaustive list of changes, which can be obtained from the commit logs in the GitHub repository.

Android developments

We’re happy to announce that the Android port has made great strides forward in the past weeks. Most importantly, there is now a complete Python interpreter added to the Panda3D app, so that Python applications can be run directly from the Android device. Many of the sample programs now run as well as they do on the desktop.
It is now even possible to compile Panda3D entirely on an Android device, using an app that provides a Linux-like terminal environment. One free and open-source example is termux, which provides a package manager that gives access to an impressive suite of software, including the compilers needed to compile Panda3D.
Furthermore, using a bash script that we provide, it is also possible to launch Panda3D from termux and pipe the output from the interpreter app back to the terminal, so that you can develop Panda apps on Android the same way as you would on the desktop.
Eventually, we intend to make it possible to use the new deploy-ng system to produce an Android package from any operating system, making it easy to deploy your application to both desktop and mobile platforms.
In a separate effort, a commercial port of Panda3D to Android has been released on the app store, called Cub3D. This is an impressively complete development environment for Panda3D apps, and can be used today to develop and run Panda apps on Android. (This software is developed by a third-party company that is not affiliated with the Panda3D team.)

Roaming Ralph running on an Android tablet
Roaming Ralph running on an Android tablet

Ball in Maze running on an Android watch with Cub3D
Ball in Maze running on an Android watch with Cub3D

CMake improvements

Behind the scenes, we have been working on adding support for the CMake build system on the cmake branch. CMake is a popular cross-platform build system that is rapidly becoming the de facto standard for open-source projects, and it is eventually intended to replace our own makepanda build script. This will make it easier to build Panda from source and to customize the build process. Last month, the CMake port saw some updates and improvements, bringing us closer to this goal.

Bullet thread safety

Users of the Bullet physics engine were previously encountering crashes when using Bullet in conjunction with the multithreaded render pipeline. This is caused by the fact that the Bullet library is not thread safe. To remedy this, we have added locking in the Panda3D wrapper for Bullet that protects the Bullet library from access by multiple threads, which makes it safe to use the Bullet integration in a multithreaded program.

8 thoughts on “February 2018 Development Update

  1. One separate question. I have a concern about the file size of Panda3D and python installed on a system plus the game itself. Do you have to install Panda3d for every package? And how much effort do you think it would be to port between Cub3d? It doesn’t look like something you could deploy with.

  2. For a deployed game, it will not be necessary to install Panda3D or Python separately; these are included. The size for a simple game will be under 20 MB.
    I can’t speak for the Cub3D developers, but with the exception of a few additional features that it offers, it looks like it uses the regular Panda3D libraries, so code you write in Panda3D will likely work unchanged in Cub3D.

  3. Cub3D is compatible with Panda3D, so that should put any worries at rest. You can usually use Panda3D code in Cub3D unmodified. If you use specific Cub3D features (which are fast, simple to use, often one-liners, and frequently being extended), you can still easily use your code in Panda3D too.
    You can either do this with dummy libraries, which are included in some of the examples to ensure they work on Panda3D, or you can do a simple ImportError catch if you prefer not to use libraries like ‘cub3ddummy’ on desktop.
    You’ll find samples like Bullet-Ball-in-Maze disable the mouse and use the accelerometer in Cub3D, but yet they still work correctly with the mouse on Panda3D desktop, if you copy the applet folder. You can see how that’s done in the code.

  4. Trouble downloading python interpreter for mac. I am having issues running the python interpreter on my mac, when I download Panda3D I am unable to find the file to run as an interpreter, and I know others with this issue. Is there any known solution, or is this a stupid mistake on my part?

Comments are closed.