Is Panda3d able to do this?

We are looking for an engine that is able to do what the I-Novae engine can do. The I-Novae engine is still in development and they are not looking to release license agreements to it till sometime next year. This engine is being used to make the game ‘Infinity: Quest for Earth’. They have a video here–

video.google.com/videoplay?docid … 5934024232

that shows the option that we want in our game but can the Panda engine do this? If not can the Panda engine be expanded to do this? Are there any other low priced engines (Free - 10,000) that we should look at? Please note that we have looked at quite a few engines. Torque at $1,495 is the lowest on cost while the Hero engine is highest at $950,000 with a $200,000 annual support and maintenance fee. Crytek will not even talk to us about a price until we have at least two games out on the market. With Panda3D being free we quickly jumped on it but are wondering if we should be getting a higher priced engine.

Enough of that back to my question of ‘can the panda do this?’

We want the game to be like StarWars Galaxies but with Farcry/Crysis style intensity to the ground combat and EvE/AFF2AW style space combat that is able to be intermingled with seamless transitions.

Example

Player john doe (or JD for short) gets a mission on planet A to go and attack a base on pirate controlled planet B. So JD hops in his ship takes off from planet A and in orbit uses FTL engine to get to planet B. On arrival in orbit the pirate base on the surface fires on JD’s ship. The base anti-starship guns are too strong for a landing in the base so JD would have to land some distance away and walk or ride a ground/air vehicle to the base (if his ship is big enough to hold a ground/air vehicle in cargo bay). Then kill the bad guys and return to his ship. On return to orbit pirate warships alerted to him by his attack on the ground base attack him in space. He can attack them and get more exp and loot or flee from them and avoid damage or possible lost of his ship. Ether way on return to planet A he turns in quest to quest giver and gets exp, money, items, or a combo of these for his troubles. He then can repair his ship, vehicles, armor, weapons, and upgrade if need be while here.

The only load screen or non seamless area would be the FTL jump from planet A to planet B. JD could of set course for planet B and had time to use the restroom , make a sandwich, and chat with some friends in the chat box about what to expect on the mission if he wanted to not use the FTL and just fly from one planet to the other.

Now in the above example if JD had a ship that could withstand the base anti-starship guns then by all means he could return fire back on the base and kill the bad guys that way avoiding a landing on planet B.

We also want to put in the ability to let players that don’t have or can’t afford a ship to take a public transport or transporter type thing to the orbiting station. From there they can take an NPC passenger starship to another station at another planet. The NPC passenger starship would be something like the ones in SWG or the boats in WoW to jump many zones at once. While the transporters would be like the on planet shuttles in SWG or the portal rings in Horizons to go from town to town (or to station) on a planet.

We know that in order to do this we have to set the zones up right but are not sure if each planet would have to be a different server in the cluster pack or a set of server clusters to each planet and likewise to the vast areas of space around them and between them where fleet battles and mining is taking place.

example of this would it be #1 #2 #3 or #4?
#1
server A controls planet A and it’s orbital space zones.
server B controls vast area of space between planet A and planet B.
server C controls planet B and it’s orbital space zones.
to avoid server B zones player uses FTL in Server A orbital zone to jump to Server C orbital zone.
server D controls a massive fleet battle area where two or more fleets of ships are at war.

#2
server A & B control planet A and it’s orbital space zones.
server C & D control vast area of space between planet A and planet B.
server E & F control planet B and it’s orbital space zones.
server G & H control a massive fleet battle area where two or more fleets of ships are at war.

#3
server A controls Planets A & B along with their orbital zones
server B controls vast area of space between planet A and planet B.
server C controls a massive fleet battle area where two or more fleets of ships are at war.

#4
We are totally misunderstanding the concept of server clusters and need to study more on how to set up a server for a MMO type game.

Number four is a joke but joking aside if we are totally wrong about server clusters and I’m sure we are since none of our team knows a thing about servers let alone how to program one.

Any advice is greatly accepted.

We thank you for your time,

Telknor

