Hello all! I’m working on designing an Rpg. I’ve attempted to write an engine from scratch several times, in c++ using irrlicht, ogre ect. But everytime I do I end up hitting a brick wall, and starting over. Plus it would never get done fast enough, because I’m not near experienced enough. So I looked around and I came across your engine. I’ve always liked python, so it when I saw it had native support for python I was immediately impressed, and dug in further. I downloaded and have been messing with it for several days now. I managed to make an rpg like control system, and a few minor things.
But i’m curious as to how much this engine can handle. In this game, some of the following things will be done:
The map is fairly large.
There is an underwater battle.
There will be a lot of Npc action.
Graphics I would like to be of at least this quality.
Many spells and stuff of that nature.
How many poly’s on average could I have on screen? What kind of limits do I have? I know almost anything npc logic wise python can handle that with a breeze. Also I figure I will seperate the map into segments but want to keep loading to a bare minimal. As far as environments too… Any info you guys could give me would be very appreciated.
about panda’s performance: panda is mostly written in c++ with complete python bindings. so it’s easy to use and VERY fast.
about your specific question.
large maps- no problems if you split them up into smaller pieces.
you can load and unload it piecewise so you can have a virtually unlimited world size. the viewing distance depends on the graficchardware and how much effort you spend in optimizing your scenes. but without further trouble you can achive. i’d say without too much effort but a few good artists you can get dungeon siege II grafics quality.
underwarter battle. well. panda doesnt make any differences between over or under water. you need to change movement script, lights in your scene, and maybe set blueish fog on your scene. nothing you wouldnt need to do overwater too.
npc’s … well game logic and ai can be wonderfully programmed in python. in the unlikely case that python should be too slow for this task you can write a c++ extension for this.
grafics quality and partikle system:
panda can handle both quite well. if it comes to partikles you might wanna look at this screenshot which comes from “angels fall first” which is a panda based project made by treeform http://www.i-imagehost.com/uploads/c07a7811df.png
he has written an improved particle system which is faster than the current one.
about poly limits… there are no limits given by panda. so the only limit you have is your hardware. so basically you can make a test-map and see if it runs well. or if it doesnt. if it doesnt run well you can use pstats , a very useful tool provided by panda which makes it very easy to track down bottlenecks , so you can optimize them. panda also offers tons of ways to optimize your scenes in case it’s too slow for a certain target hardware.
about loading world parts. panda’s native binary files (*.bam) are extremly fast loading. so you might be even able to load your maps without the need of any loading screens.
last thing i like to mention. panda runs on about any hardware
i’m on an old 850Mhz notebook with 128mb ram, a poorly supported Savage3 graficcard with 8mb graficram… and i can run the roaming ralph sample at >30fps.
in one word. conratulations, you could not have found a better engine for your purpose than panda
actually there is no standart limit. you simply have to create a small scene which can be compared to your later game polywise. just check how much fps you get. usualy you can optimize a lot without reducing the polycount at all.
modern graficcards can handle so insanely many triangles that the bottlenecks usualy are others then rendering them.
blender is my modeller of choice. with the chicken exporter it really is a great combination and allows impressive results.
for terrain. depending on your terrain size and such… you might want to search the forum for “pgmm” which is the new upcoming terrain algorithm for panda with impressive performance. it’s about to be added to panda soon. it can generate terrains from heighmap images which are very fast to render.
about creatino of the terrain…well i cant really help you with this one. but i’m currently writing on an panda ingame-editor for terrain. might help you once i finished it.
Ah ok. I figured that but I thought you might have a number you stick close to, that I might be able to base it off of.
Hum… I might just design it all in blender, then split it up. Are height maps faster then the rendering a terrain model? Also could you turn an existing terrain mesh into a height map?
Also a question on python. Would you recommend separating the different functions up into different python files then having a main file bringing it all in? Would this speed up or slow anything down?
Its kind of funny to see how differently something seems from researching it to actually doing it. This all looked fairly easy just messing around with it. Now that i’m actually focused its proving to be harder then expected.
you really have to figure it out. but about ~30k triangles !onscreen! should be reasonable save even on not so good hardware.
it really depends on your scene and how well you optimize it. just a few minutes ago someone icq’d me he had only 20 fps. after 2 minutes of tuning he already had 50fps. so it really depends a lot.
this depends on your terrain algorithm. using pgmm heighmaps are ways faster due to its high efficient LOD system. you can convert meshes into a heightmap. but remember that things like caves and overhangs will get lost. one of the future plans of pgmm is to introduce some limited support for overhangs in heighfields but thats only planned.
pro and cons of the modeled in blender vs heighmaps are:
+allow huge viewing distances due to good LOD system,
+comparebly easy to edit and texture
-only allow heigh-displacement so far (no caves or overhangs)
-consists of regular grid so again no special geometry possible as such
blender made geometry as terrain:
+allows all kind of geometry including caves and overhangs
-slower to edit and texture
-smaller viewing distances due to missing LOD
in short. if you want a freaking huge world with few content in it to just impress the player with a nice landscape (like most mmorpg’s do these days )… choose heighmaps
if you prefer lovely made levels with caves and many small details, and if you dont need huge fewing distances.if you dont have insane huge levels. and if you have some extra time to spare to model and texture the terrain. then you should choose the blender way of doing things.
btw. you dont have to manually split the world, there are scripts which can do that for you.
it’s by far no easy choice but choose what fits your needs best.
i wouldnt seperate functions in files. but i would split them according to classes. like a main.py a world.py a weather.py , player.py . ai.py and so on.
speedwise it makes no difference. but it’s very handy to have seperate files. makes it easier to maintain.
that’s how things are. but once you got started seriously you’ll learn it quite fast. and panda is comparebly easy to learn. plus: you can get excellent support here on the forum
Wow that is a drastic improvement! Now by optimizing what exactly are you referring to? Like with in your code, or are you talking like improving shaders and that sort of thing?
Probably a mix between those. Because some of it I would like to be detailed like you say caves and stuff like that. But this might also be able to be done by placing the cave carefully in the map, as a mesh.
Sweet then just import them all into the main.py and then structure it all. Then I believe I will use xml or something to that nature for all my info, such as spells, creatures power ect…
Thanks a lot. You’ve been a great help! I appreciate you giving me full answers. Some would just give me a short little rant and go tell me to look it up. Which I have done some of, but some jump to conclusions. Again thanks,
oh about the performance improvements i mentioned earlyer… it was like simply reducing the numer of unneccessary nodepaths and the number of geoms. but thats only a tiny part of the possibilities you have. like i said “pstats” makes it easy to track down bottlenecks. it really is proof that panda is used in commercial games since you hardly find such things in other engines.