Pdeploy

What is the correct way to type it into the command line?

When entering pdeploy, this error message shows:

“no such file /c/Panda3D-1.7.0/bin/pdeploy.p3d”

I noticed the Linux style pathing…which doesn’t seem to change.

Plus,

Does the -n point to the application path? Example: -n C:\Game\GameDat

The Manual doesn’t go into any major detail on this, so if anyone can fill in the blanks below, that would be nice:

-s = full installer with p3d files
-n
-N
-a
-A
-e = email
-L
-l = lisence file maybe? or a readme?
-i = icon

On the other hand,

Is there a way I can just convert the App.py into a App.exe manually, include the P3D files needed and just run my own install creator program?

--------updat--------
I just tried ppython in front and I think I’m on track…somewhat.

ppython C:\Panda3D-1.7.1\bin\pdeploy.exe -h

At least I didn’t get a path error, but a ASCII error on line 1 of pdeploy.exe …?

Sweet…

I just might figure this out…

Got the help info working:

ppython C:\Panda3D-1.7.0\direct\p3d\pdeploy.py -h

Wrong directory before I guess.

What I can’t figure out is… How do you specify the directory of your project? I know the -o specifies output dir, but what about the input dir?

ppython C:\Panda3D-1.7.0\direct\p3d\pdeploy -s -n testgame -N "Test Game" -v 1.0 -o C:\Users\Mark\Desktop\testinstall

:question:

Is there a way I can also update the pdeploy.py file for my 1.7.0 installation? the -i option is not available.

Now I’m getting an error that says no module named direct.p3d.DeploymentTools, when that file does infact exists.

C:\Panda3D-1.7.0\direct\p3d\pdeploy.py -s -m testgame.py -N "TestGame" -v 1.0 -o C:\Users\Mark\Desktop\testinstall\out\testgame.p3d

Can’t figure it out.

----update—
Adding ppython back in front stopped the module error, but nothing happens still

In one Forum someone stated that pdeploy is buggy and had to be written this way:

ppython C:\Panda3D-1.7.0\direct\p3d\pdeploy.py -s -N "TestGame" -v 1.0 C:\Users\Mark\Desktop\testinstall\out\testgame.p3d installer

I get the error message - Applicaton file does not exists!

…?

I still don’t see how pdeploy will know where to look for the game files. If adding the -o breaks things…how can you specify an output path.

Have you tried just:

C:\Panda3D-1.7.1\bin\pdeploy.exe -h

?

I get a path error when doing it that way - no such path /c/Panda3D-1.7.1/bin

but…

Just found out I need a working .pd3 file first…right? So I’m trying to use the pack3d.py to create a .p3d file for pdeploy, but not having success.

C:\Panda3D-1.7.0\direct\p3d> ppython packp3d.py -o C:\Users\Mark\Desktop\Test\out\Game.p3d -d C:\Users\Mark\Desktop\Test

I get this message:

Yes, I installed the panda3d run-time exe as well.

You might wonder why I’m using \p3d\ppython packp3d.py? All the examples I see on the net show \bin\packp3d.p3d or \bin\pdeploy.p3d.

I don’t even have .p3d file versions for those programs… I have .exe file versions and when I try to access the \bin.exe versions… I get a path error which pops up as a linux path (I’m on windows).

This is getting scary… Especially if you worked on something for months and came face to face with this issue.

I downloaded the .p3d versions of pdeploy and packp3d, and drop those in the bin folder along with their .exe counter parts.

I then used:

packp3d -o C:\Users\Mark\Desktop\Test\out\game.p3d -d C:\Users\Mark\Desktop\Test

A whole lot of stuff starting printing to the console window… Some downloading was going on as well, but then it ended with this error:

“No Python files in root directory”

Oh, come on!

Getting different error now:

File “C:\buildslave\release_rtdiest_win32\build\panda3d\built_cmu\pandac\extension_native_helpers.py”, line 79, in Dtool_PreloadDLL

ImportError: DLL load failed: The specified procedure could not be found. Failure on startup.

I’m guessing not too many people have actually tried to create a game installer on windows. I’m also guessing not too many P3D projects actually finish…

OMG!!!

I got a .p3d file!!!

:mrgreen:

Ok…

Problem 1 solved… Now for problem number 2…

Getting an installer.

PS,