oh almost forgot. We are using the Stackless version of Python 2.5.2 don’t know if this is going to effect panda3d in any way or if it effects server setup at all.

Again any advice is greatly accepted.

We thank you for your time,

Telknor

planatery renering
can panda3d do this?

  • not out of the box.
    can any engine do this?
  • not out of the box (except I-Novae which was build for it)

One of my reasearch projects at the univercity was planatery renering nad i used Infinity: Quest for Earth as insparation. But it would require programing, C++ programing and enough of it. Just like in any engine or just raw OpenGL you would have to create your own fractal generator and your own speciall terrain renderer.

I enjoyed the reference to my game as some thing some one wants. The truth of the matter is that StarWars Galaxies cost millions to build, Farcry/Crysis also took millions to build, and so did Eve. Your game would have to take millions and millions of dollars to build.

AFF:2AW has very limited scope mutlipayer online RTS that heavily focuses on combat - we have very limited goals so we hope to scrape by some how…

I am not sure how Stackless interacts with panda3d. I use Psyco and they hate each other.

I have seen servers set up in many different ways. AFF2AW is set up into “zones.” Zone can be any thing planet, empty space, battle zone … Zone is just a place of interest when some one is interested in a zone it gets loaded to an available server and players connect to it. When it is no longer needed it is frozen and unloaded from server memory. Space is big and there is many zones. Zones can be created and zones can be destroyed. It all very dynamic.

Note doing FPS on a mmorpg scale is very very hard.

Yeah we got that same message from a few other groups in our area that MMO’s of any kind are out of scope for Indie groups without deep pockets. We are thinking of shifting to doing a simple FPS type game with a limited 2-16 player multi-player mode or a simple RTS type game again with 2-8 player multi-player mode. Even these might be pushing our abilities to really get a game on the market, but it’s better to start small and learn the ropes then try and start big and take a burning crash when everything falls apart. Besides the smaller easier to make RTS and FPS games are more likely to sell and would be a possible funding source for the MMO game later on. Also by ‘learning the ropes’ on the RTS and FPS games the MMO might not be as stressful and some tricks and techniques to make things less difficult may be learned along the way. Who knows, by that time I-Novae may be released to the Indie groups.

Don’t get me wrong Treeform you have not popped our bubble of hope. Nope your far from it. We have been in the process of making models and writing out possible quest and idea for all three types of games for about 2 years now maybe 3 if you count the original brainstorming and sketch meetings prior to the model making and quest writing. It’s just we only just now started looking for an engine to actually try and take all that stuff from paper and raw models to a game that can be played. Most of our group has been modding games 5-10 years now. I started about 8 years ago doing mods on the RTS game StarTrek Armada and later with the second one. I also did some stuff with the CNC, AOE, Elite-Forces, Doom, Quake, and SOF games. It was fun to make these games do things with my models and mods, but they were still someone else’s game. The other members of my group share the same outlook on this. That to truly enjoy a game with our models and mods to code it has to be a game we made from scratch. Yes we really don’t know much about servers aside from lan-party style servers but hell any HS student these days can set up a lan server and play his/her friends on it. But a game hosting server in the scale we want is like an aircraft carrier next to a bicycle when placed next to a simple lan-party server. Overwhelming and scary to us, but at the same time, it’s like the little red button with the sign that says ‘Do Not Push’ and you just want to push it anyways to see what is does.

Sorry for going on like that… It’s almost 2am and I need some sleep. Like always any advice is greatly accepted.

Telknor

hm. lemme summarize:
you want:

  • a whole universe , created on the fly /generically
  • a mmoFPS
  • a mmo space-shooter
  • ability to seamlessly walk on planet and fly into space

to tell you the trouth. panda is a really easy to use engine, but what you’r trying to do (even if you leave the mmo part out) is enough work for about 20 coputerscience graduation thesis. not impossible but simply insane ammount of work

