I added another link today to Stumbling Toward ‘Awesomeness’. It’s a blog run by Chris Evans, a very good friend of mine who is also our Lead Technical Artist at Crytek. In the blog he explores the struggle towards making things cool or just plain work in a production environment. It’s a fresh blog, but I expect it to “Stumble Towards ‘Awesomeness’” … sorry, couldn’t resist.
I added a link to GameArchitect, a pretty cool site about game engine development written by Kyle Wilson who works at Day 1 Studios. We’ve unfortunately never met nor conversed, but I really like the content he has on his site. Day 1 Studios is currently working on ‘Fracture’ which is being published by LucasArts and it looks like a very interesting angle towards terrain-based gaming, putting it on the list of games to check out once released. Kyle manages to give a high-level view of game engine design which is not only interesting, but also often hard to find at such a quality. Lately he’s been posting about the ‘Despair Engine’ (what an optimistic view of things …) which has been developed for Fracture.
A couple of days ago the first gameplay footage/teaser of Mirror’s Edge has appeared. It looks like the guys and girls at DICE have done a tremendous job, although I’m not 100% sold on the artistic style. Sure, they want to highlight things you can interact with, but why does the zipline have to turn red while you are already sliding down? They use very, very intense visual colors which clash with their otherwise ‘cold and clean’ look. However, the ‘revolution’ about this title is the level of immersion which they are going for when it comes to the 1st person perspective. if the controls work as flawless as the video suggests, then they are definitely on to something and may set a trend which no future FPS can ignore. Here’s the footage:
Some people may not get what the big deal is with this. What they are doing is actually very challenging on two levels:
1st person controls which work like a 3rd person game: Whenever you play ‘canned’ animations for climbing, slides and rolls you take away control of the character. Taking away control is very acceptable for a 3rd person game, but in 1st person people can easily hate it. 1st person is all about twitchy, fast and accurate controls and as controls are immediately tied to the camera the game can feel unresponsive. Only a live gameplay session will be able to tell, if DICE succeeded in coming up with a good compromise between responsiveness and immersion. I’m personally very curious how it plays and also how I will react to it.
3rd person model/animations with a 1st person camera: This is hard to get right and visually I think they did an awesome job. Usually 1st person arms are done with a separate, high-res model holding the weapon. Only a few games try to do first person legs or the player body casting a shadow. Off of the top of my head FEAR, Halo (at least Halo 2+) and Crysis come to mind. Even recently released games such as HL2 Episode 3, Portal, UT3, COD4, and BioShock have stayed away from this, because it definitely falls into the “can of worms” category of features (i.e. a lot of work is needed for it to look passable and there is not that much bang for the buck once you get it working).
So, I’d like to spend the rest of this post brain-dumping about the second aspect and how such a thing could be approached. Crysis and Halo use a hybrid approach. They have the high-res ‘arms’ model (usually with a high-res weapon model merged into it) and use the regular 3rd person character model for the legs. This means you need to talk to 2 animated models and closely coordinate 2 sets of animations for things to look right. In order to avoid clipping artifacts (and to get rid of the redundant pair of arms), the third person model used for the first person view is not ‘complete’. It’s missing the head, parts of the torso and arms.
Another extremely big problem with this is that the arms are attached to the camera which is sitting at ‘eye’ height. Now, when looking up/down in a shooter we are not rotating our head and upper body (as a human would do), we are essentially just making the eyes look up/down (so rotating about the eye center). This has the effect that you would now be looking directly into the 3rd person model used for the body/legs. Emulating the body movement with the first person camera is tricky as it quickly leads to clipping issues with the environment (imagine standing in front of a wall and looking down). Crysis offsets the 3rd person model when looking down and that works well enough (people don’t spend a lot of time looking at their feet in 1st person shooters). I’ve heard (but not verified) that Halo switches between animation driven camera movement and entity based camera movement when you can see your legs. So, when you see the legs taking shifting steps, the camera will move using the same shifting steps, but when you don’t see the legs the movement is smooth.
We had a lot of problems syncing 3rd person animations to 1st person animations in Crysis. Reloads had different timings or just plain looked different. As we had the players shadow (sometimes extremely visible) this broke immersion a lot and it also broke readability in multiplayer. If I’d have to do it again, I would get rid of the distinction between the arms and legs model and try to use a very high-res ‘3rd person’ model for the 1st person view and spend effort on a framework/tools which make sure the camera does not clip into it. It will take longer before you have something which ‘works’ compared to the traditional arms/weapon only approach, but in the long-term you have a lot more flexibility and can capitalize on the immersion. The time an animator spends making animations look cool for 1st person immediately pays dividends for 3rd person and vice versa. You also get some “free” features by having the camera attached to either the eye or a special camera bone you can animate it to match the animation (like look down slightly when performing a reload or shifting the camera down for a ‘landing’ animation after a big jump/fall).
I believe that at least FEAR went the non-hybrid route. Regarding Mirror’s Edge I’m not 100% sure. The main reason is this scene from the trailer:
The angle between the arm and body is strange. Either the body is oddly contorted or it’s two separate models. However, there is a lot of evidence that it may still be a single model. For example, the character does not cast a shadow. This means animators (or IK) could twist things into weird positions so that it looks good for 1st person without having to worry about 3rd person looks (because nobody could see the shadow). However, the ‘twisted body’ approach stops working if you have multiplayer. There you want every movement to look good on a 3rd person character and one of the main benefits of having your 1st person animation be your 3rd person animation would be that it would just work with a single animation (one logic for player animation and less memory == yay!). However, if IK would be responsible for the twisted body, then it could be driven by different parameters in 1st person and 3rd person (and look good in both!).
Using a single model approach, you would still have to cut away parts of the torso and head (for the shadow you would still render a complete model). This is not a problem, because you would want the 1st person model to be very high-res compared to regular 3rd person player models. The arms/weapon are IKed to the aim direction and the camera is positioned so that you will never really see the shoulders. Even looking up/down should ideally be handled by an animation. Now, in order to avoid the ‘wall problem’ I mentioned, you can maybe author the animation to keep the camera in roughly the same location or as an extremely simple approach account for head movement in the collision proxy of the player to avoid clipping.
Anyways, a lot of this would need prototyping, but I think it’s ultimately doable. It will require some artist/animator love and maybe creative use of the camera bone and weighting to hide some artifacts. Once that is solved, the following two issues will pop up on the radar:
First person interaction with the environment
First person interaction with other characters
Based on whatever choice you made in order to get arms/legs working (hybrid or uniform approach) this can be very, very complicated, time consuming and require a lot of additional assets … or it can be fairly straightforward. I would like to claim that the uniform approach just lets you reuse any 3rd person animation which you made for AI. Having a camera bone and custom 1st person model should provide enough flexibility to battle clipping and other artifacts.
Final words of advice:
Whenever you work on 1st person anims, make sure you work in widescreen. You may miss some near-plane clipping scenarios otherwise.
Be wary of your near clip plane. It needs to be at the maximum possible distance to battle z-fighting which is especially problematic if you make a game with long view distances.
Don’t move the camera too much just because you can. Some people may get motion sick and you still want the player to feel in control.
When doing the uniform approach, avoid procedural animation on the 1st person arms (like weapon ‘inertia’ when turning left/right or weapon bobbing). The procedural effects and animation add up and can produce near-plane clipping which otherwise wouldn’t be there.
I finally have some time to dedicate to a blog. As I am new to this expect a lot of changes as I am wrestling with this medium. As we have a few extended weekends coming up in Germany, I believe that this place should fill up with nice content quickly. I’ve been thinking about a lot of things to say, so it’s now ‘just’ a matter of finding the time to write it down.
}