Panda3d "On Rails"

Hi, After review a lot of engine to make my first game, I think Panda3d fit the bill.

I have no experience in gaming development but instead a strong 10+ years working in Delphi, .NET and python/django.

The project look good, and as close to be dev-friendly. But I think something better can be done.

When Ruby On Rails hits the mass, become a revolution. Later, frameworks on python like Django show how a solid & oppinated framework can lead to huge time-saving and high-quality work.

Please take a look at djangoproject.com/

We in the django community work in a kind-of massive around-the-world team because the project leaders provide a solid foundation where is possible to plug 3d-party code with not effort and very minimal adjusting.

That is possible because separated teams work hard to provide small but focussed work. For example somebody do a ratting system. Other a registration system. Other a photo-resizing system. Other go to djangosnippets.org/ for the small snippets. Now, If I wanna do a website, I grab the sub-projects around and literally in minutes have a complete functional website to play. Only need tweak the html and add my own code.

Let’s start for something basic but usefull. Imagine a command:

makeproject.py --name MyGame

And do the project folder:

  • MyGame
    – Assets
    ------ characters
    ------ world
    ---- Models
    ---- Sound
    – code
    — world.py
    — actor.py
    — gamer.py
    main.py

(Is only a idea)

Obviously, anyone can later put the things their way, but small steps like this provide the background to work up.

Then, start to work in that kind of usefull sub-things that commonly anybody can use.

For example:

  • A generic camera system
  • A weather system
  • A AI based character system
  • A score system
  • A joystic system
  • A keyboard system
    etc…

the point is focus in build lateral-code (no big gamelogic of sub-games)

What do you think?

so what you mean is create a plugin or application that would convert panda3D into more of a game engine or a game shell…sounds cool!

Ooh, that does sound cool! But how exactly do you propose to implement and organize such a thing? Game design can be a lot more complicated than a website. How would you maintain enough flexibility to make a variety of game genres? The Panda3d documentation leaves something to be desired even as it is. How would you make this documented enough to be usable?

I have thought about this too … that panda3d should be more like Django (ror like framework for python that i professionally coded in) But then basically came to the same conclusion as Cyan … too much ifs and there is better stuff to spend time on like treegui and pyro systems.

I agree and disagree with all of you :slight_smile:

We could use framework(s) for panda3D. It’s a big jump to get up and running games and not only technical/features demo.

But for me , a game framework cannot be game agnostic as P3D is.
So there would not be a Django framework for P3D.
There would be a Django,a ROR , a Turbogear, a Pylon framework for P3D…
Because a framework is designed around 2 main things
a) the use case => FPS Games does have differences from RTS games
like CRM Websites does have differences with Business Rich Applications.
(it’s not in term of technology, it’s in term of how you decide your tradeoffs!)

b) the philosophy => explicit is better than implicit or do it yourself versus integrate lot of third party library, python is better than xml for config& settings or not etc…

So for me, game framework(s) should be some client(s) application of P3D, not part of P3D itself…

It’s also a questions of Skill & Mindset… people that drive an engine does not necessary want to think a framework etc…

All this said, my own project is a framework of course :slight_smile:

I like it, I think it’s a good idea.

I dont!

I think panda3d is a pretty good library and framework and i don’t see how many different frameworks can coexist between programmer and panda3d … the community is just too small to support such verity. While i do think that panda3d could take some lesions on what makes a good framework from ROR and what makes good python framework from Djanog.

I also disagree, FPS, RTS, MMORGP are all 3d games and are similar in many ways! More ways then they are different. It like Blog, Wiki or Forum sites in the WEB world - Do you say they all need different frame works? One need ROR, other need Django and some need pylons?

I do say that , really…

A framework influences your productivity for a specific applications in several way:

  • amount of prebuilt / preconfigured items for your applications
  • underlying design decisions (especially tradeoffs & performance)
  • monolithic (like django) versus epidemic (like turbogears)

