Working on a game with working title: Omicron 35

Hello! I have been tinkering with Panda3D for some time now and have put together a teaser trailer for a game I am working on. I thought you might find it interesting.

I am trying to create an atmospheric experience, which I showcase in the teaser. Feedback is of course very welcome, both to the teaser, game graphics and the source code :slight_smile:

The teaser: https://www.youtube.com/watch?v=EtAMTK0i6H8

The GitHub: https://github.com/MaxwellSalmon/Omicron35 (Still in very early stages)

Here are some screenshots from the game:

Thank you for your time!

5 Likes

The teaser is beautiful! I downloaded the codebase from GitHub, and got it running - there’s a hardcoded path the the egg files that was a very slight problem for me - but I did bring up ‘prototype.py’. Are there resources not checked into the project? I can walk around the world, but it’s all grey except for the clothes and door. :slight_smile:

Anyway, I am just learning about Panda3D and appreciate your sharing with us!

(I have a game in mind - more of a VR training thing that a game, really - that would also take place in snow!)

PS - To fix the .egg path, I did this:

ln -s ./textures/ ../../../Python37/Portfolio/Panda3D/Omicron\ 35/textures

1 Like

Thank you! I am glad you find it interesting :slight_smile: Oops, the prototype.py should not even be there. It is really old and I forgot everything about it. The file to run is main.py.
The textures are probably from when I exported them from Maya… Hmm, perhaps I need to apply the textures when loading them, so they do not have hardcoded paths. I did not think that would be an issue. Thanks for notifying me!

I ran “main.py”, but that’s an extremely small test - one brown rectangle floating in space, and the word “TEST”. Right?

One brown rectangle floating in space…? That must be a door. The word “TEST” sounds right, though. Hmm… It would make sense, if the textures were just missing. Does the console give any output? Do you have the interior.egg in the models folder?

I get:

rob@ScreamerIV:/mnt/d/proj/panda-examples/Omicron35-master$ ppython main.py
Known pipe types:
  wglGraphicsPipe
(all display modules loaded.)
:collide(error): Invalid attempt to detect collision from CollisionCapsule into CollisionRay!

This means that a CollisionCapsule object attempted to test for an
intersection into a CollisionRay object.  This intersection
test has not yet been defined; it is possible the CollisionRay
object is not intended to be collidable.  Consider calling
set_into_collide_mask(0) on the CollisionRay object, or
set_from_collide_mask(0) on the CollisionCapsule object.

Something is missing

That last “Something is missing” happens when I click the mouse on the mysterious “door”.

I can dump the list of that egg file’s contents, thusly:

rob@ScreamerIV:/mnt/d/proj/panda-examples/Omicron35-master$ egg-list-textures.exe --noabs models/interior.egg

BeamsShape.png : unknown
HouseInterior_reol.png : unknown
Kettle.png : unknown
VariousShape.png : unknown
antennaShape.png : unknown
bedclosetShape.png : unknown
books.png : unknown
ceilinglamp.png : unknown
chair1Shape.png : unknown
chair2Shape.png : unknown
desktopShape.png : unknown
firewoodShape.png : unknown
frost.png : unknown
furnitureShape.png : unknown
groundplane.png : unknown
interioroutlineexport_polySurface30Shape.png : unknown
ironfurnaceShape.png : unknown
kitchen1Shape.png : unknown
lamp1Shape.png : unknown
lamp2Shape.png : unknown
lockers1Shape.png : unknown
lockers2Shape.png : unknown
lowpolyexterior.png : unknown
mountains1.png : unknown
mountains2.png : unknown
oven19Shape.png : unknown
plantShape.png : unknown
roofshape.png : unknown
showerdrainrackShape.png : unknown
sinkshape.png : unknown
suticases.png : unknown
tableShape.png : unknown
toiletShape.png : unknown
wadrobe.png : unknown
wallsShape.png : unknown
waterheaterShape.png : unknown
weatherbox.png : unknown
whiteboard.png : unknown

Thanks for your replies! Hopefully this is helpful to you, too. I don’t want to distract you from working on your project. :slight_smile:

I guess I should tell you that I’m running this on a Windows box, but using WSL (aka Ubuntu for Windows) for my shell. Perhaps I should boot into straight-up Linux and make sure this isn’t a Windows thing…

