so can we expect some more progress on the project or not ?
Speaking for myself, I’m largely done with this particular project.
If I were to take on a showcase project in the future, I think that it would more likely be something new.
For what it’s worth, I believe the published version "Captain Panda--Across the Night"; A Panda3D Tech-Demo is quite good on its own. I don’t consider this a “failed project”. It was ambitious in scope from the outset, and we managed to get a decent chunk of it done, enough for a 5 or 10 minute fully playable demo.
Guys, what was the objective of the 2nd section ? like, i reached that space station kinda thing, but what am i suppose to do next ? Enter it ? and why are there so many enemy shpis at the end !!
It’s been a while, but I think that you were supposed to find an entrance to the station, yes.
(From what I recall, the station was intended to be the location for the third section, should that have been completed.)
… And I think that I added so many enemy ships at the end just to make the finale of the section more dangerous.
The idea and gameplay are good, but visually this project is not finished, and the graphics are not very presentable. A graphic remake is required here, because initially the scenes look highlighted with too much gloss, and so on. The models look poor and simple, but that’s not a problem, the problem is that visually the game looks clunky.
yah, i agree. the game feel a bit too metallic or shiny, whatever you wanna call it. especially the scetion 1, where we start the game and assemble our ship, those parts are wayy too bright for an indoor/closed scene. also, the big space station / mother ship from where the player exits at the end of the section 1, it’s texture looks as if it is all normal maps textures.
By the way, I downloaded it to check the project’s performance on panda version 1.10.15. It seems that at the moment the code is “rusty”. Since this project uses a lot of operations at the geometry data level, this is leading to errors now.
The stages of creating collision bodies and mirror models end with errors.
File "D:\git\Panda3DSciFiTechDemo\common.py", line 705, in mirror_ship_parts
geom = right_node.children[0].node().modify_geom(0)
IndexError: NodePathCollection index out of range
File "D:\git\Panda3DSciFiTechDemo\fp_ctrl.py", line 270, in make_collision
geom_nodes = geom_nodes.get_path(node_number).node()
AssertionError: index >= 0 && index < (int)_node_paths.size() at line 184 of c:\buildslave\sdk-windows-amd64\build\panda\src\pgraph\nodePathCollection.cxx
So, I think the project is not finished in this regard either, since it is not launching now.
Yeah, I spent about an hour just now trying to diagnose this issue, which for some reason I haven’t seen before.
It looks like something changed with regards to how panda3d is loading or parsing model files, maybe .gltf files in particular. Some of the geom data operations aren’t working anymore, despite the code not changing in the last 3 years. I wonder what version of panda3d this started happening with; I imagine it was a fairly recent change.
That being acknowledged, I was never a huge fan of the way the ship generation and model parsing was being handled in the first place. The three original developers, including me, had rather different coding styles that we made work together. IIRC we were also experimenting a bit with model preloading routines to make the load screens and so forth more seamless.
Guys, why are there 2 files called game in the root directory of the project ? the Game.py and the Game2.py ? is there something different in the 2 of them ?
Error in section 4 :
:task(error): PythonTask preload_models.<locals>.load_models exception was never retrieved:
Traceback (most recent call last):
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\common.py", line 722, in load_models
callback()
~~~~~~~~^^
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Section2\intro.py", line 27, in start_intro
self.start()
~~~~~~~~~~^^
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Section2\intro.py", line 102, in start
ship = shared_models[shipSpec.shipModelFileLowPoly].copy_to(hangar_exit)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'shipModelFileLowPoly'
Traceback (most recent call last):
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 49, in eventLoopTask
self.doEvents()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 43, in doEvents
processFunc(dequeueFunc())
~~~~~~~~~~~^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 99, in processEvent
messenger.send(eventName, paramList)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Section2\intro.py", line 208, in destroy
self.cam_rig.cleanup()
^^^^^^^^^^^^
AttributeError: 'Intro' object has no attribute 'cam_rig'
:task(error): Exception occurred in PythonTask eventManager
Traceback (most recent call last):
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Game.py", line 1031, in <module>
common.base.run()
~~~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\ShowBase.py", line 3331, in run
self.taskMgr.run()
~~~~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\task\Task.py", line 553, in run
self.step()
~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\task\Task.py", line 504, in step
self.mgr.poll()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 49, in eventLoopTask
self.doEvents()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 43, in doEvents
processFunc(dequeueFunc())
~~~~~~~~~~~^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 99, in processEvent
messenger.send(eventName, paramList)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Section2\intro.py", line 208, in destroy
self.cam_rig.cleanup()
^^^^^^^^^^^^
AttributeError: 'Intro' object has no attribute 'cam_rig'
And, this in section 3 :
Traceback (most recent call last):
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 49, in eventLoopTask
self.doEvents()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 43, in doEvents
processFunc(dequeueFunc())
~~~~~~~~~~~^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 99, in processEvent
messenger.send(eventName, paramList)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\common.py", line 522, in <lambda>
KeyBindings.add("advance_text", "f6", "text", lambda: TextManager.advance_text())
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\common.py", line 606, in advance_text
text_np = cls.text_nodes["multi_part"]
~~~~~~~~~~~~~~^^^^^^^^^^^^^^
KeyError: 'multi_part'
:task(error): Exception occurred in PythonTask eventManager
Traceback (most recent call last):
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\Game.py", line 1031, in <module>
common.base.run()
~~~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\ShowBase.py", line 3331, in run
self.taskMgr.run()
~~~~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\task\Task.py", line 553, in run
self.step()
~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\task\Task.py", line 504, in step
self.mgr.poll()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 49, in eventLoopTask
self.doEvents()
~~~~~~~~~~~~~^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 43, in doEvents
processFunc(dequeueFunc())
~~~~~~~~~~~^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\EventManager.py", line 99, in processEvent
messenger.send(eventName, paramList)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 337, in send
self.__dispatch(acceptorDict, event, sentArgs, foundWatch)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Shivam\AppData\Local\Programs\Python\Python313\Lib\site-packages\direct\showbase\Messenger.py", line 422, in __dispatch
result = method (*(extraArgs + sentArgs))
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\common.py", line 522, in <lambda>
KeyBindings.add("advance_text", "f6", "text", lambda: TextManager.advance_text())
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "c:\Users\Shivam\Downloads\Panda3DSciFiTechDemo\Panda3DSciFiTechDemo\common.py", line 606, in advance_text
text_np = cls.text_nodes["multi_part"]
~~~~~~~~~~~~~~^^^^^^^^^^^^^^
KeyError: 'multi_part'```
Problems with the geometry generator can be avoided by simply making them at the project build stage and saving them as a .bam file. You can do the same with collision geometries, this will to some extent eliminate the above problems with geometric data.
I think that part of the issue comes from the fact that we wanted, specifically, to procedurally generate the ship-geometry at run-time.
(As we wanted to show off Panda’s capabilities in this regard.)
For section 2, however, it’s not really necessary, in the end.
Based on a quick diff, they seem to have different approaches to a few things, including how the main menu is handled.
I honestly don’t recall why this is–perhaps Simulan will remember better than I!
What if you played an animation of the ship being built at the runtime, instead of actually doing it ? i don’t think so that it would break any of the existing systems.
one major difference that i found was that one of them worked ( Game.py ), while the other ( Game2.py ) threw an Error and crashed.
I downloaded Panda3D 1.10.10, but there are still problems with the geom data. It’s something in the loader the .gltf files have changed.
It seems that the problem is that models can be loaded both through Assimp and through a third-party plugin (Moguri). Perhaps all the problems are related to the mixing of these features.
At the moment, it is not clear what is used to load models, it is not clear whether a plugin or Assimp is required.
That could probably work–although it would run counter to the point of the effect in the first place.
Well, that is a fairly salient difference, yes. ![]()
I can certainly believe that this is the case–some more-recent change in one or the other gltf loader breaking whatever it was that we were trying to do there.
I mean, it’s not clear which loader is required for the project.
Add:
I found out that the .gltf plugin is actually required for the project to work. I think it’s easy to fix this by specifying a dependency in git.
The thing is, I honestly don’t remember myself at this point. (And am not inclined to dig overmuch into an old project like this right now.)
Ah, thank you for that! I’m glad that it sounds like it should be an easy fix! ![]()