If you need a lively Ajax interface with sexy effects for a short timeframe site
(ie up the next week, down at the end of the year), ROR will put you there very quickly because ROR integrate out of the box Ajax GUI thingy .
Django will be more involved in this specific case but without restrictions because Django does not propose/impose anything on Ajax GUI , it just provide a json exchange.

So yes, game framework are game oriented or game agnostic.
Exemple : most RTS framework would provide an object to manage rectangular selection of 3D unit in 3D world by dragging a rectangle above them. FPS framework will more likely provide you with a ToolTip features that display information from the target you aim two.
Yet Both high level features use picking, 2D>3D Transform, object filtering and 2DGUI functions of the underlying engine

So with a finite budget of time, you can move very fast in a genre oriented framework or slower in a game agnostic framework…
Of course, you could leverage the high level features by doing a game agnostic fundation with a persistence, plugins and events system, if you have enough time to build a fundation THEN to polish the game objects…

At the end it’s all a matter of tradeoff… Speed of Building 1 type of features versus possibility to build a wide range of features in the same “buget”

I just liked the suggestion of a script that would create a basic game setup, with all the folders and stub files and stuff, that you can then build on top of. Seemed like a fast way to get going.

I’d actually be interested in helping develop a framework like this, if only to understand design patterns more. I think a framework like this could be cleanly separated with an MVC pattern and I would make it event driven. The Views would be NodePath’s that encapsulate the representation of an object (3d models etc), Models would store object information (health/ammo/etc) and the Controller operates on it and reacts to events. A Screen object would control the setup of a level or menu screen.

I’m not familiar with the speed of python but if there aren’t any additional object managers used in the framework I don’t see how it would be much slower than a python+panda game written using your own framework/methods. And I think it would be likely that other games have their own object managers in any case so I think there is a case to be made for a Panda-on-rails framework. I think a system like this would be beneficial for getting exposure for Panda, specifically in game dev education and as a rapid prototyping thing.

I see MVC patter this way:

Model:
simulation, file storage, network representation

View:
presentation, texture, models, sounds, animations

Controller:
user events, ai events, network events

I am sure one can build such framework with in panda3d pretty easy. Even have templates for 2D, TBG, FPS, RTS, RPG type games.

(I don’t know why but my previous post get lost)

So, how push this forward?

can we push what forward?

I mean this idea…

and how do you propose we push it forward?

(Sorry the delay, working hard!)

I think the first thing is define what is a “good” final result of this, ie. the scope.

Build a directory layout is not hard, but have a clear vision of this yes.

Because I don’t know yet this community, some questions:

  • Which is the most common videogame genre build with panda (ie: 3d vs 2d, first person, rpg, etc?)

  • What are the most boring & repetitive - but necesary- task building a game?

  • What are NO-NO for this?

  • For ROR, the tipping point was build a blog engine in minutes… In Delphi, anybody can build a complete database system in minutes… etc.

Which are the most “stereotipicall” kind of game that get exited to everyone, yet is easy enough to complete in a decent amount of time?

i would say mmorpg …

panda3d - your mmorpg in 10 minutes!

I think the hardest parts are (in order):
networking
saving to disk (file or db)
model clean up (exporting an preparing for game)
UI (GUI, mouse movements … )

other parts are understandably hard.

Yeah, that was the stuff I imagine. Seriously the networking is very weird… But I think that is hard enough get a local multiplayer engine. The stuff about massive multiplayer can be very hard to crack. But for a LAN could be done very easy.

I don’t know if this community have some kind of soft rules about the naming of things, code convention, etc…???

What are the suggested aproach for this? I imagine setup a project in google?

yeah you can if you like. Name it what you like just don’t expect lots of people helping at the start.

Once you have some code ready, you can request a P3D-Projects webspace on p3dp.com.

As said, you will (most propably) get helpers once a certain level of preparation for your work is done. But don’t expect a ton of screams like “omg, finally - someone wanting to do something!! count me in!!!”.

All of the devs are working on their own projects. so it might take a while and a project that is interesting enough that spending time might make sense. :wink:

Regards, Bigfoot29