Alrighty, then! My bad. I think my bash-fu isn’t as powerful as I would have thought… or maybe it’s WSL… but anyway, running on for-real Linux (Ubuntu 20.04), it works fine.

Never mind, and thanks again for a great demo! I look forward to seeing more. (Or maybe even I will be posing my work here soon… one can dream!)

/rob

1 Like

Alright, so does everything work as it should? Even the texture paths?
Thank you for the time you put into testing it :wink:

Sorry I didn’t get back to you sooner - I just upgraded my box to Ubuntu 20.10, and had a couple little issues I had to deal with (no networking or USB!) but now I am back. :slight_smile:

I ran the demo again and note two missing textures, perhaps:

  1. The clothing - all three items hanging in the entryway are white. (I suppose they share the same texture?) The first attached image shows this (I stupidly clicked once before I got the screen shot, so one item disappeared, but it was white before I clicked.)
  2. The shower curtain is also texture-less. (image 2)
    No errors were thrown to the console, which I have included below.

Note that I am getting some texture-not-found messages because game time went into “night”, which I had not encountered before. I’ll see if I can fix (ie workaround) them the way I did the others, and let you know.

Glad to be of any help!

Console output:

    rob@ScreamerIVu:/media/rob/DataSSD/proj/panda-examples/Omicron35-master$ python3 main.py 

Known pipe types:
  glxGraphicsPipe
(all display modules loaded.)
:pnmimage:png(warning): iCCP: known incorrect sRGB profile
:pnmimage:png(warning): iCCP: cHRM chunk does not match sRGB
:pnmimage:png(warning): iCCP: known incorrect sRGB profile
:pnmimage:png(warning): iCCP: cHRM chunk does not match sRGB
:collide(error): Invalid attempt to detect collision from CollisionCapsule into CollisionRay!

This means that a CollisionCapsule object attempted to test for an
intersection into a CollisionRay object.  This intersection
test has not yet been defined; it is possible the CollisionRay
object is not intended to be collidable.  Consider calling
set_into_collide_mask(0) on the CollisionRay object, or
set_from_collide_mask(0) on the CollisionCapsule object.

:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane4 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane3 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane2 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/frost.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/frost.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/pPlane1 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/suticases.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/suticases.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/out:pTorus6 found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/wadrobe.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/wadrobe.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interior.egg/wardrobe found.
:gobj(error): Texture::read() - couldn't read: textures/Night/HouseInterior/blanket2ShapeOvercast.png
:gobj(error): Unable to find texture "textures/Night/HouseInterior/blanket2ShapeOvercast.png" on model-path /media/rob/DataSSD/proj/panda-examples/Omicron35-master:/usr/share/panda3d:/usr/share/panda3d/models
No new texture for render/interactive_objects/bed.egg found.

It looks like these really are missing:

textures/Night/HouseInterior/frost.png
textures/Night/blanket2ShapeOvercast.png

and I think these two are just mis-spelled in the code:

  textures/Night/HouseInterior/suticases.png
  textures/Night/HouseInterior/wadrobe.png

:slight_smile:

A question for you, Maxwell - did you hand-write the code here? Or is it generated by something, or from some template?

I ask, not to criticize at all, but I’m just learning Panda3D and am somewhat put off at the prospect of writing >2000 lines of code, as you seem to have done here, just to wander thru a scene! (Which, again, is quite beautiful and extremely cool!)

/rob

1 Like

I think that, if you start with just the basics and build up from there one element at a time, you might be surprised at how those two-thousand lines build up.

Or put another way, you don’t have to write two-thousand lines all at once–instead, you may write ten to start with, and then another twenty for this feature, and fifteen for that, and maybe there’s a larger one that takes fifty lines, and so on. And so the lines accumulate.

Thank you so much for your reports. I’ll look into the missing textures - all the missing textures are individual objects, not a part of the house, so it narrows down the problem. Also, I think you are right about some misspelled file paths :wink:

Do I really have over 2000 lines of code? But yes, I have manually coded everything you see in the .py files. But I have also spent lots of time trying to make code, which makes life easier for me - lots of modules for working with models, scenes, functions, triggers and so on the way I find it useful. Some of the scripts (especially colliders.py) were hardcoded in an ugly way, taking up a lot of space.

So you do not need this many lines just to walk through the scene. I believe I have lots of code which does not visibly affect the scene.

1 Like