lets pretend you simplify things a little. means. instead of internet mmo game you write your network for LAN parties only where security, traffic and delay times and player numbers are less an issue. then you have the following big tasks to handle:

  • a universe, a solar system or even a planet is HUGE. and precision of a computer is limited. so you have to write your simulation in a way it doesnt run into precision errors. this is not that hard, there are several open source examples you can look at. like celestia. if you dont care about then either the first person part on the planet or the space simulation will most likely not look the way you want, bad performance aside.

  • generating a few solar system based on random numbers is less a problem, evaluating masses, speed, orbits of planets is basic astrophysics. you can basically simulate an entire universe which was created based on a single random number. more problematic is to visualize this.
    first off you need to create the heighfield data for your planets based on the parameters you evaluated. usualy this would mean how much water/land is it smooth land, or has it sharp borders,cliffs,craters. so you need a noise generator which results fits your parameters, easiest one would be perlin, results are ok for testing. guess you need intensive research on procedural image generators. some like the ones in terragen are really good. remember… this thing has to work fast and be able to deliver results at different resolutions.

then you you need a fast terrain-algorithm which can handle spherical planets and you have to feed the highfield data to it. there are a number of already existing algorithms. ROAM and SOAR based ones. pro-rsoft wrote geomipterrain which makes use of geomipmapping. if you’r lucky you can modify it, if you’r not you need to write your own terrain-algorithm (which is most likely the case for most engines out there).
i always liked this one http://www.andrasbalogh.com/RangerMk2/
its SOAR based. thus more cpu intensive than gomipmapping (doesnt means its useless).

then you need a texture-splatting generator. this is not that difficult since you can take the highfield and use basic math on it to get “opacy maps” based on terrains heigh/slope or region.those texturs can be used in multitexturing to tell the graficcard which texture goes where ( you can also generate textures from scratch but using pre-made textures spares time)

well. now you would have a pretty huge planet, with terrain, textures, now you have to calculate vegetation. again based on the terrain-highfield data , simmilar to the opacy maps for textures. those can again be used to tell which plants/animals grow and live where on the planet. plants could also be premade or made on the fly (where i would go for premade)

now you would at least have a planet with generic level of detail you can look at from far away or up-close. guess most important is you find/write/use a good terrain algorithm and handle the precision errors enforced by hardware.
thanks to pandas quite generic internal structure it can be done with panda.but you need to write extensions such as all the generators providing highfield and texturedata, the terrain creation algorithm and such. its a damn lot of work and you have to know c++ very well. it’s nothing i would recommend someone without lots of experience. yet possible.

there is a reason why things like this tend to be expensive. you’r welcome to try. i’d love to see those things in panda. but its not a piece of cake. if you’r going to do this with panda i’d love to help you with the logic behind the stuff. cant write c++ thought but can provide knowledge.

time to summon your army of coding monkeys.

I think neighter the crytec nor the quake engine is able to handle a game like infinity tries to do.

They are just not built to do somthing like that. look at how large the areas are you play in without encountering a loading scene. You coudnt even put a real city in one of these games (well maybe yes, but not without sacrifying details).

All engines have this limitation because it’s a hardware limitation. Floating point values are just not enougth exact. In fact python is more exact then the processor can calculate in 1 step. Panda3d however directly uses real floating point values, using Vec3 or Point3 (i think point3 is more exact then Vec3) you will see the limits.

a = Vec3(10e10)
print a.getX()
# 99999997952.0
a += Vec3(100)
print a.getX()
# 99999997952.0
a += Vec3(10000)
print a.getX()
# 100000006144.0

you will see why panda3d uses floating point values if you enter this into python:

10**100000

it will take several seconds to calculate that, which is not really suited for a game.

thats why you have to trick the hardware.
celestia is a excellent example for it. you can be as near to a spaceship as you like, while beeing able to zoom out and see the entire galaxy.
keep in mind that virtual world is only an approximation of things. noone will care what tricks you’r using as long as it looks good and works
have a look at it :slight_smile: http://www.shatters.net/celestia

@Hypnos:
Oh? Panda3D doesn’t have this limitation, if you use the *d classes…

