Panda3D Open Game Project

I have just recently watched the latest open movie for blender and I was wondering why don’t we have open game project which could help to integrate new features or increase documentation as well as having another game that panda3D could showcase.

I am still much of a noob when it comes to panda3D(and python for that matter) so I probably would be limited to what I can offer however I am sure that there are many other programmers that could help.

Once there has been enough interest in this idea then we could look at what new features people would like and then come up with a game that uses them. This is just an idea, however if you are interested in further developing panda3D and having a new game at the end of it then let me know.

We don’t have a huge community as Blender.

If youre interested I have been working on a tutorial for making a platformer game from start to finish and of course there will be a game in the end, but this project wont really “help to integrate new features or increase documentation”.

An actual Open Game project is naith: … a92f08db4a
But I don’t see much progress. We have many programmers, but many dont hae enough spare time.
And I’m not familiar with ODE or FPS games.

I think this topic should be in general Discussions, as its just an idea.

I disagree with that opinion. I don’t think it could be useful to distribute efforts out of the engine. Obviously it could be interesting to have more games based on Panda, but I think the matter is another. Open (and closed) projects will ever be created, so it isn’t necessary to put energies on creating another one. The problem is many of them don’t select Panda as engine (for example Yo Frankie selected CrystalSpace, but there are many other examples in the open source world).

I think it’s more useful to not allocate energies on making a fictitious game, but allocate the same energies on improve the engine, and so obtain more and more games that use that. So you obtain much more upstream contributions compared to those of a single game.

Improvements on the engine should enlarge contributions (think for example how many games you could see if an iPhone version of Panda already existed). But also other little improvements could help to enlarge the users base.

Obviously this is only my opinion and I respect your. If you feel that your way to contribute is with a game, I’ll admire that, of course. But honestly I think, in the long run, games using Panda will naturally come out if Panda will offer a solid engine to them. The question imho should be: why aren’t open projects selecting Panda as engine? And contributions should go on that.

There’s Naith, at the forums here.

(this is a long message, if moderators remove it I understand)

Maybe I was a bit unclear, I don’t think Naith is useless (I think exactly the opposite). The point is that I think everyone here is already involved in a Panda project (otherwise, why does he stay here?), so there are already many projects based on Panda. There are more than 4000 users, not all active, and more people are on the same project, but it’s reasonable to think that there are many projects active. Suppose for example that there are 20 active projects, is a big difference (from the point of view of Panda) if there were 21 active projects?

And I think that it’s also a negative thing (from the point of view of Panda) to have many little projects (that is, if you share your time between your project and the “open” project). Because an engine improves when an application that use it is hitting a limit, so the application is “constrained” to enrich the engine. So, it’s better (for Panda) if you allocate your time on doing a complex application and not on doing two simpler applications.

What I would say with the previous message was that we’re already allocated on many projects (everyone here is involved in a project), and I don’t see a drastic improvement with one more project. Instead, other forms of collaboration are (imho) better (obviously doing one more project is better than nothing).

Maybe the key point of your idea could be to make an open project. If that’s the case, I disagree that an open project is (from the point of view of Panda) better than a closed one. What keep in life an open source project (in this case, Panda) is the work of the developers mainly, but also upstream contibutions have their importance. And those come up both with open and closed project. Ok, BSD license doesn’t force you to release code, but if you improve the Panda engine and you don’t release the code, you’re doing a very stupid thing. If you submit your modifications, and if these are interesting and merged, all the activity of maintaining them will be done by developers. If you keep your code secret, for each new release you’ve to integrate it. And after some releases there could be lot of differences and the integration could be dramatic. Or impossible (for example if developers remove methods you’ve used - obviously this doesn’t happen if you release modifications). This is why people release improvements also if they aren’t forced: it’s convenient. So, shortly, I don’t think there’s a real difference (for the improvent of Panda) between open and closed projects.

Generally, the success of an open source project is determined by developers (mostly) and community. A good community has a big role. A project has many components: code, documentation, support, testing, promotion… Not everyone can do all these things but in a good community you’ll find a good coverage. And it’s more likely to find a good coverage in a big community. So the key point is to work in the direction of enlarging the community. If you’ve a big community, it’s more likely to find good coders, good people that document, good people that support, … If there was a good coder and when he was selecting his engine he discarded Panda, Panda has lost a potentially good contributor. So, the key is to do what everyone can do to make Panda better. Not everybody can code, not everybody can document, not everybody can support, but everybody can do one of these things.

