I once started to work on game where you go around a level shooting all the targets and there’s things like turrets and such. It’s far from complete, and may stay that way.
Anyway, this was started with Social’s old FPS demo and added many things like walking up ramps and steps, destructable wall panels, and a door. There’s also lifts, though there’s a little thing about you sliding on them even with decent friction.
Another thing you’ll find is when you go into one area, the physics objects get removed from another area and added in the area you’re about to go into. When you go back, they get swapped out again.
Due to the planned size and working on artwork and other games it may be a while before level one gets close to being done. There is a lot of normal maps and physics and logic, but still runs anywhere in the range of 40-60 FPS in most places.
NOTE: This isn’t going to ultimately be a major story driven FPS with cutscenes, it’ll simply be an arcade game where you shoot all the targets that are all around the level and not get hurt by the turrets. You won’t be killing people and watching blood fly, just a large elaborate no-blood nicely done target shooting game.
-Put in a simple swap system to render meshes visible or invisible when being in certain areas to attempt to reduce load on the GPU.
-Put in an addition that features ladders that you climb pressing E, press W to hit the ladder then press E to climb, hold W while climbing the ladder to immediately get off the ladder when you reach the top. This is initial, you only climb up, but you can press E again and climb again if you say, fell halfway down the ladder.
-The little new area features windows, this actually took a while because I had to make more mesh for the building exterior and then some terrain at the bottom.
I’m using Erwin’s bullet softbody preview 6, the game seems to run a bit faster in that build and the .blend file works fine for me.
I don’t find any need for a gun right now, just the crosshair is enough, the entire point of the game is to shoot a bunch of targets throughout the level and turrets that intend to harm you.
Anyway, another update, you can now go in the terrain-like area found between two sections of the building now through an opening in an area accessable by blasting a wall panel to pieces. Once outside you can expect discarded tiles and air conditioners. You can also go down the ladders now without falling.
Because the targets don’t have logic now other than to fall down when shot it’s right now more of an environment than anything.
-Outdoor area of the level expanded greatly, now terminates using a big concrete wall instead of space.
-New building area added, a big room still needs to be furnished with objects and additional floor geometry, some smaller areas have objects.
-Climbing ladders now mean you detect an invisible box around the ladder instead of being brute force now, used to address a problem where another ladder repels you when pressing ‘E’.
ALSO: I notice in the framerate statistics that Logic takes up the most framerate by a good margin, I already put some ray sensors to X-ray to speed things up slightly, but I need advise, tips, and ideas on optimizing the logic as far as it can go.
-Found a big logic slowdown occured with the destructable wall panels, had been checking if it needs to turn into another piece object when there’s no piece left or right of it every frame. Now only checks every 30 frames or when you shoot it, giving huge speedup. You may have to shoot it a little more now before it breaks but still works good.
-Re-did the ladder logic as a seperate ladder climbing state, in the state you can now go off the side of the ladder to land on plaforms just to the side.
-Removed un-needed logic bricks.
-The newest big room now has multiple plaform levels and stationary tables with breakable glass, and vase-like things that you can shoot around.
Right now the destructable wall logic doesn’t run all the time, it only runs every so many frames or so. I also used the ray sensor filter to speed things up there.
Now, I looked at the logic you see when you select the crosshair and tried to optimize that with states, I couldn’t do it without breaking the shooting and getting an error in the console.
I need to know, click on the crosshair object to see the logic system in place there, and see how it can optimized (with states or otherwise) without breaking the system (that is you can still shoot crates off and blow up the turrets and such). I already did something basic by setting a delay between pulses so the python doesn’t execute every frame.
-Roughed out much of the layout that’ll be the rest of the side of the level you start in.
-Included small pulse rate change in the player’s bricks that somehow increased max starting framerate and lowered the percentage of FPS taken by logic(nearly 10 FPS gained in some tests)
If you click on the crosshair you’ll see this logic system, in the top right quarter you’ll see part of the 2 python scripts it uses.
I had a bit of trouble trying to optimize the logic system (by states or ray sensor filtering), without getting an error “Nonetype object has no attribute getOrientation()” or something similar either right away or after a minute. It breaks the shooting so I can’t do much to optimize it as much as I can or how optimized I think it can be.
The newest version is in the top post, see if you can look at what you see on the above screen and see what can be done to optimize it a bit, using states or something else, thanks.
I get about 8fps in the softbody preview 10. The first gold turret blew me out of the back wall of the map and I fell through the earth. I get about 9-10fps in softbody preview 7. The old link for 6 isn’t working.
Well, your logic problems don’t arise from your player character or your scripts.
It comes from having far too many objects at once, and having too large of a polygon count. Make a dynamic spawning script with, what seems to be, practice and talent to load the level. In order to save all the information as it is, just make a script that looks at all the objects and their position/orientations and save that info to a .txt file.
It is interesting, and would be far better if I could get above 10 fps =P
I get about 30 FPS or above without ‘Enable all frames’ on with my machine.
Make a dynamic spawning script with, what seems to be, practice and talent to load the level. In order to save all the information as it is, just make a script that looks at all the objects and their position/orientations and save that info to a .txt file.
Do you have an example of this? I’ve never really gone hardcore with python scripting, most of my python scripting other then basic stuff have been extensions and changes of scripts from examples and those from people on this forum.
Okay, slowly, but surely, I have been optimizing the logic.
-Use Ben’s new distance constraint actuator for shooting (doesn’t give me the nonetype object problem anywhere that the old scripts were causing when doing even slight changes)
-Use collision instead of rays to swap physics objects between the origional two areas
-For the visibility system, allow one object’s sensor to control the actuators of all other objects in the area and repeat for objects in other areas (gives a few FPS improvement on my machine)
-Remove logic for physics objects in one area as it’s not needed (I do that and have that section share the sensor with the lifts I get up to 10 FPS improvement)
-Add the wall at the end of the outdoor area to the visibility system as well as one area that was needed to be visible because of windows (dunno about good FPS improvement the graphics aren’t the bottleneck on my computer)
Notice the increase from just less than 30 FPS to nearly 40, on some runs when I get the performance spike on an optimized build I get 60 FPS in most areas, the recent shot was taken during a performance spike run.
-There’s been material and lighting tweaks
-I’m using a series of scripts to suspend the dynamics of groups of objects and make them invisible too, this saves major FPS, the objects in question are on layer 3.
-Rewrote most of Social’s old walk script, running is in there too, so is going up and getting off ramps and stairs, you should let go of the jump button right after you jump, you don’t move on the ground if still holding jump which came about when I fixed some ‘airwalk’ bug. Running (which is shift-w) is best done on flat ground and stairs and ramps at an angle.
-Redid the visibility system for the static objects, not as many static objects, but the main level geometry is made invisible and visible as you go through it.
Oh, and the object swapping, because it now only deals with visibility and whether or not dynamics is enabled now means that it happens in REAL-TIME. In other words, there’s no temp. freeze when you’re about to go into the barrel room shown in the screenshots.
The first screen is the hallway that you get to on the way to the room with the tables, only you turn instead and go through a door. There’s glass to break and the room off of it, it just needed something.
Can you guess where in the level the place in the second screen is?
EDIT: Added a pair of towers just beyond the concrete wall, to prevent from having to make even more stuff beyond the wall, you can’t jump through the windows and they look over the completed terrain part of the level. I also noticed load times were getting quite long after adding two long ladders, the poly count of the rungs I found could be lower so now load times are much lower with the ladders decimated. (polycount made much lower using the modifier)
Updated significantly again (sorry for all the posts but no one replies)
-New normalmap for the concrete triangle texture, now the normalmap looks much better
-More material tweaks
-Added a pair of towers just behind the wall, you go into the wall to get to them
-3 more textures, the two derived from CGtextures.com and one that’s ground littered with paper (you barely see it, on the ground at the bottom of the back of the wall)
-Restored the origional material for the metal stairs (I noticed this needed fixing)
-Added the physics objects in the biggest of the rooms to the object to the system of making objects visible/invisible and disabling/restoring dynamics, gives good speedup in the parts of the level that don’t need them visible.
That’s because I uploaded an old revision by mistake. I put up new links to the right revision of the file. The links were broken because I deleted the old revision of the file and uploaded the newest one. The newest one also has a new normalmap for the other tiled floor texture.