distributing game using a custom build of panda

I’m reading through all of the possible methods for distributing a Panda3D game, and I’m not quite sure which is the best for my particular case:

  1. I need to use a custom build of Panda since I have changes to the source code and also need some of the recent updates since the last official release.

  2. Players should not need to do a separate install of Panda. When uninstalling the game, Panda components should also be removed.

From what I’ve read, pdeploy seems to be my best choice, does that seem correct?

The manual appears to be focused on how to distribute using the official build only.

Does this mean I need to build using the --rtdist option and host my panda build, even if it will only ever need to be distributed along with the installer?

You could always consider submitting a patch. But it is perfectly possible to make your own build of Panda and host it at your own host, similar to how we host the official Panda3D build for the plugin to use at runtime.panda3d.org/.

You can do this by running makepanda with some flags like “–rtdist --distributor teedee --host runtime.teedee.com/ --p3dsuffix teedee”.
(the --p3dsuffix is not necessary, but it will make it easier to distinguish between the official p3d scripts and your own by appending _teedee to your p3d script names, ie. packp3d_teedee.p3d).
It will build a distribution similar to the one in runtime.panda3d.org/ into built_teedee/stage and you can then upload that directory to your own host.
If you then use the ppackage / packp3d / pdeploy that you’ve just built, it will build against your own runtime host.

You will need to do this for all platforms that you intend to support. You can use the pmerge.p3d utility to merge multiple runtime distribution directories (for example, for each platform) into one. You should run ppatcher.p3d on your final runtime directory to generate patch sets that can be used to more quickly download updates from your runtime host.

If you intend to use your just-created pdeploy.p3d with the self-contained flag, then you don’t really need to upload your runtime host or run ppatcher - you can build it locally and set the host to a local file:// URI. But you have to use “installer” mode with “-s” to make sure that the resulting distribution really doesn’t rely on the original host URI.

I am missing packp3d.exe and ppackage.exe after building with --rtdist. What option do I need to generate them?

Also, panda seems to still be trying to build PPC packages even though I’ve specified --arch i386 to makepanda. Do I need to explicitly disable PPC arch.?