Maybe a diffuse misconception is that not everybody see that each activity you can do on the “ecosystem” of the engine has a direct impact on the development (of the engine). Developers work on code, but also on documentation, on support, on testing, on bugfixing, … (because they understand that’s important to enlarge the community) If, for example, you help someone on the forum, you’re saving the developers’ time. Because if you take some time to help a person, the developer won’t need to help him, and so he could allocate that time on making cool things for the engine. And the same is valid for documentation and all the other things. So, your contributions are (almost) a direct contribution to the development of the engine. And these are a direct contribute for the enlargement of the community, because better documentation/testing/features/support are things that keep users to Panda.

This is the spiral that gives life to all open source projects. You help a person, he doesn’t give up, he stay on the project, and in the future he could help (with support/documentation/code/…), and you’ll benefit from his contributions. So you get benefits from your own work. This is a win-win situation. So, with little work you’ll get a much better engine.

What I want to say is to think carefully to where to allocate your energies. Everyone has little time to work “for” Panda, and you can’t be wrong, in the interest of Panda. So, I only want to say that having one more project (subtracting that time from another Panda project) is less important that “directly” work for the engine. If you work very well on one beatiful project is sufficient, and you can get better results (and this is a direct form of promotion for Panda).

Sorry for the long post and for the ugly english. It should be terrible to read my writings.

Obviously I think many people already know the “concepts” I’ve written, but I’ve written these for the others. All the considerations made here are only an opinion, personal, I respect all the other points of view. :slight_smile:

To me it seems like naith should be maintained… It has lots of potential and i would personally love to keep working on it, however it seems like its missing any sort of direction. If there was some sort TODO list for it, working on naith would be a lot easier.

Also to me. Maybe I can’t explain well, but I’m NOT against Naith (in that case I were crazy). The point to me is that these JASGames’s aims:

are obtainable with any Panda project. Also a closed project helps to integrate new features, increase documentation and is a new element for showcase. But, obviously, also open ones are very important (so Naith is very important). If Panda developers aimed only to open projects they could choice a GPL-like license. But with a BSD license maybe paradoxically you’ll get more contribution (because the users base is larger). To me the important thing is that everyone here is on a Panda project, openness is a secondary point (from the point of view of the engine, obviously open projects have many other benefits, but the context - here - is composed by JASGames’s aims). So, if JASGames has already an active project, I already consider his project important, because it’ll indirectly improve Panda. To be definitively clear: I love Naith and I hope the best for it!

With regards to Naith - it basically has stopped being developed. I just don’t have much time, and have been spending what little time I have working on other projects. (I would like to continue with it of course, but just not going to happen right now.)

Its only ‘direction’ as such is towards ‘awesomeness’ - because of its demo-like nature I imagine ultimately it could just be a list of demo levels, each short but each a good demo of Panda in some way or another. If some of those levels could actually be fun, or long enough for people to get into them, so much the better:-) If one were to become a full blown game it could be forked off and made into an independent entity with little effort. The naith system is quite flexible - I could get a platform game out of it in a weekend, due to its modular nature, so it doesn’t even have to remain a fps only.

If anyone wants to submit patches/modules/features/tutorials/levels I would be willing to add them to the repository, and eventually give anyone who has proved themselves a decent coder full access. I’m also perfectly happy to answer questions on how it works etc. Whilst in the future I might pick this one up and start running with it again if people want it to get better now I’m afraid someone is going to have to pick up the gauntlet.

I think is a great idea. Even a small game(s) will benefit both Panda and Sintel projects, though IMHO Panda is the one who needs more visibility.

I personally agree with yaio.

I don’t think it’s a matter of making great opensource games with panda but developers should focus on improving the engine.

I worked a lot with panda3d and recently started working with commercially widely used engines like Ogre3d because i wanted to learn C++ and I can say that working with the latter is much more difficult and time-consuming, because you have to implement by hand a lot of things panda does for you (like panda’s intervals and other nice features)

On the other hand engines like Ogre3d are more “flexible” than panda because they let you choose which libraries you will use for physics, input system and sound, and the variety it provides is much larger than panda’s. You won’t have to write much glue code either, because there are nice wrappers that do this work for you.