I just have to ask… .p3d files appear to be java applets files. If that’s so… I’m guessing P3D has some kind of embedding code for running a game through a browser? I know that seems like an idiot question because I’ve seen P3D games in browsers, but what I’m saying is… I don’t know if that’s a direct result of a .p3d file or some other setup.

Ok…

The installer creation was rolling… Did a lot of downloading and finally…just stopped.

The problem is… Were did the installation go? I’m guessing the files were just dropped in a temp location…which means I did not specify the output folder correctly…which is what I asked about way earlier. How do you specify the output folder?

C:\Windows\system32>pdeploy -s -N "Test Install" -v 1.0 C:\Users\Mark\Desktop\output\game.p3d installer

That was not the correct way to type I’m guessing…

Rdb…you’re killing me…

I think I solved this little comman line conundrum!

I was able to specify a path for the installations and ended up with the following folders:

linux_amd64
linux_1386
osx_i386
osx_ppc
win32

I’m assuming this:

linux_amd64 = linux 64 bit
linux_1386 = linux 32 bit
osx_i386 = mac 32 bit?  Nah... I guess most Macs after 2006 are 64 bit
osx_ppc = ?
win32 = 32 bit windows (which I would imagine installs fine on 64 bit windows)

I can understand the win installer, but for Linux and Mac, do I just distrubute the zip/rar folders/archive or do I distrubute everything in the installation folders?

I’m guessing Linux and Mac users have to manually install their own content since they have no installers… Wow, that sucks.

Come on now… I made this far on my own… Steer me across the fnishline. :laughing:

PS,

The manual is missing some much needed detail on the whole process. Then again…if Drwr or rdb would develop a nice install creator program like the one Click Team made (install creator), not only would developers not need the internet, they wouldn’t have to pull their hair out. I know what you’re thinking already…time and money right?

Checking the documentation would have answered most if not all of your questions. Try running “pdeploy -h”, or the manual page on “Distributing a self-contained installer”, and the relevant manual pages about the Panda3D runtime and .p3d files.

You’re not supposed to run packp3d.py or pdeploy.py. You’re supposed to run packp3d.p3d and pdeploy.p3d. This is explained in the manual. The .exe’s are thin wrappers that simply call the appropriate .p3d file of the same name.

It is silly to try and run an .exe with the Python interpreter; the Python interpreter runs .py files, Windows runs .exe files, and the Panda3D runtime runs .p3d files.

.p3d files are not Java applets, but they do function in a similar manner to Java applets, and they can indeed be embedded into web pages.

If you ran pdeploy successfully, the output will (as indicated by the documentation) be in various subdirectories, one for each platform. The option for specifying a custom output directory is listed in the pdeploy documentation.

The .deb files are packages for Ubuntu. On OS X, you have the choice between distributing a package or an .app (the package simply contains an install-wizard for copying the .app into /Applications/). Your guess is incorrect; all of these packages are self-contained and do not require distributing additional .zip or .rar files.

I do not advise distributing binaries for other platforms if you haven’t tested them, especially if you don’t understand the package systems that are used for these platforms.

“osx_i386” is for Intel Macs, covering a vast majority of the Macs nowadays. It’ll work on both 32-bit and 64-bit Intel Macs. We may stop supporting osx_ppc in Panda3D 1.9.

Again, I would strongly advise you to read the documentation for a particular tool carefully before using the respective tool, or at least consult it if and when you’re having trouble using that tool.

I knew the exe files wouldn’t run with python…that’s why I was trying to use the .py versions.

The biggest issues was the fact the .p3d versions of pdeploy and packp3d were not in the bin directory. I only had a theory that, if I were to download those two files and drop them in the bin, things might start to work out…and things started to work out. However…

The Manual shows examples like -i Icon.png, so as someone learning pdeploy for the first time you go by the manual. I was having errors because I was going exactly by the manuals example. When I used direct paths, example: -i C:\Users\Mark\Game\icon_16.png -L C:\Users\Mark\Game\license.txt, things worked correctly.

This kind of example, MyGame.p3d installer is confusing as well…when in fact it was more like, -o C:\Users\Mark\Game\final C:\Users\Mark\Game\MyGame.p3d installer

All in all the Manual can give you a clue, but if someone who knows this stuff doesn’t help you out…you have to figure it out by trial and error.

Something is still wrong…

Does not the .p3d file contain all game data?

