I have a couple more questions about the engine, i am still :S reading the manual. Anyway:
1. I’m making an online zombie FPS, i get a little confused as to whether or not FPS is possible in Panda3D? I know it’s a silly question but i’m just wondering. All screenshots i’ve saw, none of them are FPS…
2. How many zombies would the engine allow to be on screen at once, before lagging, badly?
3. Is there a physics engine in Panda3D? Meaning rag dolls etc are possible? How good are the physics?
4. Since i will be coding everything into the client, does that automatically mean that all movements of the player, animations, shooting etc will be sync’ed with all other clients?
5. Zombies, would i add them into the server or all clients and have the clients update them? Or how would i / should i handle zombies?
6. I know i have asked this in the past, but it’s worrying, i am a newbie to Python and programming in general, does this mean my aims are not reachable in a short amount of time?
7. Graphics, are these limited by the engine in anyway? Or just models/textures?
You have some good questions and you can tell that you’re thinking through the problems that you will have so I think you’re already well on your way.
Yes a FPS is possible. FPS games have some unique problems but nothing you can’t deal with. One of the issues that you’ll find is that the world in a FPS game will be pretty large with many rooms and such. Well, the problem with that is that the rendering pipeline will render pretty much everything in the direction you are looking ( it renders from far to close) so that even if you a just looking at a wall, it will try to render everything through the wall, no matter how many rooms there are just to cover it all up with a wall at the end of the render. That will obviously make your program lag very baddly. You can get around this but it’s something to keep in mind.
As far as just shooting stuff and handling collisions look at this:
Look through the code to see how to do projectiles and collisions and explosions or blood splatters on impact.
2.) Well that’s up to you. In my game- (the link above) I can have around 30 ships- probably more but never tried. Also, you could probably have a lot more as those ships have a pretty involved artificial intelligent algorithm they go through.
3.) Yes, there is physics. haven’t really used it. I don’t know if Panda3d supports ragdoll per se, you could probably still get it to simulate it.
4.) Networking is hard but the link I gave you is a multiplayer game so you can see how the multiplayer stuff works. I have the game host control everything that way i don’t have conflicts about whether a collision occured or not- the server just decides and that’s final. It also helps stop potential cheating.
5.) have the server control the whole world and send update packets to the clients. see the code in the link
6.) I knew nothing of python before february of this year. I am not a programmer at all. The project in the link is only a couple of months old. The hardest part is just figuring out what you want to do (the details of it). Going and doing it isn’t that hard.
Panda3d doesn’t really limit your graphics. I look at games now and I can see polys that I couldn’t before just because I’m looking for them. The engine itself is very powerful. Your limits are basically your artistic ability and keeping your polys low.
Hope this helps. Feel free to copy/modify any code you need.
1. At the moment, i’m using the Blender Game Engine, and this also renders every poly that you are looking at… Is there no build in culling system, no way to have a simple culling system for each client…?
Thanks for the link, i will have a look see .
2. My zombies are pretty low poly, and the blender game engine can handle 60 in at once without any major lag issues but with quite a low framerate. I hope and i assume that Panda is MUCH more powerful than the Blender GE? So = more zombies :p.
3. I thought without the Physics there is no game…? Meaning you wouldn’t fall off ledges, be pushed around etc…?
4. How hard? I was told that a connection can be made with a few lines… I hope it’s not where it would takes months on end just to achieve a small portion…? Again thanks for the link, i’ll have a look .
5. But the models still have to be in the client right? I basically know what you mean by “have the server control everything in the world” but could you elaborate a little?
6. Well that sounds promising .
7. That’s good then, are there any nice graphic elements? For example real time shadows etc?
8. Once i’m ready to distribute my game, is it possible to compile it all into a .exe (and whatever it is on linux) so people can’t randomly edit my source…? Can i have it open in fullscreen?
I have no knowledge of the blender game engine. I would imagine that Panda3d is far superior for actual game coding.
well, it just all depends what you want. There are plenty of ways to keep from falling through the ground without actually using physics. For example if your world is completely flat you don’t have to worry about any changes to the main character’s Z position at all- just keep it constant.
4.) Well, if you’re just going to copy my code then not hard at all. You just change out the message commands for your own. Just figure out how it works and change what you need.
5.) There’s some difference of opinion on this point. My vote is that the server and client should be the same script (the same game) and that the host should execute certain commands and the clients others- but that their actual programs shouldn’t be different. This is the way Epoch is built. Both server and client functions exist in the same program and the program just runs the part it needs.
6.) Yeah, and I’m not that smart either.
8.) Epoch was packaged with packpanda. If you just download the installer you won’t be able to see the code. It’s packaged into an .exe as it is. That’s why I set up a separate link to just the source code so that people could look at the code if that want.
8b) Well, yes, it is full screen and set to any resolution you want. Look at the first few lines of main.py for the commands.
Before you get started, please understand that successful game programmers need to learn the necessary skills by first writing some small games. Here at the Entertainment Technology Center, we always start by having our students write little games that they finish in 2 weeks each. Once they’ve done five of those, they’re ready to tackle something bigger. I would strongly suggest you start the same way.
3. Well my game world is not flat, so will this be a problem? Isn’t there a way to make players, zombies etc dynamic? Meaning they would be affected by gravity etc. So when a player jumps they fall back to earth etc. Or is this all faked?
5. This is where things get complicated, i don’t want the server to be part of my client, i want the server to be a separate program which is run. How could i do this? How would the client be able to make contact with the server if it’s not in the same program?
8. Yeah i noticed there’s a part in the manual about making an .exe, so i take it i just follow that once i am ready?
8. Just after posting that question i noticed it was full screen :p, i also tested the multiplayer. I ran one client and hosted a server then ran another but the server wasn’t in the list. Not sure why. I think it’s because of either the hard-coded IP or firewall maybe?
9. Is it possible to have the server store player’s accounts once they have been created, for example a client registers, inputs the information etc then the file is made on the server’s computer in a folder that is specified etc and could be edited by the server administrator… I would think it’s possible. Is it?
10. I want to have background music playing all the time, footstep sound effects when walking, gun shooting while shooting etc how would i do this? I also want to have the zombies play sounds for example moans and groans, but i want these to fad away when a player gets further away from a zombie and obviously the sound should get louder as a zombie gets closer to a player or vice versa, is this possible? Some what 3D sound.
@ Josh, i was thinking about making a smaller game first, but instead i’m going to start with making the game i’m currently working on (i know a little stupid) but break it down into segments, so first the menu then the player then the zombies and so on. But what Iâ€™m wondering is, do I code the game first then add the client connect code, or do I just write it all in one go? If you understand.
Culling: There are probably several ways to do this here’s two quick ones.
One is to just keep the farcamera distance close to you.
Two: construct everything into rooms, and use a more complex algorithm to hide the rooms that you wouldn’t be able to see “np.hide()”
yes just look into applying physics to the nodes
Look at Legion’s work in the showcase section- he’s doing something similar
8.) Hmm. That’s a bug then. The server has to create a game by pressing “Host Game” before the client will see it in the “Join Game” section. There isn’t any hardcoded IP anymore. There hasn’t been for a few versions now. I’m not sure then what’s going on. I’ve had it work on two separate networks so far without any issues.
9.) Yes, anything is possible you just have to write code for it.
10.) All that sound stuff is possible. The issue right now is that Panda3d currently uses a 3rd party program for sound. it’s free as long as you don’t charge money in any way for your program. If not you have to pay. This may be changing soon. There’s an OpenAL project going on that may replace the 3rd party program. Josh will know more about this.
About smaller projects: I agree with Josh. Learn to make a simple game/program first. Maybe just a virtual building. That should teach you quite a bit.
I noticed that you joined the forums back in march. I figured you can done some simple stuff already.
Networking: how exactly is this going to work for you? Are you going to play coop or against each other and are the other players also zombies?
My game world is a mix of both indoor and outdoor all in the same scene, so the camera close wouldn’t work, or would it? Also having everything in rooms wouldn’t work. Unless i misunderstood?
I noticed this is part of the manual, so i’ll just wait until i get to it .
Is that the first person space shooter?
As i thought.
Oh god, more stuff to learn? I thought and kinda hoped it would just be a matter of coding it in to play etc. I’ll post more about this once i come to it i suppose.
Yeah well, i’ll see what i can do once i’ve finished the manual.
Basically, all players are survivors, the zombies are AI controlled. So yes pretty much CO-OP/MMOFPS.
I used the chicken exporter on one of my zombie models as a test, but it exported without the textures… Why?
Also my mesh was animated with armatures, but chicken just kept on reading it as a static mesh… How can i export the animations?
Finally, i’ve been going through the manual, but it all seems really complicated and i just don’t understand half of the things it goes on about and half the time i’m not taking in things as i don’t understand… Is it worth going through?
Could be a lot of things. I don’t know what the textures were before you exported. If the texture was placed with UV face thing then you need to make sure the image file for the UV face is in the right directory. But I’m guessing you just used the textures from blender in which case you’ll need to bake the texture to an image file and then export. Remember panda uses images for texturing mostly.
psyberpunk (sp.) can answer specific questions about exporting with chicken.
As far as the manual goes: I used to build stuff with my dad all the time. He said- don’t buy a tool unless you need it. That’s good advice here I think. There’s lots in the manual you won’t use for whatever reason. Lots of it isn’t needed for every project, etc. But as you come to a problem in your coding, look it up in the manual. It will still be there. But I think you need to code a little before you really understand some of the manual stuff anyway. So, only buy the tools you need when you need them.
It was UV mapped on, what do you mean by the texture in the right directory?
Also, i thought you could learn Python basics via the Panda3D manual? And once i finish the manual i’d be able to code basic things and understand what i am doing, then work from there. If not, where can i find some tutorials that take me through coding a small game? There were some in the manual, but all the links for download are broken…
EDIT: Is the Panda3D engine really for a Online FPS game? Will it allow for good graphics, large scenery + large zombie count with a good playable framerate?
EDIT2: Everytime i use the chicken exporter on my ANIMATED (using armatures) model it just reconizes it as a static mesh.
How do i export animations as a seprate file?
How can i export the model along with the UV mapped texture?
I animate my models with armatures, do these work with .egg?
Do the end users need python installed on their machine to run any panda games? Online games?
I have Python 2.5 installed, and i find a few things in Panda don’t work… Like in the Panda model viewer, the controls don’t function, do i need Python 2.4?
I’m using the PyPE python scripter, i find it’s quite annoying, i can’t just open python files with it i have to manually use the open, there’s no hotkey to run files etc. Any better ones?
Lastly, how could i have code run with a command window instead of the panda window? For a server for example.
If you use for example packpanda, then your distributable will include (1) your code/models/textures (2) the Panda3D libraries (3) a full copy of Python 2.4. You might want to distribute on CD or have a fast server, since your distribution will be some dozen megabytes. But the users don’t need to have anything else.
If you just distribute a zip-file containing your code/models/textures, then your distribution will be smaller, but users will have to have Panda3D installed on their system. A separate Python 2.4 installation is not required, because Panda3D comes with a full copy of Python 2.4 (on Windows at least).
No, Panda3D comes with it’s own copy of Python 2.4.
Panda3D is a C++ library compiled against Python 2.4, and so it won’t run with Python 2.5. That is, if you did not compile yourself and link against Python 2.5. If you did compile yourself, and if you are on Windows, then please tell me how you did it.
The choice of editor/IDE is a very private question for a coder. Everybody has his or her own favorite. Since I am kind of exhibitionist: my choice is… tada… the mighty VI. VI has been the choice of educated and ignorant alike for centuries… ok, I know this will buy me scores of flames, so I better stop now and get serious again. Choose the one YOU like best.
I don’t understand this one. Can you perhaps explain a bit more what you want to do?
So ideally, panda can handle large object count, high poly count and run it nicely?
As a large city comes at quite a high polygon price.
Okay, i’ll give that a look once i’m ready to implement animated stuff.
So with packpanda, is it multi-platform? And no one can access our source code at all? That’s what we’re aiming to use anyway.
Hmm it’s weird, the Pview doesn’t allow me to move around etc. I thought it’s because i have Python 2.5 installed.
Well i don’t really know of any others, hense why i asked the question. PyPE is alright, but as i said i’d like an editor that allows me to run code with a hotkey and of course point out errors/syntax errors etc.
Well, first how could i pack my server code into a single .exe without packpanda?
And then i want my server to run as a command promot (the black window) and then allow me to input commands which are scripted in.
So for example, i want to kick a player with a kick feature we coded in, i’d like to just type for example kick blah blah into the command box and have it execute it. I’m not asking how to create a kick command, i’m asking how to have the server run as a command window. Or should i just make it run with panda and have several different options coded onto the screen?
A “large” city with high detailed models could have some hundred million polygons. No 3D/game engine can render this much. Not because of the engine, but because of hardware limits. At least not brute force.
But there are “tricks”, or in other words: the knowledge of a game developer. Here is one of these tricks, called LOD:
You zombie model might have, say, 5000 polygons. This is enough to have some details, like fingers or ears. It is nice to see all these details if you are close to the zombie. but if you are, say, 300 feet away you are no longer able to see these details like fingers. Because one finger would be smaller than one pixel on your screen. So spending cpu/gpu time on rendering some dozen polygons for this finger is wasted time. The solution: use a low-poly model (200 poly???) if you are far away from the zombie. That’s what LOD nodes are for.
And this is only one “trick”. A rather simple one.
So again: the better YOU are the more zombie/houses/whatever you can have.
Well yes of course, so LOD systems are possible? That’s great it will allow for a nice huge city and a lot of zombies, i’ll have to look into how to do it soon.
Oh dear… So a good cracker could access the source code of any comercial game…?
Hmm, well all i do is open a command prompt, then type “pview zombie” which brings up my zombie model but textureless… Anyway i read in the manual that you are meant to have several movement controls… But i can’t move around the model at all.
Yes, but i don’t want to code to run with nothing… I want it to run with a command prompt so i can input kicks, messages etc to the server…
Unless i misunderstand? Once i pack my code into a .exe, would it run with a command prompt anyway?
Another additional question. We’re beginning to understand Python more now and are already thinking technically how to do things in Python for our game, but the one thing that we just really can’t think of how to go about is the Client<>Server set-up or rather the networking… How would we start it? Would this be the start of our client code? I’m aware that it’s basically the server binds a socket and the clients request connections, once connected they transfer data between each other.
For the zombies and the city, would we code them into the server code? And have the server run the zombie AI, movable doors, ammo + weapon pickups etc?
check the space-shooter game… somewhere in the showcase. there are other examples which are using networking around on the forum. if nothing helps i can provide you with a somewhat complicated mmo server<->client setup which is actually too difficult for educational purpose. also dont forget to check out the panda irc channel , there usualy are people there who can help you with 98% of all your questions.