packp3d physx issue

This is what I’m using for my command line

But after running the session log outputs this (closing on starting):

:AppRunner: Total Panda3D disk space used: 273 MB
:AppRunner: Configured max usage is: 2048 MB
DirectStart: Starting the game.
:display: loading display module: libpandagl.dll
Known pipe types:
  wglGraphicsPipe
(3 aux display modules not yet loaded.)
:display:windisplay: OS version: 6.1.2.7601 
:display:windisplay:   Service Pack 1
:display:windisplay: max Mhz 2661000000, current Mhz 2661000000 
:ShowBase: Default graphics pipe is wglGraphicsPipe (OpenGL).
:display: Created output of type wglGraphicsWindow
:display: Unable to set window properties: !undecorated !fixed_size 
:ShowBase: Successfully opened window of type wglGraphicsWindow (OpenGL)
:audio: NullAudioManager
:audio: NullAudioManager
:ShowBase: __dev__ == False
:rocket: Loaded font face Aranea Regular (from ./Assets/GUI/Font/aranea.ttf).
:rocket: Loaded font face Courier New Regular (from ./Assets/GUI/Font/cour.ttf).
:rocket: Loaded font face FreeSerif Medium (from ./Assets/GUI/Font/FreeSerif.ttf).
:rocket: Loaded font face Linux Libertine Regular (from ./Assets/GUI/Font/LinLibertine_R.ttf).
:rocket(warning): Syntax error parsing property declaration 'display: table-cell;' in : 0.
Traceback (most recent call last):
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\showbase\Messenger.py", line 424, in __taskChainDispatch
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\showbase\Messenger.py", line 482, in __dispatch
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\p3d\AppRunner.py", line 748, in __startIfReady
  File "VFSImporter", line 153, in load_module
  File "E:\Dev\SVN\minion\trunk\src\main.py", line 125, in <module>
    game = Game()
  File "E:\Dev\SVN\minion\trunk\src\main.py", line 52, in __init__
    from Minion.System.World import World
  File "VFSImporter", line 153, in load_module
  File "E:\Dev\SVN\minion\trunk\src\Minion\System\World.py", line 7, in <module>
    from panda3d.physx import PhysxEnums, PhysxManager, PhysxSceneDesc
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\bin\panda3d.py", line 158, in __getattr__
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\bin\panda3d.py", line 137, in libimport
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
:task(error): Exception occurred in PythonTask Messenger-default
Traceback (most recent call last):
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\p3d\AppRunner.py", line 638, in run
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\task\Task.py", line 502, in run
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\task\Task.py", line 460, in step
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\showbase\Messenger.py", line 424, in __taskChainDispatch
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\showbase\Messenger.py", line 482, in __dispatch
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\direct\p3d\AppRunner.py", line 748, in __startIfReady
  File "VFSImporter", line 153, in load_module
  File "E:\Dev\SVN\minion\trunk\src\main.py", line 125, in <module>
    game = Game()
  File "E:\Dev\SVN\minion\trunk\src\main.py", line 52, in __init__
    from Minion.System.World import World
  File "VFSImporter", line 153, in load_module
  File "E:\Dev\SVN\minion\trunk\src\Minion\System\World.py", line 7, in <module>
    from panda3d.physx import PhysxEnums, PhysxManager, PhysxSceneDesc
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\bin\panda3d.py", line 158, in __getattr__
  File "C:\buildslave\release_rtdist_win32\build\panda3d\built_cmu\bin\panda3d.py", line 137, in libimport
ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
:TaskManager: TaskManager.destroy()
:display: Closing wglGraphicsWindow
Failure on startup.

It seems to have a issue with the physx import calls

Ideas?

Most likely the NxCharacter.dll is missing.

With PhysX 2.x there has been a legal problem with redistributing this DLL, which required developers to register and download the PhysX SDK themselves. not a problem with games, just with middleware.

Yeah I have it downloaded myself, but where is it looking for the file at so I know where to put it? I have no issues running my game on my end.

I’m not an expert on the packaging system which comes with Panda3D, but I think it is a multifile. You could try to unpack it yourself, and see what is missing and where the libraries (DLLs) are located inside the packed game.

If you replace it in the multifile, you’ll cause Panda3D to find it invalid and redownload it. Instead, simply put it in the directory where the physx .mf.pz is located, or any other location on the PATH.

Where do these normally go on a windows machine? I’ve tried dropping my physx dlls into the panda3d bin folder but that doesn’t seem to work (that’s on the PATH)

panda3d.org/manual/index.ph … _directory

Dropped them all in there and the error still persists.

Is this maybe something wrong with the Panda3d Runtime?

I can point you to my repo with all my code if you want to try it out yourself.

Here’s a simple example of code with the above packing arguments to reproduce what I’m seeing (no local physx files used)

from panda3d.core import loadPrcFileData
loadPrcFileData("", """
load-display pandagl
sync-video 0
win-origin -2 -2
win-size 800 600
yield-timeslice 0
client-sleep 0
multi-sleep 0
basic-shaders-only #t
audio-library-name null
model-path $THIS_PRC_DIR/Assets/Graphics/Models/""")
#load-display pandagl
#load-display pandadx9
#load-display pandadx8
import direct.directbase.DirectStart

# Good practice for the time of development
import gc
gc.enable()
gc.set_debug(gc.DEBUG_LEAK)

from panda3d.physx import PhysxEnums, PhysxManager, PhysxSceneDesc

def doStart():
	pass

def doExit():	
	base.ignoreAll()
	
	gc.collect()

	import sys
	sys.exit()

doStart()
base.accept("escape", doExit)

run()

I stand correct dropping the files in there does achieve getting it to run, but that wouldn’t other people trying to run it as they wouldn’t have those in there, how would i go about that?

Which files do you need to drop in to get it to work?

I replaced all 6 of them and had to rename cudart32_30_9.dll that one to match the other, and it worked once or twice but then it must have started checking the files cause it kept downloading the old ones again making it not work again.

As per the other crash discussion since i moved my loading out of the init it doesn’t complain about physx until i trigger that load

these physx files work just fine with 1.8.1 btw i haven ran into any issues with them and what you guys already linked up

Just a wild guess, but I think there is a version mismatch between the DLLS packed in the Panda3D runtime and the one Krush uses. If I remember right there have been several (binary incompatible) SDK for PhysX 2.8.4.