I need your support about pand3d

Hello everyone;

One year ago, I decided to make a game.

At that time, I was a complete beginner in programming, but somehow I still decided to start a huge project. :grinning_face_with_smiling_eyes: I guess I am just too good at finding ā€œbrilliantā€ ideas.

So I started researching programming languages, and honestly, most of them looked impossible to understand for me. But then I discovered Python.

Python felt much more readable and understandable compared to the others, so I decided to start developing my project with it.

Originally, the game was planned as a 2D project. But later my ā€œgenius ideasā€ attacked once again, and I decided to turn the project into a fully 3D game instead. :slightly_smiling_face:

After researching many engines and frameworks like Unity, Unreal, Godot, etc., I eventually decided that the best option for this project was Python + Panda3D.

So here is my question for you:

I have reached a certain level visually, but I am wondering if I can push the graphics further without sacrificing too much performance.

One important detail is that the game does a LOT of calculations in the background, so performance is extremely important for me. Effects like bloom definitely improve the visuals, but they also reduce performance noticeably, so I am trying to find smarter and more optimized ways to improve the graphics.

You can see the current visuals on the Steam page:

If you have any suggestions, techniques, or ideas I should research, I would really appreciate it.

By the way, ComplexPBR and some Panda3D rendering solutions did not work very well for my project, so I ended up writing my own custom shaders instead.

The trailer will also be released soon, and the graphics will probably be easier to evaluate there. I will share it once it is ready.

I am not posting screenshots directly here because there are already plenty of them on the Steam page.

Also, you absolutely do NOT have to buy the game when it releases :grinning_face_with_smiling_eyes:
But if you wishlist it, that would help me a lot with visibility, and you would also be supporting a Panda3D game.

Thank you in advance for any graphics/performance suggestions :slightly_smiling_face:

3 Likes

I suppose that my main suggestion would be to include the various pretty-but-graphically-intensive visual features–but to make them optional.

That way people with more-powerful machines can turn on all the nice features, and people with less-powerful machines can still run the game, just without the extra visual elements.

More specifically, looking at your screenshots, the lighting feels very ā€œflatā€: there’s no variation in lighting due to the angle at which a thing is seen. (Only, I infer, from the angle at which light hits the surface.)

I suspect that incorporating that viewing angle may go a long way to making your visuals feel better–and potentially at fairly minimal cost, too!

[edit] Also, welcome to the forums! I hope that you find your time here to be positive! And I’m glad that you discovered Panda3D and Python, and have been finding them congenial to you! :slight_smile:

1 Like

Thank you for your feedback.
For the first proposal, I already did that. Grass (it is close at default settings, so you do not see it in the screenshots), trees, spectators, waving flag (do not see in the screenshots because ı did not take screenshot that area :slight_smile: ) can all be disabled. Even shadows can be turned off. So the first proposal is already implemented.
When it comes to the second suggestion, I think I understand what you mean. I need to study and research it a little more to fully understand what I should do.

Thank you again for your suggestion. I will come back once I study my lesson :slight_smile:

While such options may indeed help, I was actually thinking less about toggling geometry than about toggling shader features.

So, for example, you might implement bloom–but allow players to disable it.

And so on for other such features.

That way you can make your game even prettier, while still allowing it to function on machines that can’t handle the shader-load.

(I do note that you say that shadows can be disabled, which would I daresay be one example of this!)

Good good, and I hope that your study and implementation goes well! :slight_smile:

The project looks good, I’m adding it to my wishlist. I’ve noticed you have a really sophisticated user interface… Can I ask what you’re using? Is it DirectGUI?

I don’t know what calculations you’re doing in the background, but you might find Numba useful: https://numba.pydata.org/

Numba translates a subset of Python code into fast machine code, with no need for C++. It will compile your code the first time you call it. This can significantly improve performance.

Thanks for the wishlist and the suggestion. To answer your question: I am actually using a combination of PySide6, DirectGUI and Panda3D to build the user interface and get that polished look on ui and 3dside. Regarding performance, I am already using Cython and Nuitka to compile the project. it’s been a while since my last Cython build. My PC is decent, so I’m currently aiming for a constant 60 FPS on my setup during pure Python development. That way, once I compile everything with Cython for the final release, it will run smoothly even on lower-end PCs.

2 Likes