Three new community projects

Hello all,

I have three projects that I would like to work on with others in the Panda3D community. These ideas have been rolling around in my head for a while and I’ve decided that I will never work on them unless I can get some other cool, motivated people like you involved.

  • A Python learning game (think virtual robot programming)
  • A collection of classic game implementations
  • Collecting and converting models for Panda3D

Also let me add to this list continued work on the Mac packaging. Beyond the look and functionality of the current DMG, I haven’t done much real work.

Project Descriptions!

Python learning game

We have all seen the classic “learn programming” games where one writes a script or interacts directly with a character/robot to accomplish tasks, and that is the basic idea behind this implementation. There are a few things that I think makes a Python and Panda3D version compelling for this sort of program.

  • Python is a real language. The skills learned by the student are directly transferable to real-world applications.
  • The ability of the student to interact with the world in their code is incredible. I can see advanced students writing code that imports their own objects into the world, complete with 3D models, that interacts with the world the way they code them up.
  • Panda3D’s graphical and multimedia capabilities would allow this program to potentially blow competitors out of the water and shed the ‘edutainment’ moniker.
  • Networking capabilities could allow multiple learners to work in the same world - collaboratively or competitively.
  • A good design will allow students to progress to contributors, since they are learning the language and framework the program is written with. They can then turn around and contribute new learning modules, models, environments, etc.


  • I was thinking a two-pane window split vertically (since most screens are wide now) with a wxPython/wxScintilla editor on the left and the Panda3D world on the right. I am open to other suggestions such as doing the coding window in Panda or using a different windowing toolkit. I know wxPython pretty well.
  • Students watch a tutorial on what needs to be done. i.e. what the goal for this environment is, and get programming instruction.
  • They then write a script which controls their character and guides them through the objectives. Think of a script that tells the character to go to a locker, obtain (instantiate) a new item (which has its own class they need to work with) that gives them some ability (like flying), then they fly a path to the goal!

Classic games implementations

Two older articles I found inspired this idea:

Basically, there are always some games that beginning developers go through creating. Panda3D, being accessible and written in Python, attracts a lot of beginners in both programming and game development. The question for these beginners is always “how would I do [game dev topic] in Python/Panda3D?”

I would like to see this project take on three goals:

  • Provide good reference material for implementing certain kinds of features
  • Show off Panda3D and get its name out there as a game framework that actually has some fun free games
  • Create some FUN, complete, attractive classic games

I dub this project “Panda3D Recreations” :wink: if it ever gets off the ground. Game types/styles I would like to see include the ones given in the links above: Tetris clone, Pac-Man, Mario/Platformer, side scrolling shooter, dungeon crawler, maybe a basic RPG with menu systems.

Lastly, Collecting and converting models for Panda3D

This project already had sort of a jump start and stalled. The Google code project I put together has some more information, but basically I’d like to get some Panda3D-ready models together for those of us with less Blender skills than some of you :wink:

New, original models would be awesome, but there are many good, freely available models that could be converted as well. For example, the Glest models could be used in an open source Panda3D game if someone just converted the formats and did a little clean-up. This is out of my league, unfortunately, but I’m hoping to prompt someone who can do it to help us all out!

You and me

I recently returned to graduate school from working full time to pursue a Phd in statistics. I of course thought I would have more time than I actually do :smiley: . I am motivated, encouraging, and good at organizing people and tasks to accomplish goals. I’m also decently handy with Python, C, C++, BASH, and a bunch of toolkits. I also have some server resources we can use and am a pretty handy UNIX sysadmin. I am short on time but big on working on things I love.

You know Panda3D and/or are a good 3D modeler/artist OR are highly motivated and have time to learn one of those things.

Hope to hear from you soon!

Some very neat ideas you have there!

This sounds rather ambitious as you’d have to develop a wholy new leightweight python interpreter so that students musn’t be afraid of breaking something. also, wx is still rather unstable in conjunction with panda (see demomaster). not to mention all the lessons, you’d need to design.

count me in in this :slight_smile:
i always wanted to recreate some classics in panda, but was lacking motivation.

we have a few basic models in distribution already. i’m not sure if hi-quality models are not a bit behind the scope of a game engine/library.

I don’t think a restrictive interpreter would be in the best interests of such a project, at least not initially. I would like to give the ability to do whatever one extending the program could normally do. Careful execution of student supplied code in a way that doesn’t crash the program would be needed, but I think this can be attained for most cases (syntax errors and such).

I like the idea of writing programs that can be arbitrarily extended by the user during runtime using Python. I have a previous experiment where I played with this idea in LAD.

I agree that mixing wx and panda is a little immature right now. I had looked at demomaster, and preferred the way that p3ddojo worked more. In fact, p3ddojo would make an excellent starting point for this project with some work.

The lesson design would be exactly what I think I could contribute to the most! That, and developing lesson design tools.

Awesome :slight_smile: I’ll talk to you more about what we can do (project organization, code hosting, what you want to do, etc) in PM or IRC.

With regards to the whole learning python via a game things the fps project that some of the people on this forum are ‘secretly’ involved in already has a console that allows you to type in arbitrary python, and control the game - it takes very few lines of code to set up actually. Not sure a fps is the best environment to be learning python from, but I made a point of keeping that option open. Anyway, that project is likely to become public after 1.7.0 is released, as it is highly dependent on cvs features. That is assuming the time can be found to do sufficient polishing before then of course. We seriously need some artists!

