Suitability of Panda3D for tactical starship combat game.

Hello, I am a long time player of PC games but have never tried to actually create one before. But if you want something done right you have to do it yourself right?

I am throwing around the idea of trying my hand at some coding (with no prior experience but the ability to learn) and the game I really want to make is as follows:

*High end graphics depicting fully 3D space and massive capital ships, starbases, planets, nebula, star light, intricate HUD and fluid controls.
*Dozens of weapon types from ballistic, energy, missile, EMP, nukes, pulse and beam weapons.
*Complex damage model that allows for fully destructible hulls and location based damage.
*3rd person perspective (free roaming or anchored camera
*Full Newtonian physics for slow moving ships with momentum, mass and collision effects (ramming speed!)
*AI and online play

Basically, I ask because most of the demo screen shots seem on the lower end and I am unable to be sure how high end this engine can go. I want to target high end gaming PCs with lots of memory and modern hardware. Any advice on choosing this engine or another is greatly appreciated. Thanks :slight_smile:

Hi, welcome to panda3d.

long story short. panda3d is about as good as your GPU is. the rest is knowledge, skill and time comming from your end.

while there’s no technical reason holding you back, you’r more likely to run out of motivation. so especially for beginners there’s one golden rule:“start simple”

all that complexity and state of the art graphics takes a lot of manhours and, at the beginning, won’t get you a working game.

Good advice. I do plan to start with a simple foundation and work up, I am primarily concerned with hitting a ‘tech’ ceiling after having spent x hours and find that I can never get near my quality levels. As I am by myself for now I am more concerned with getting all the code in place and upgrading everything as I go.

The other issue is how ‘efficient’ the engine is; ie, can it render thousands of projectiles and do collision detection at 60fps as needed for a proper space battle?

As long as the engine has no inherent limits I might begin to dive in soon. Thanks.

I dont know if panda3d is suitable for this. Well, I am almost sure it is not. I am just a beginner but I am sure you can make nice looking games with panda. If you have no/little experience with game development then you cant make such (AAA) game by yourself. For so complex game you need an experienced team and probably very expensive engine or you can make one :laughing: and that would be even more expensive.
Panda is great for beginners(imo the best) and I really like it and it is free. I think panda3d and the power of python is a bit uderrated, when I see all the kids trying to use Unity3D/UDK. With panda you can make games easy and fast in 3D. All I know are basics of python and blender and I am making 3D game, while others are learning C++ and doing tetris remakes and other silly things.

What most other (commercial) game engines has that panda dont have is standard included tools, such as level editor, AI editor, object editors(loosely defined word:).
Take any game company, Such as Blizzard and their game Warcraft 3. They have a engine (Panda IS a engine), but they also have a level editor, Panda does not have that (Well, some have build & released their own), They also probably have an object editor (edit stats,model,ColMesh,scripting & other stuff) Panda does not have one(As before: community has build such things)

So unless you want or really need a homebrew game engine all you have to do is either build or borrow tools and make the game with those tools.
The engine will never hold you back! unless you are trying to make a 3D game in an 2D engine :smiley:
Actually this is not really true, But IF you need a feature in the engine that’s not implemented you should have reached the level where implementing that code into the engine would be doable.

AFAIK it goes like this:
Obtain needed tools
Make stuff with said tools
Show game prototype
Looks good? fine, redo all programmers art with real art
Optimize & start testing
Do it all again until release

And even if the engine can’t handle it, Fake it!
Cant handle thousands of real-time missile collisions? merge those thosands of collission capsules into an AABB and do the calculations on that.

Sorry for the long rant :slight_smile:

BTW P1trs, There is a very good explanation why so many learn C++ and do silly things. Speed, experience & industry standard.

In general, a level editor is for a game, not an engine. You may be able to build a level editor for an engine that only makes one kind of game, but even then it would probably be customized for the special features of each game.
With an open-ended engine like Panda, the best you could hope for are tools that would help making your own level editor easier.
Our “object editor” for example is just text files with the stats for each type of game object in them. It all depends on your needs.

I agree that a level editor is very game specific.
That does not mean panda won’t benefit from a standard editor.
That’s like saying you cant make a 2D platformer and a 3D FPS in Unity3D because it has a standard level editor.

Defining object properties in a text file works good (I also do it like that) sure if i want to for example, scale AABB of a character .002 i could change the textfile & reload that object but being able to scale it in the editor & immediately see the change really improves workflow for me.

IMHO Panda should have an extendable level editor like Unity’s.

Well I’ll admit I haven’t used Unity before. I’m under the impression that their editor is 3D only, and while perhaps possible, it would probably not be very efficient to build a 2D platformer using it.

I think one stumbling block with creating an editor for Panda is that Panda has no concept of what a “prop with physics” or a “character” are. Panda has Actors, yes, but it is only the visuals of the character. This of course applies only if you want an in-game editor. Otherwise you could use a program like Blender to place specially tagged nulls/locators and export to a text file that your game loads.

To answer the original question:

What you describe is fully possible to do with Panda. With no experience it is going to be massively difficult. Realize that the time to complete such a project is measured in years. If you are working alone only in your spare time, you could expect to spend five years or more making what you’ve described. If you are not ready to make that kind of commitment I suggest starting with something simpler that would allow you to learn programming and still be useful to your end goal. For example you might try making a “ship designer” that lets you view and edit the weapons of your ship.

Come on, guys. Let’s stay on-topic and supportive.

Panda imposes no limit on the number of objects that can be rendered at the same time. There is a limit on this, but that’s really a GPU thing - most GPUs have trouble with a few hundred batches per frame. However, Panda does provide tools like flattening and the RigidBodyCombiners, coupled with performance analysis tools, to help you overcome this limit yourself.

In these cases, the only limit that Panda would impose is if it didn’t support an important GPU feature that you need to implement your fast rendering technique. For the specific example of projectiles, you may or may not find yourself needing geometry instancing at some point (which Panda does support, although not through the easiest of interfaces). Other than that, Panda does not impose a particular limit.

As for collisions, this depends on your choice of collision engine and the way you structure your scene. It is certainly possible to achieve fast collision checking with Panda, but this really depends on your choice of collision solids, whether you octreefy your scene, etc.

I don’t feel it would be very supportive to encourage someone with no experience to jump headfirst into such a complex project.

To address each feature separately:

High end graphics - Panda can use Cg and GLSL shaders which allow you great control over the shading of your objects. Panda is not a limitation on how detailed your models are. If you put high detail models and realistic shaders into Panda you will get high end graphics the same as most engines.

Intricate HUD - Panda has several GUI solutions, some official, some not, with varying features. You can also simply build your HUD out of 3D geometry and layer it on top of the camera view.

Fluid controls - The “feel” of the controls is up to your coding, not the engine. Panda can accept keypresses and feed that into your gameplay code, but it does not have any built in “controls” to tell a character how to walk or to steer a ship. This must be done in your game code.

Dozens of weapon types - Again, not something that would be limited by the engine. You would code your weapon mechanics and build different art assets for each weapon.

Complex damage model / physics - Panda has several different physics engines to choose from. Some more basic, and others with more realistic features. You can have multiple collision shapes (“hit boxes”) on one ship. Based on your description you would probably want to use Bullet Physics.

Camera perspectives - Panda’s scene graph allows you to move your camera however you like, be it free floating, attached onto a ship, or the front of a missile.

AI - Panda has some basic AI that was written as a student project. It is largely untested. You would probably end up having to write your own AI.

Online play - You would have to write networking code to support online play. Panda has some networking features for sending data between computers (for example between a client and server). You would have to write your own code to figure out what data needs to be sent back and forth. The more data needs to be sent, the more work you will need to put into optimizing it to provide a lag free experience.

Most of the screenshots on Panda’s site are from games that are many years old, or student/hobby projects. The quality of graphics will depend on your own abilities.

It is our responsibility to help people and answer their questions, and not judge their capability to engage in a certain project.