Building levels in external software
In order to follow this you need some understanding of FPSC as well as your external software you will be using to create you levels with.
The major advantage of creating a level in an external software package it will allow more freedom in creating levels without limitations that FPSC has with segments.
By creating levels in a 3D editor you can create more conventional 3D levels that you would normally find in your favorite First Person Shooter games. FPSC is limited to some extent and creating meshes for your levels require that other segments be taken into
consideration with creating a level with an external program were this limitation does not apply.
However there are some things that have to be taken into account when creating levels.
I’m not going to explain how you create levels or how you texture or design levels the purpose of this is to explain how you can achieve a level with no collision or culling problems. We will also be looking at general mesh creation as well as speaking about exporting and import meshes.
Fpscreator has been build on some set rules and some of these rules can be broken as well as be modified to suite your needs. The rules are based on rendering, collision and culling for the best performance of the engine.
Lets look at mesh standard and creation.
FPScreator uses a standard room size of 100 square units per segment this includes walls ceilings and floors. By painting segments one can increase the room size by a 100 square units each time a new segment has been painted. Floors segments have different thicknesses the standard thickness or minimal thickness is 2 units with ceilings the same applies with the minimal thickness of 2.5 units.
Walls are a little different and have different sizes depending on what the meshes look like but should not exceed 5 units as well as the mesh polygon details should be kept low.
These are units being used by FPS segment creator for placement within the editor. The editor only allows meshes to be moved in 5 unit increments and has strict sizes for mesh thicknesses that is allowed for making room segments if sizes differ too much it will not be saved correctly and you will not be able to create room segments correctly.
The same applies when creating levels in a 3d editor to some extent your mesh thicknesses should meet the minimum thicknesses as well as the 100 square unit length and width requirements if you intend to use other segment with the level you have created.
If you don’t intend to use other segments this mesh dimensions do not apply and meshes can be any thickness you require it to be. I do however recommend that you leave the length and width dimensions alone as this will allow for better texturing as well as collision and culling problems. With having said that some meshes that you have created
can exceed the standard dimensions to allow quicker level designing objects that will not come into direct contact with entities or players but floors or any object that is walked on must be kept to the maximum dimensions this excludes either width or length may be smaller that the maximum dimensions but one should always be kept to the normal limits.
The floor mesh polygons should also be kept flat or polygon detail kept square with sharp corners and should not exceed 2 units above the mesh. This is no guarantee that the collision will work correctly with your floors so I rather recommend that you keep them low polygon and rather use shaders to add details. The other option, which is to add detail separately, but to add the mesh as an entity with collision detection removed so if there is any problems it does not effect the whole mesh and if the detail is small enough it can be over come easily. Flat floors are still recommended. Terrains are not an official feature of FPScreator and will have problems the lower the polygon and smaller the thickness of the terrain the less problems you are likely to have.
Adding back faces to meshes will also help with collision detection. Since I have not written or seen the collision detection code I only know that with removed or inverted faces collision is far worse than with a solid object with all faces drawn it does however have some draw back, that there are more polygons to be rendered. However culling should take care of that if your level has been “sealed” correctly as well as having no light sources out side the “sealed” area adding doors to your level will also help with performance
Walls also have some limitations but that only applies to detail on the meshes and mesh thickness. With creating wall meshes there are collision problems with parts of the mesh that sticks out, with either jumping or crawling collision problems usually occurs. This can also be fixed to some extent by exporting the detail separately and import them as stand alone segments.
This is just the basics that have to be taken into account when creating your levels with a external program.
Culling simply refers to the area of your level that is not visible to the player that does not get rendered. All you can do here is keep your rooms small and add some doors to help speed up the performance a bit.
Now the fun part comes with regards to importing and exporting of meshes and which software to use.
Okay first of all there are numerous methods of getting a level into 3D editor and you can use any other method you want. However if you want no collision problems use my method of doing things the end.
You can use what ever software you want to make your level in, however make sure that you software is capable of exporting meshes one by one and with exact ZXY coordinates.
So in other words if you have export a mesh 200 units from the center cooridantes (0.0.0) when exported it should still be 200 units from the center. This is very important part and can’t be skipped what so ever or else you will not find it easy to fix meshes.
So make sure that your software can do that. Also make sure that your editor can handle the amount of polygons that will be created a small level section with high polygon detail could easily reach in excess of 15000 polygons. Also note it is better to build your level in sections and not a single complete level as your editor might crash and you will lose all your work so make backups often.
As I have said before some meshes can be grouped like walls or areas that the player or entities does not have access to like ceiling or walls. Note grouped items does not mean
boolean items. These meshes are still separate from one another and as such will need to be textured separately with some thing like lithUnwrap which imports and exports the correct coordinates and does not center objects. Also note grouped items will have limited texture options so only use it when you really have to.
Walls floors and other objects should be export separately and textured as such.
When exporting start with the floors and name them, floor_mesh_1 , 2 ,3 ect till all the floors meshes have been exported. Do the same with the rest of the meshes example wall_mesh_1 or Wall_group_1 ect…
Once you have exported and textured all media fire up FPScreator segment creator.
Start by loading the floor meshes only if you have exported correctly each mesh will fall into the position they were saved in from the center. You might have to move the meshes down to the y coordinate of 0. It has to be level with the checker board in the editor.
Once you have moved and applied textures to all the floors you can export all the floors as a single straight segment.
Do the same with the walls but before you start adding the walls load the floor segment you have just created to make sure that the walls are all in the correct positions delete all the floor meshes and export the wall segment after you have applied the textures ect.
Remember to rename the wall segment or else it will just replace the floor segment and you will need to make the floors all over again.
Again do the same with the ceiling and any extra detail like pipes or other map object that you have created,
Left this piece for last in order to insert your doors you will need to load the wall segment again place a single door and CSG and door frame where it needs to be delete the walls and export the door, again remember to rename the file. Do the same with the rest of the doors. Do not place all the doors at once as it may or may not work.
If you need to place other CSG items do the same as above but I prefer to do my CSG while creating my level as CSG tends to be picky at times and may or may not work correctly. All meshes should be saved as straight segments.
If there are more questions you are welcome to ask if there is any thing I have left out or you don’t understand
The buddy system is essential to your survival; it gives the enemy somebody else to shoot at.
The problem with taking the easy way out is that the enemy has already mined it.