I’d love to see how this is done if/when the code becomes accessible. FPS is definitely not what I’m going for, but it might make for a great starting point.

I’m new to the Panda3d and Python community but i am not new to using Blender due to the fact on my spare time i like to make model mods for Oblivion and Fallout3, I know my way around .nif models which seem more complicated than the .egg format that is being used, all i need to do is learn how to rig armatures to models correctly, and learn how to use the chicken export plug, as it comes to modifying existing models and finessing vertices i have plenty of experience, i could try my hand at converting an existing model for use in Panda3d, the only concern is that most free model are creative commons or some kind of license, and require the original creator to be given credit, some don’t but it would be nice to give it anyways, and gathering model from all over the place such information would get lost as to who made them originally, a system should be set up to name models using this approach including the models name, licence, and original modelers name

BigRock_CC_thisGuy.egg Format needed(.egg, .egg.pz, or .bam)
BigRock_CC_thisGuy.txt Sometimes a license doc is required to be kept with model
BigRock_CC_thisGuy.blend the Project that contains original Model for further editing down the line
(CC would stand for creative commons, the version could be included CCv1 )

Just a thought :open_mouth: , if not a long thought. :laughing:

There’s a tag for comments inside a egg file it looks like this:

<Comment> {
  "This is a place to write comments"

Put all license, credits etc there and it will never get lost.

A .blend file with the “source” model is nice, but since only Blender can read those it’s not very portable…

wezu Thanks for the reply :smiley:

Do the compress egg.pz and .bam files retain the comments?

And what model format is the most compatible with blender and other editors currently used(most popular)?
it would be nice if the egg format would be the only one used period, one file for all your needs. it would be a unifying factor but i have tried to convert eggs to all available formats supported by blender(.x, .dxf, .flt) and none of them work there is something broken in all import attempts, missing faces, uvs, most likely animations and armatures also gone. From what i have read on the manual i might be mistaken the egg format is not usable for keeping original models for editing down the line, for the moment at least.

as for blender every one can download and use blender since it is freely downloadable, and i believe runs on other platforms, it is also easily updated. not every one has access to commercial editors but those who do have access to Blender as well.

If a model format can be found that works on most of the current model editing programs alike while not loosing anything then that format should be used what ever it is, .blend or not.
if not then a more easily attainable one should be used.
That way Blender could be used just to export to formats that are compatible with what ever your using. :open_mouth:
Hopefully the exported model blender creates is also intact… for what ever format you use, and what others use. Hopefully that isn’t a problem waiting to happen.

Once you have the model converted you don’t have to deal with blender on your end.

Testing needs to be done on all fronts what ever path is taken. The key thing is that the base models are part of the learning process functioning models that can be converted to egg right off and should work without any modifications. So that changes can be made by the user without having to figure out what’s wrong with the model to begin with.

egg.pz does, .bam doesn’t, afaik.

Most blender users prefer .egg as there is an exporter for blender that can output .egg. When using .bam, be careful to store a copy of the original model - as a .bam file may not be compatible across Panda3D versions.

That solves the license and original modeler crediting problem, if some one uses a model from a demo in their own work they should know who created it especially if its a free open one, some models I have found have other restrictions put upon them like they cant be used in violent games, so much for a rts or rpg demo :laughing:, but they could be used in other ways like Panda3D environment demos showcasing different effects,

The egg.pz format which is the more compressed version of the model should be used, thank you rdb and wezu for your knowledge about what should and shouldnt be done.

Since the model should be free to use it can be incorperated into other projects maybe other demos could share models like character models and enviromental stuff like crates and furniture could be usable across the board.

But what about the format used for base models, it should be editable by the community and cross compatible, the egg format is good for distribution but is not editable buy people trying to learn from them like me, i would like to be able to load them into my 3D editor and see their inner working like armatures of characters, the weighting of vertices for deformations, and how environments are created, like collision, and other stuff.

There should also be an attempt to create a one size fits all armature for characters so that different models can be compatible and interchangeable, like a robot, goblin, human male or female model could have the same armature basic humanoid all around, and i would guess they could use the same animation files if exported to external files;
extra bones could always be added when the need arises they just wont be animated in every demo, i don’t know if this would be a problem if a model has extra bones in its armature it shouldn’t affect the use of it, shouldn’t the extra bone(s) be ignored by any program using it, only the lack of bones could be a problem like if one model had extra bones for armor and stuff, then it wouldnt be commatable with scripts looking for a given element in the armature, that should be avoided for demo purposes, bones that should be included are equipting thing in hands, maybe for a 1st and 3rd person camera that moves with model.

Just my thoughts :slight_smile: , I’m new to all this, I’m not sure everything i have stated is doable who knows, some one with more skill than I might be able too… as for me i’m reading all i can on the forums to learn from what others have done… need to take a break from all this reading :open_mouth: , and get some python programming under my belt, maybe try to get some models converted using Blender using the wonderful Chicken Plugin.

[edited] ps I know im long winded well at least long typed, i know your eyes hurt after reading all this, i will keep that in mind and make tiny posts in the future. :stuck_out_tongue: