I’ve been working on the character controller this last week. We did a bunch of playtests of FPS games like Quake Live, Ue4, Cs:Go, Tribes, Dirty Bomb etc. to figure out how long it takes to cross a room, how long to get to another exit, how long engagements typically take and other information like so we can make informed decisions on balancing our character, level and weapons.
Because camera distortion is so extreme in this game I made a shooting range to see when enemy characters appear too far away and polled my team on which ones they would shoot and which ones they would ignore. The answers were a unanimous 50 meters was the limit. Then I adjusted the character movement speed so that the character would get to the max range enemy in just over 4 seconds.
Shooting Range Tests.
I then tweaked and measured the player controller settings to get us more accurate level design details and have distilled them below. More testing to come.
Sensory Overload Level Design: What we know so far
Use Prototype to keep meters consistent. Only scale prototype objects in Element mode or you will lose 1:1 scale of the textures. Make levels out of multiple smaller pieces. Color objects with Prototypes vertex color system. Use colored point lights to point out features.
Our game is very different so PLAYTEST EVER YTHING. We have a lot to learn. Share what you learn with us so we can add it to this document.
Our character can move 50 meters in 4 seconds.
The crosshair is 1.5 meters high.
Vertical Jump: is 3.5 meters. A character can transition to overhead surfaces that are 3 meters above them and back smoothly. The character will automatically walk onto overhead surfaces that are 2 meters above them (feels strange) but can pass underneath them by disabling wall walking.
When jumping up and down the character will start rotating to walls 4 meters in front of it.
Horizontal Jump: At full speed the character can jump horizontally 7 meters or less comfortably and 8 meters with a skilled jump. Longer distances are catapulting by catapulting or turning off gravity.
WSAD controls. Space to jump.
Shift detaches the reticle (screen space aiming).
Q and E rotate your character (helpful with detached reticle).
Ctrl turns off wall walking and you will fall from the last surface you were standing on. (We will experiment with changing this).
Z re-centers your character to look straight ahead (helps knowing where you will fall without wall walking or when you get gimbal lock looking straight up or down).
Tab is sprint but its use will be limited.
General Design of Levels:
3 or 4 main area/rooms for a small level. 5 – 7 in a large arena. Enclosed maps with angular walls are easier. Open maps and curved walls will require more testing.
Where possible keep wall/room segments at multiples of 5 meters so we can make modular environmental pieces later.
If a smooth transition is required Angle walls 45 degrees to 60 degrees to minimize transition hiccup. This is not a rule as jumping makes all floor to wall transitions smooth (even overhangs).
Negative space and parallax depth look great with our camera. Cylinders show the least amount of distortion.
It should take 3-4 seconds to get to at least 2 separate exits from wherever you are standing in a room.
The longest distance you can see before you are obstructed will be 50 meters (4 seconds of walking).
Create loops (where you can choose to go another direction and get back to where you started) not linear paths or dead ends wherever possible.
Tunnels connecting rooms must take only 1-2 seconds to get through and should be at least 5 meters wide.
Every room needs at least 3 elevations of combat.
If you create windows the character must be able to fit through them. Smaller windows will require that you turn off wall walking to shoot through them which will be something to explore later.
Every object we create needs to be at least 3 meters thick. 2 meters of thickness can work (if you test it) but 1 unit thick objects play havoc with our wall walking and will launch players in unexpected ways.
Rounded surfaces now work but require additional testing.
Pipes are smoother to move over with more resolution. 64 or 128 vertexes are better. 8 meter radius or larger feels comfortable to move inside of, but for passing through tunnels smaller sizes might be necessary.
Unity has a limit of overlapping dynamic point lights it can handle before it messes up the camera. The max is 4. We have it set to 2.
We want repeating patterns of uniform scale over the map to help the players register depth and distance. 1 meter tiles register very well.
We are planning to use a combination of tiling textures for the ground planes, a single texture with multiple materials on it for prop variation (like this), and decals.