Python is probably better for coding game logic, but if I coded a game/demo completely in C++ what do I give up?
i.e I’ve noticed there’s no native joystick support (argh!) and developers here use pygame. If I went C++, would I have to use DirectInput or VRPN?
Is there extra Panda3D python support not available in C++? Or is python just a nice wrapper around the C++ core?
Panda3D is really a C++ library with a thin Python layer on top. You still have a lot of power available as a C++ user of Panda.
Off the top of my head, here’s what you’d give up by forgoing Python:
Third-party Python libraries like PyGame, as you have observed. Presumably you can find similar replacement third-party libraries for C++. Or you can use DirectInput or VRPN.
There are a handful of features that we built into just the Python layer, like the task system. The DirectGui system as it is documented here is a Python-only layer, but it is really a thin layer on top of the C++ PGui system, which is only documented in the generated API documentation.
The documentation and examples on this site are geared toward the Python programmer, but with a bit of practice you can convert it back to C++.
Python is a much faster language to develop in than C++. It takes less effort to achieve a similar effect. Debugging is a joy. And the ability to interrupt an executing program and modify it on-the-fly is unparalleled in compiled languages like C++. I once took a large application that I had originally written in C++ over about six months, and completely rewrote it in Python in less than one month. (Sure, it was just a rewrite, but still.)
On the other hand, C++ isn’t really all that bad, and it is kind of nice not to have to deal with the whole packaged-Python thing on game distribution. And you’ll still have all of the meat of core Panda available to you, including rendering, sound interface, collisions and physics, intervals, animation, and so on.