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.
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…
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.
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?
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.
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.
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.
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:
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()
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”?