My test game folder was 55.1 mb and the final .p3d was 55.0 mb…

Doesn’t pdeploy add the run-time to the installation App if -s is given?

After installing the test game and running it…this error popped up:

...AppData/Local/Panda3D/start/dats/egg/....
:TaskManger: Closing wglGraphicsWindow
Failure on startup.

…wow.

So now I’m confused again… What was pdeploy downloading doing for three hours? At what’s in the .p3d file if the game data is not present within? All game data was local to the installation directory… Why is AppData being looked through?

I have a hunch on what could have went wrong… I’m going to give it a try…

This time, the finshed win32 installer, the game.p3d file didn’t do anything… Nothing. There were no errors reported during the pack or the pdeploy but yet… It never works.

What in the world I’m I missing…?

It is assumed that you first change to the directory by typing “cd” in the command prompt, which means that you don’t need to specify absolute paths.

It does, at least it should. It does contain more optimised versions of your game models and Python code, though, so that may be why you see a smaller file (in fact, I’m quite surprised that your resulting .p3d isn’t even smaller).

This is where the .p3d is mounted through the VirtualFileSystem. The files that it’s reading don’t actually exist there; it acts as a ‘portal’ through which you can access the files in the .p3d archive directly.

Remember that packp3d packs your game into a .p3d archive, which can be ran using the Panda3D runtime. pdeploy turns this .p3d archive into a self-contained installer .exe that contains the Panda3D runtime in itself. (pdeploy does not modify the .p3d archive in any way.)

So, you first need to make sure you can run the .p3d file to begin with. Once you can run the .p3d file perfectly, you can then start to find out why the installed game as installed by the .exe isn’t working.

Usually, when people get this issue, the problem is that they have a name == ‘main’ conditional in the main file. In the Panda3D runtime environment, the name variable is not main, so it will in that situation silently exit without doing anything.
For more on that problem, see:

The test app isn’t that big:


import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from direct.showbase import Audio3DManager
from pandac.PandaModules import *
from direct.actor.Actor import Actor
from direct.gui.OnscreenText import OnscreenText
from direct.gui.OnscreenImage import OnscreenImage
from direct.gui.DirectGui import *
from direct.filter.CommonFilters import CommonFilters
from direct.filter.FilterManager import *
from direct.stdpy.file import open
from direct.stdpy.file import listdir

from math import floor, ceil, pi, sin, cos
import sys
from os.path import isfile, isdir, join, basename, splitext, abspath
from os import mkdir, rmdir, rename, remove, system
from os import name as os_name
from random import *
import gc

WingameDir = abspath("")
MYGameDIR = Filename.fromOsSpecific(WingameDir)

ImageONe = loader.loadTexture(MYGameDIR+"/data/imgs/ri.jpg")
Sound = loader.loadSfx(str(MYGameDIR+"/data/mus/air.wav"))
Sound.setLoop(True)
Sound.setVolume(1)
Sound.play()

Ship = loader.loadModel(MYGameDIR+"/data/egg/tship1.egg")
Pobj = NodePath(PandaNode("fsfsf"))
Pobj.reparentTo(render)
Ship.reparentTo(Pobj)
Pobj.setPos(0,0,0)
base.cam.setPos(0,-30,0)
base.cam.lookAt(Pobj)

Ship.setTexture(ImageONe, 1)


render.setAntialias(AntialiasAttrib.MFaster+AntialiasAttrib.MAuto)

run()

The game folder contains:

game.py
icon_32.png
icon_16.png
icon_64.png
icon_128.png
data\egg\tship1.egg
data\imgs\ri.jpg
data\mus\air.wav
lincense.txt

… Is there an error I’m not seeing?

I used the -m to specify the game.py since it wasn’t named main.py or does it have to be called main.py?

In addition, you should not specify the .egg extension, you can simply specify “tship1” instead of “tship1.egg”. This will allow packp3d to automatically convert the model to the more efficient .bam format when packing.

Could you give me the exact output that you get when running “panda3d yourgame.p3d”?

Foud the issue… It was the name of the .py file.

So… Using -m has not effect then?

When I changed game.py to main.py…the .p3d file ran. So now I’m going to try a win32 installer.

I guess there’s no choice put to name your .py file to main.

… -m …? rdb you’re killing me. :cry:

:laughing:

PS,

Using cd to move into the game directory just doesn’t work well for the commands… I don’t know why.