when treeform dreams...

Panda3d is far from ideal 3d prototyping and shipping games platform. But I think I could be moulded into one. I wanted to put out some concepts that I would think make a real great engine to make games in. My ideas mostly resolve around a meta game editor + concrete well defined networked objects. Maybe this is moving panda3d to be more like game makers or commercial engines such as source, unreal, crytec.

This meta game editor sort of works like a scene graph editor allowing you to move objects and save or load the scene. It should also do dump things that are missing now like re-parenting, moving centre of mass, facing vector, chaining some textures, just light 3d editing tasks and fixing common errors that happen during exporting. It also allows you to pause, resume or restart game simulation and inspect this simulation from any angle.

Automatic reloading of everything. Engine should keep track of files it loaded and reload when they change. If some one changed an image or and model file that model file should automatically get reloaded. Same goes for python code - our scripting language.

We can’t reload code willy-nilly in our current panda3d games because that would break most of our current code and current way we do things. That’s why I think much of our python code should be separated into actors/things/objects call them what you like. Basically each thing would have corresponding model, simulation handle and python class. When code changes it should be trivial to replace it with new code as objects are contained. Objects might also have other properties assigned to them like physics and sounds.

Once the things are separated out its trivial to add networking and saving of games as part of the engine. Just save or transmit all the actor positions and their properties when they change.

Not all objects must have concrete appearance. Some can be like ghosts doing score counting, wind, sounds, and other global non object things. But they still be objects treated pretty much same in networking, in saving to disk, in the scene graph way.

User inputs can also be their own objects that act on other objects. And can be networked in that way. During networking some objects might be client side or server side only. This probably should use more though as server-correcting-client yet lock-step, p2p, turn-based are all valid models to use in a game i am not sure how to add them in.

What to do about C++? People that are using C++ could probably ignore this upper python layer. If you want to add C++ to your python project it would probably be just like all C++ components in panda3d right now.

Basic game entities that could be used to get started would be a nice addition for sure. Something that could be subclassed to suit the needs of a specific project.

I kind of like it that Panda dosen’t force me to make my game in any specific way.

For me the pipeline needs some love. A graphical interface for editing models would be great (changing scale, orientation, textures, materials, adding tags and collision solids etc) and a WYSIWYG GUI editor.

I’d also would like to have things like fog, water and a terrain shader for 3 textures and normal/gloss mapping out of the box. Oh, and some docs and samples for networking. This would let people focus more on the game then on the engine.

Well, i think that panda is very good way it is now, but that is mostly for programmers, other people working on game usually prefer more modern pipeline (Couple of 3D guys i know prefer UDK for making games, and i am currently looking into it, maybe i will even transfer from panda to udk completely…)

I like this kind of thinking. Building a sophisticated game-editor like this does make Panda more accessible to people who want a sophisticated game-editor. Of course, a game-editor like this is indeed more limited than what you can do with pure code, by its nature; but that doesn’t limit anyone–you can still write pure Panda code if you prefer.

David

Thats right wezu, panda3d does not force you to code in any ways - well thats good and bad I think. I think right now panda might be a little bit too free to where you assign code and i see new people (and me included) do all kinds of stupid things like subclassing NodePaths, using lists to store bullets, and sticking level geoms in global variables. I propose adding more sanity to where things live.

Yes pipeline tools need more work. It should not replace your 3d editor but it should replace going back in forth to the 3d editor making sure your tags and direction and pivot points are right.

Again having a basic library of things like fog, water and terrain stuff would be great as well. I would also add glowing and lighting with shadows to that list. Both realtime and backed (at startup time i guess and cached from them on).

I think having a worm and fuzzy editor will attract more art people to the project as well, GrizzLyCRO is right panda3d is mostly for programmers now and i think we wont get a wider audience by catering just to programmers we need to cater to whole team of game devs.

Drwr is always right, such things are cool, but if its too limiting one can go do other stuff.

Who will do it?

We will have to do it as a community.

I also give the idea +1. We should still have the ability to do what we want, but also give the ability to have some sanity on the too much freedom part for newer programmers that don’t have a clue what they’re doing right off the bat either. Even advanced user still need some guidance to the sanity as a game can have way too much to control for just one programmer even for many programmer. This causes development time to drop as users will tend to think they have to “make” new code to control their ideas when the controls are already there to be have.

Theres some valid points brought up on both sides, some say that they like the fact that panda3D doesn’t force you to use graphic editors and basically alot of the users like the fact that its not a game editor. Others say that they’d like to see a more commercial like game engine with an editor and so forth.

