Panda3d is far from ideal 3d prototyping and shipping games platform. But I think I could be moulded into one. I wanted to put out some concepts that I would think make a real great engine to make games in. My ideas mostly resolve around a meta game editor + concrete well defined networked objects. Maybe this is moving panda3d to be more like game makers or commercial engines such as source, unreal, crytec.
This meta game editor sort of works like a scene graph editor allowing you to move objects and save or load the scene. It should also do dump things that are missing now like re-parenting, moving centre of mass, facing vector, chaining some textures, just light 3d editing tasks and fixing common errors that happen during exporting. It also allows you to pause, resume or restart game simulation and inspect this simulation from any angle.
Automatic reloading of everything. Engine should keep track of files it loaded and reload when they change. If some one changed an image or and model file that model file should automatically get reloaded. Same goes for python code - our scripting language.
We can’t reload code willy-nilly in our current panda3d games because that would break most of our current code and current way we do things. That’s why I think much of our python code should be separated into actors/things/objects call them what you like. Basically each thing would have corresponding model, simulation handle and python class. When code changes it should be trivial to replace it with new code as objects are contained. Objects might also have other properties assigned to them like physics and sounds.
Once the things are separated out its trivial to add networking and saving of games as part of the engine. Just save or transmit all the actor positions and their properties when they change.
Not all objects must have concrete appearance. Some can be like ghosts doing score counting, wind, sounds, and other global non object things. But they still be objects treated pretty much same in networking, in saving to disk, in the scene graph way.
User inputs can also be their own objects that act on other objects. And can be networked in that way. During networking some objects might be client side or server side only. This probably should use more though as server-correcting-client yet lock-step, p2p, turn-based are all valid models to use in a game i am not sure how to add them in.
What to do about C++? People that are using C++ could probably ignore this upper python layer. If you want to add C++ to your python project it would probably be just like all C++ components in panda3d right now.