"Amarth" said:No no, I don't mean use a library that uses the Python C API or whatever, I mean write the entire game-specific rendering engine in C++ and just link a Python game logic engine into it.
"MageKing17" said:Which is what Panda3D does.
I've never used Panda3D, but I have used Pyglet (another 3D-capable Python graphics library) and it's definitely not so great for doing things quickly. If you want a first-person shooter, Python is definitely not the language to do it in (unless you go EVE Online and make the game engine Python and the graphics library C++ or whatever).
It'd be no slower, embedding (as you're describing it) is a pretty heavy operation and in reality no different from extending python with a C++ library. If anything, it's actually harder to do with practically no real difference in performance.
Of course that depends on how much you do in python, but the reality is you have to do quite a lot (data file loading (could load that separately as well), update func, callbacks etc) for it to be worth while. The more you do in python, the more you have to bind from C++ as well and eventually the rapid development which is Python's strong suite is gone as you're developing for basically two languages.
I'm doing a similar thing in my project right now, I have a vtable of events which point to script functions; I've implemented both python and lua (lua was faster, btw) and compared to what I was previously doing, which is using Panda3D in python, the performance is hardly slow in either. Mind you, it is just 2D so I guess it could be a bottleneck in N3D though I doubt it.