a = Vec3D(10e10)
print a.getX()
# 100000000000.0
a += Vec3D(100)
print a.getX()
# 100000000100.0
a += Vec3D(10000)
print a.getX()
# 100000010100.0

This prompt me to create a panda3d-python-celestia project.

In the 4 hours i worked on it i got:

all star charts loaded and displayed - it looks just like celestia too!
all configuration data read in - i am trying to do the planets.

I will try to get it as feature comparable to celestia except the scripting part - that would be in python. Celestia is not a very complex project but would be cool to have as base for panda3d space games.

I tried to get an email to the guy that did the RangerMK2 but the email address is no good. Has anyone here tried to get the RangerMK2 to work with Panda?

Telknor

look here https://discourse.panda3d.org/viewtopic.php?t=2265
quite some time ago already. the algorithm itself is old,too. might be possible to even use a vertex shader for it but im no shader professional.
keep in mind… this is only ONE of many algorithms. there might be better suited ones. its just your linked movie which remembered me of this one. btw… have you seen the 12mb video on the ranger homepage? impressive aint it ?
like i said its comparibly cpu-intenseive algorithm (compared to more recent ones).but if the algorithm could somehow be ported to the gpu it would be really cool.

pro-rsoft: you know that it’s only pushing the limits a bit further…

a = Vec3D(10e10) 
a += Vec3D( 0.000001 )

will not work even with Vec3D.

The biggest problem is that if you create a spacegame and want 1 unit to be 1 meter you will be able to put our solar system in (using double floats). But our system is tiny compared to other solar systems. Not even to mention to travel between the stars.

I know there are ways to work around this problem. One could be not to move objects away, but to scale them instead. Another is to segment the world.

But i got one question, how does panda3d calculate object positions internally? using vec3d (double) or vec3?

it uses floats to compute node path positions.

You can use long integers to represent positions, but they are slow.

Did you ever get planets working?

Sammual

No i lost interest in the project. I’ll probably be back to it sooner or later.

I got planets in my own game working - do you have specific planet problems?

Nope, just thought it would be usefull if I ever make it down to game #6 I want to write (Master of Orion 3, I don’t count the piece of junk they call Master of Orion 3 a game).

Sammual

I see some interest here in achieving planet-sized terrains and space travel. There are two engines that might be of interest:

Infinity’s engine – this seems suspicous to me since they have no downloads for it yet. It smells to me of smoke/mirrors, until they permit anyone to get their hands on it.

Visual3D.NET engine which is currently in beta2 and does have free downloads to try it out. Their primary focus seems to be on outdoor environments to enable a full planet-sized terrain and includes the ability to travel from outerspace to land on earth with a seamless transition. They haven’t achieved it yet, but claim to have a 3-man full-time team working on this feature. Their demos and toolset are impressive and forums are active, so it seems to have promise. But the verdict is out, and may be a few more months to see if they can deliver on this. They’re proclaiming a release by year end. We’ll see. Personally, I’ve got my hopes set on Visual3D.NET, but am trying not to get to excited or optimistic yet.

I don’t know of any other engines besides these that are aiming for this type of solution. I’d like to see more games reach the planet-sized level and with more space travel and seamless transitions to land on planets.

Personally I am only interested in game engines where I can do everything 100% in script. I am a DB programmer and know only enough C++ to get myself lost.

With a correctly designed LOD system and procedurally generated content I don’t see why planet sized terrains could not be done in almost any game engine. (See above statement and let me know why I’m wrong)

Sammual

CryEngine2, Unreal, etc – engines are limited on the size of terrain that they support for technical reasons. Apparently, doing planet sized terrains is something that presents a large technical challenge. Also, modeling the spherical nature of a planet merged with the flat appearance of terrain at ground level is also a tough thing to accomplish.

Only these two engines, Infinity and Visual3D.NET, are the ones I’ve seen that are attempting planet sized terrains.

tanis3d. its a challange, but most engines can be tricked to do it. i say “most” cause some engines are not flexible enough since they require pre-processing before they can load and a map.

the spherical thing is less a problem. it comes with the natural size of a planet.