I think what makes many developers discard panda is its limitation for libraries and maybe it lacks some features other engines have.

For example, many developers want to use Bullet for physics but since panda does not provide direct support for this library doing this in panda would be very tricky. One may say: “yes, but panda has ODE and it’s good too!”, Okay but if a developer prefers bullet this will probabily take him away from panda.

This is just an example but applies for many libraries panda does not directly support but are widely used in commercial games.

So with more wrappers I think developers will definetely get more interested on panda.

Another problem is maybe that feautures like stencil shadows which are supported by other engines by a lot of time were only recently added in panda and are still giving some problems.

In conclusion, IMO Panda is a great engine because is the most pythonic and easiest to use engine out there and I personally love working with it, but still lacks the features I mentioned which often makes it discarded for commercial games.

Why haven’t you used Panda with C++, instead?

I don’t think not providing features is better than providing them. :slight_smile:

I’ve a different opinion about this. I think the way isn’t to support more libraries. Every developer has his set of preferred libraries, and you can’t satisfy everyone. And, for the developers of the engine, supporting more libraries is a way to kill the project, because you’re exposing it to more bugs, and the engine will become unusable. I think it’s better to provide a strong support to few libraries, and think in terms of extensibility.

An engine should make itself independent from external dependencies. It should have a clear “interface” defining the requirred services. For example, if you had a “GUI interface”, you could simply add the support for a new GUI library. And the same can happen for other libraries (audio, physics, …).

So, I think the developer’s effort should go on making the extensibility as simple as possible, and not on extending the engine with more and more libraries (in the core). The more the extensibiliy is simple and the more is likely to see the same set of wrappers you cited for Panda, too.

Agreed, I would much rather see effort put into a solid, bug-free implementation of one or two options rather than a dozen options that are either not fully implemented or are buggy.

Uhm, maybe you got me wrong :wink:

I’m not talking about “incorporating” many libraries in panda but just offering minimal python wrappers to make the use of those libraries with panda easier (just like Ogre does. It does not give you the LIBRARY itself but it provides a wrapper to manipulate it easily within the engine)

It is true that the wrappers may be buggy at first (it would be strange if they weren’t) but with slowly added improvments they would get to an usable state sooner than we may think. (Just like it happened with ODE)

As you said, since every developer has preferred libraries, and you cannot satisfy everyone then you SHOULD at least provide him with wrappers for a few commonly used libraries, keeping them separated from the main project.

I’m talking about just a few libraries, not a mess of dozens of wrappers.

If you give good support only for one specific library (for example ODE), and the developer wants to use Bullet he will probabily not use Panda3D at all, because it’s much easier to integrate it in Ogre than in Panda3d.

I didn’t use Panda3d with C++ because you would lose many nice features which are only available for python. If I had to choose C++ as programming language I would go for Ogre instead.

However I respect your opinion. :wink:

If your primary goal is to learn C++, you could experiment with Panda; during this time Panda should go in the direction of equalising C++ and Python access, so you can then use your C++ knowledge with each feature (in the future, so this approach depends on your plans).

Oh yes, I enjoy this discussion, it’s serene. :slight_smile:
I’m alerting you because I used Ogre in the past, and the quality of the various wrappers weren’t at the same level as the core. I remember as nightmares the attempts to deploy my application on the various systems. In Panda the deployment is smooth. But now the situation may be improved in the Ogre world, I don’t know. Obviously I don’t want to convince you, I’m only sharing my (little) experience with these engines, hoping that it could help to avoid the same errors. :slight_smile:

Ok so maybe a open game project isn’t the best idea seeing as there are already many projects running, I see that now however I am still interested in finding out what features other engines like Orge3D or Crystal Space have that make them more appealing for some.

Thanks for all your input everyone so far :smiley:

This topic should go to General Discussion, since there is nothing to showcase.


Now then, as I said I suggest porting Yo Frankie to Panda3d. It doesnt mean Im asking for help, just want to know your thoughts and if its worth it, or maybe I should do something else?

If Bullet support is a critical feature for some of you: I have a good integration available. I’m holding it back because we (Panda3D developers) wanted to experiment with much tighter integration of physics into Panda3D. The target for release has been Panda3D 2.0 or later.

I’m looking forward to that Bullet integration.