SceneEdit or LevelEditor

I am looking to try gaming. I have been a programmer for over 17 years doing data basing. It is boring. I have found that gaming is more of a challenge. I understand 3D concepts, and understand that models, levels, and terrain have to be created and put into an environment to make a game.

Looking at Panda3D, it looks quite challenging, mostly because I will have to learn Python.

On the other hand, I am quite surprised from all of the talk about SceneEditor and LevelEditor, that no one who is a Panda guru, has put much effort into fixing those two editors.

What is a game engine without good tools? It is like a car without an engine. It won’t go anywhere.

Welcome to Panda!

If you are already familiar with C++, you will find Python a breeze to pick up. And everyone I know who has learned Python after learning C++ finds it suddenly becomes their favorite language. Furthermore, unlike graphics engines that have their own custom scripting language, learning Python will be useful to you in all sorts of areas that have nothing to do with Panda or with 3-D graphics.

If you’ve been reading the forum posts about the level editor, then you are already familiar with the fundamental problems posed by a generic level editor, and the arguments for and against attempting to maintain one.

But the single biggest thing a level editor needs is a champion, an individual who is willing to design, build, and continue to maintain a level editor that will suit not only his own needs, but also the needs of others. We don’t yet have anyone who has stepped up to be that champion. Are you willing to be?


If I were to try and fix the scene editor it would take me a very long time to work on it, since I work all day. Also, because I do not know Python, I would be like someone trying to build a car engine without instructions.

I know this would help me learn the classes to Panda3D and the syntax to Python, but again it would be better for a guru to fix the problem. I do not even know Tcl/Tk, if that is where the problem is happening. It would have to do with the build version. Maybe the calls changed or were deleted.

Again, it would be better for a guru to fix it, and someone who understands level editors.

People become gurus by doing stuff and learning as they go. If you can develop a game, you can certainly develop a level editor. It might take a long time, sure, but it will take even longer if no one ever starts.

There are other people who have occasionally expressed a half-hearted interest in fixing the level editor. If we got all of these half-hearts to work together, maybe we’d have some real commitment.

There’s no obligation, of course. You can treat Panda3D as a take-it-or-leave-it prospect. If you’re happy with it as-is, without a working level editor, then by all means you’re welcome to use it, and we’ll be happy to help you with your questions as you continue to learn more about it. If, on the other hand, you think Panda won’t be useful without a level editor, then you can either help write a level editor, or you can find a different engine that already has one that suits your needs.

I’m just sayin’.


The lack of the scene editor kept me bouncing back and forth between engines for a while, but after realizing how much I enjoyed panda, I decided to make my own. Surprisingly, it didn’t take very long to get something primitive together to suit my basic needs, something like 3-4 weeks in my spare time. There were some object-oriented peculiarities that I had never considered before, the biggest shock being class and instance variables. :slight_smile: All in all, I don’t feel like it was a waste of time in any way. It was an excellent learning experience, in the areas of both panda and python in general.

Just as a note, the main reason I stayed with panda was because it can be used with python or c++, it has a very attractive license, and the community is very friendly.

Are you willing to share your scene editor with the Panda3d community?

Since it was my first panda project, it’s very rough, and code isn’t in logical order. For example, code for navigation is in the object placement code. Pretty much it was hacked out so I could navigate around in the scene and place/scale/rotate one object at a time. I really feel that it needs an entire rewrite, but have been fooling around with other things and haven’t been back to it for a while.

I’ll post it, but I’m going to try to clean it up a little bit so I’m not as ashamed to show it to the community. I have some things to tend to today, so if it I don’t post it tonight, I will some time tomorrow.

Ok, I have created a handy Readme file with all of the instructions to use my scene editor. It’s a really simplistic editor, but hopefully it will be useful to you or anyone else that wants to take a peek at it.

Download it here.

Thanks! Downloaded, and will give it a try.

I found this level editor, IrrEdit, at
and will look at it!

As far as I know, irrEdit is designed for IrrLicht, and is not very compatible with Panda3D.

Then the question is, would it be easier to write a script to import .irr files into a format Panda can use, or to fix Panda’s scene editor, or to write a new one from scratch?

That question varies by person.

Personally, I wouldn’t fix Panda’s scene editor only because if so many other members don’t like it, then there must be a reason. I also wouldn’t write a script for .irr files, because I would feel more comfortable seeing my scenes using the engine the game will run on. Writing my own scene editor allows me to gain experience that will help me on down the road, and will be tailored specially for my own needs, which may or may not be available in other editors.

It’s really all up to you to weigh each option based on your requirements and abilities.

IrrEdit is not for Mac OS X and because of licencing issues it maybe will never be.

just want to throw in that there is a new community-based editor under development.

I find that using Maya or Blender as my level editor works better than any special purpose level editor I’ve ever used. I mean, the one thing general purpose 3D tools can’t do is compile BSP maps for occlusion culling, and that isn’t supported in Panda anyway.

I have scripts for both Maya and Blender that save out a text file with information about every object in the scene (XYZ coordinates for position and rotation, plus the object’s name.) Then I just have my game read those text files and place entities around the scene according to the saved coordinates. So like to place particle emitters in my level (just choosing one example at random) I position spheres in Maya where I want my emitters to be, save out the positions of the spheres, and then have my game place an emitter at each saved position.

I use the term “dropper” for this sort of functionality, but I think the term may just be common to one game dev forum I post on and not general use. I could post the the scripts here if anyone wants them, but honestly it takes all of ten minutes to write a dropper script.

jhocking, if you post your script for both maya and blender, newbie guys as me will thank you a ton. i am tired of using Scene Graph Browser to place my objects.

Whoah, I just googled “scene graph browser” to see what you are talking about. Unless the manual page is leaving out a great deal about that tool, that does look painful. Ok, here are the scripts, one for Maya and one for Blender:

Incidentally, I just noticed they are only saving position and rotation, not the object’s name; I could have sworn I added that in, I guess I’ll have to do that later (holidays and all right now :stuck_out_tongue:) Anyway, select the objects in the scene you want to save data about and then run the script. For now, because object names are not being saved, just have a separate text file for each type of object in your scene (man I really do need to add names to the droppers.)

It’s important to note that the script for Maya doesn’t create a new text file from scratch, it requires you to manually create a text file for it to overwrite. Of course, now that Maya supports Python I could rewrite the script in Python and take advantage of Python’s file commands…

thanks jhocking, you are a good man. i’ll look at it and learn it.

Just updated both files to export the object names. Doing that was even easier than I figured; at first I tried to lookup the attribute in the documentation, but in the end I just took a guess and happened to be right.