Get the latest Education e-news
 
  • Getting The World Of Sprint Vector Over The Finish Line

    [11.20.18]
    - Kevin Andersen

  • Lighting The World

    "Sprint Vector" doesn't have laps; the tracks are linear start-to-finish courses. We made reversed versions of all of the maps, which opened up possibilities for new shortcuts and falling/climbing sections that you'd never see going one direction. Having a reversed version of a map also requires a whole new lighting scheme to keep things fresh and expand the game's visual palette from one race to another.

    Unreal's static lighting solution is immensely scalable and lends itself to combination-approaches that mix both static and dynamic lights. While static lighting is pre-computed and has a very high quality and performance ceiling, it is still static and will not work with the toon-shader as the characters pass by sources of light. Extra care had to be taken to ensure that the number of dynamic lights and their influence radiuses were kept to a minimum while still ensuring that the characters had at least one dynamic light on them as often as possible.

    Since "Sprint Vector" takes place during a wacky game show, the tracks were littered with neon markers to direct the player and advertise wonderful products like Andew Deodorant (a nod to an in-studio meme related to Lead Designer Andrew Abedian and an unfortunate typo on his GDC badge). Unreal Lightmass's emissive area light feature allows these glowing meshes to cast their light into the environment without me having to manually place thousands of tiny static lights.

    The sun was always a stationary directional light with ‘Area Shadows' DISABLED. This kept the static shadow maps sharp and made the lighting look cartoony. The dynamic shadows cast by the players had to be low-resolution for performance, but the blurriness clashed with their shading, so the shadow filter sharpening had to be increased. This revealed more noise in their low-res shadow map as they animated, but it kept their shading and shadowing aesthetically consistent. The sun is the only light that casts a dynamic shadow, except for the spotlights in the intro.

    One of the optimizations made possible by forward lighting mode is that materials will default to a much cheaper version of the reflection environment that does not interpolate between reflection captures' various cubemaps, but rather just chooses the closest one and uses that. This greatly decreases lighting instructions and the cost of reflection captures, but requires you to place more of them and be more careful to avoid situations where one section of floor has an unexplained pink light from being too close to a reflection capture in an adjacent room.

    Another issue with reflection captures is that they are refreshed on level-load. That would be fine, but our levels have fog that changes its density and color as you enter and exit areas. Those areas would then have that fog in their reflections and make shiny objects glow the wrong color when you get there. To fix this, we made a small engine change to allow reflection captures to use a few of the same show flags as scene captures. Disabling fog in the captures solved the issue.

    Conclusion

    "Sprint Vector" was hard to make.

Comments

comments powered by Disqus