Really I don’t think Panda3D should turn into another Unity3D or unreal engine because the beauty of it is the flexibility. What I think should be done is we should develop patches to incorporate new features and to integrate an editor, and release it as a fork of Panda3D. Community development, requests, and so forth. The beauty of it is we can contribute back to Panda3D by contributing some of our patches to the Panda3D patches.

If you’re willing to start a fork of Panda3D I’m willing to contribute. I’d really like to see an editor and a more directed version of Panda3D for speedy game development.

Why a fork? An editor can exist beside Panda.

I agree as well no forking is needed!

We should just write and the editor. But I also want some sort of philosophy on organizing our games so that more high level reusable components can fit together examples i gave were Editor and Networking. But it also could be extended to AI (Recast/Deture), Impostering system (for trees and stuff), and physics stuff like Bullet. A common Entity-Object-Actor needs to be agreed on so that the libraries and editor use it.

Is it weird that I dont exactly understand what you mean by objects?

Are you thinking of using the current editor from the CMU guys as base?
Ive done some Tk btw, never tried wx. Can I be of help?

These points are interesting in this context.

Yes in that thread Gogg raises some valid points. No editor can do all things for your game. Thats why and Editor should not get in the way much if you just dont use it. But I think for a large class of FPS/RPG/RTS could all use one editor for example the UnrealEditor has been made to model create FPS/RPG/RTS/2d games. Or look at editor for starcaft2, people have coded rudimentary FPS and RPG in an pure RTS editor? There is no way to make editor create procedural content thats clear but if we look at Diablo 2 (one of the more popular prg with generated levels) we see that some parts of the generated levels were done by hand. The peaces that were done by hand still needed to be done in some sort of editor.

For large classes of games create here on the forum a simple editor would do.
Step1: Start the editor, drag several modeld objects to create a level. (Maybe off a shared model library)
Step2: Drop your player and some mobs. (Do some bone work with animations, do some clean up)
Step3: Attach python code to your player that does movement and camera. (Maybe even one of the standard FPS/RPG/RTS movements)
Step4: Attach some mob Ai to your mobs. (Maybe even advanced Ai with Recast/Detour)
Step5: Profit!

If we play our libraries right the game will come out with networking support and physics as well. All for upfront design work and philosophy.

lol sadly I Think that’s what most people been wanting anyways. It doesn’t have to be setup for one gender or another. Just the power to place “objects (with the ability to attach off hand code to)” into a visable play mat that can be saved out.

The editor would just need some option boxs on the object and global for them to turn on sharders and other effects/code.

For example

[World Object]
  [...]Edit Code
  [t/f]Use Sharder1
  [t/f]Use Sharder2

  [Player Object]
    Collision Type
    Collision Bit
    Bla Bla
    [...]AddModle
    [...]EditModle
    [...]Edit Code
    [t/f]Sharder1
    [t/f]Sharder2

  [Env Object]
    Collision Type
    Collision Bit
    Bla Bla
    [...]AddModle
    [...]EditModle
    [...]Edit Code
    [t/f]Sharder1
    [t/f]Sharder2

This way you still get a tree of what’s in your world, but also added effects to what each object can or will do with some order.
This also would keep the game “free” from gender due to the fact there isn’t really any “base line of code” that the user has to follow.

I have been thinking much the same thing myself, and although I rather do hard coding myself, Panda would feel much more modern if we had such an editor, and make it much easier for people that don’t know Python, or coding at all to break into the field.

I have worked on my share of level editors, and code generators, so I do some of the code exporting and such.

If someone knows some good GUI programming, I think we could easily do this.

Maybe there should be a basic list of features and a basic editor layout and other necessary info so people can start to contribute and know exactly what and how they can contribute.

What would be the absolute minimum feature set to make a viable game editor?

twitpic.com/3sfj2j

I am thinking:

  • ability to load and save
  • ability to add objects off file system
  • ability to move, scale, rotate objects about
  • recenter objects
  • group and ungroup objects
  • delete objects

What format would you use to save your maps?

I’ve done quite a bit of work in the past writing tools for Maya, Max and Blender. Some of my thoughts on authoring maps are here:
[url]Map format - egg vs xml]

Let me know if I can be any help. :slight_smile:

I am kind of torn between saving it in some format like XML (maybe json or yaml) and just plain python file.

Python file has 3 main advantages over XML:

  • it can be edited by hand
  • it will support all features that panda3d supports
  • it compiles to byte code for super fast loading
  • can contain python code for triggers and events

XML (or json, yaml) advantages are:

  • there is a stream parser for really huge files
  • non-python tools can use it
  • its conventional

I will experiment with python files then fall bug to XML it my crazy ides will not work.