Thanks for sharing! Could you talk about some of the hurdles that the team had to overcome to keep a stable frame rate? Also, I love the particle effects that Ive seen. Could you share some info on that? Love the water on the dam!
somedoggy, frame rate stuff below. Interesting question because the original art and budgets were built for the Kinect version, Kinect costs fps and memory, more than you would think. Our target was 30fps @ 720p with 4xMSAA.
Real time shadows are expensive, we're not deferred. Started with 4 cascades, optimized down to 3, only 2 in split screen.
Props turn off at distance solved pop in by growing them in, Farcry 1! Props only allowed one draw call, artist rule of thumb not an engine hard coded requirement, went back and texture paged older props to use a single texture/shader/1 draw call. No LOD's can't afford the memory, prop is either on or off.
Physics programmer limited number of active broken pieces per prop, very hard limit. Extremely low poly Havok collision hulls for broken pieces, hard to debug, not artist friendly, artists don't understand how to build an optimized hull. Havok again?!!!!!! Too many broken pieces active at one time spike frame rate.
Stu does view frustrum culling I believe, hides any geo not seen by camera. Tracks are loops which means at any time you can see most of the world, camera fairly wide, 60-70fov based on speed, measured horizontally, implemented volumes that when the car is inside it, turns off artist specified objects, helpful on some tracks not so much on others, great Maya workflow very easy to set up and tag groups of objects to a particular volume in game tool for testing, don't actually have to drive the car around.
Avatars are expensive, no option to optimize, global asset linked to a bunch of existing games. 4player split does not render at 720p, slightly lower to keep frame rate solid.
All particles are rendered at lower res buffer, common trick, but if you pay attention they can look pixelated really bothers in some instances.
Even with our cartoony diffuse art style we still had fps concerns!
cupsster, extremely important. For baked lighting it's the difference between looks awesome, or looks blobby/low res/unshippable light maps. The rule of thumb we use is if the edge is hard in the normals of the model you must cut that edge in the light map uv's to allow a clean separation between the light map edge to avoid smearing and stair stepping. Basically if you don't do this the baked lighting will fight with the hard edge you assigned in your normals often looking like a soft edge. Same is true for modelling, all those nice rocks the guys modeled looked shit if their normals were softened. The guys often started with an auto normals 30 degrees in Maya and then did hand clean up. Hand edited soft/hard normals were a must to make the game look good for the real time lighting and the baked lighting components.
Oh and thanks Stu for all technical breakdowns! Really cool to see how you guys went around accomplishing this. Picked up a couple of new tricks as well.
Sweet I just came back from visiting family and I was playing the trial, my cousin wants to get it & told his nephew about it.
For me the trial was fun and I love this type of game play for cars, where you can throw them around and flip out I enjoyed this release, love the colors and art style perfect for kids too and It's been a while since I did any gaming.
Congratulations! Me and my wife are use Xbox live users and I have to say its great to finally see a purchase worthy game that uses the Xbox live avatars. The environments in this game look incredible!
This looks absolutely glorious! instantly added to my inspiration folder.
I'm considering moving more of my art and design process into maya because of this.
Just out of curiosity, what software/engine did you use to compile the actual game and how was the workflow pipeline from maya?
Looks really nice! I wonder what programs did you use to produce this title? I'm specifically thinking about the engine. I'm just now getting into the Untiy3D engine and it is lots of fun.
Powerbored, the engine was built in house for this game we called it the Joy Ride engine.
The pipeline from Maya was awesome, one button click on the Maya self exported your current world, copied it to the xbox360 rebooted the box and launched the game into that track. You could set a config file for all sorts of other options too like skip front end, turn off hud, etc. All our tagging and mark up was in Maya so there was no learning curve it was a very simple straight forward pipe without any unneccessary crashes if you forgot to assign a texture to a model for example. We had a custom reference pipeline which also lived inside Maya and props could be updated throughout all levels without having to reexport the level they had been placed in just had to reexport the prop file. Collision was done inside of Maya as well with Havok's Maya tools.
GhostWalker, we used our own custom built engine, but I would imagine you could create this look in Unity, not too sure about the lighting though we had real time directional lighting and baked the indirect component of the lighting into light maps I'm not sure if that comes with Unity out of the box. But you could always just bake all the lighting, we did not go through route because we wanted high quality looking shadows and we would have run out of memory trying to get to acceptable resolutions with some of the bigger tracks. Strangely enough we had to tackle this problem on Kinect Sports 2 skiing and it was a major nightmare without the real time shadows.
In terms of art software nothing fancy here:
-Maya for all 3D modelling and scene assembly.
-Photoshop CS4 to create textures.
-Nvidia Photoshop plugin to export diffuse and spec textures, there are no normal maps in our game.
-Custom interface with Maya mental ray to bake indirect lighting to light maps and bake on a farm, direction lighting and shadows are real time.
-Ati cube map gen to blur cube maps captured from game.
-Debug menu in game to tune post processing.
-Havok Maya tool to tag collision.
-Some various custom Maya tools/scripts to help with repetitive non creative tasks.
GhostWalker, we used our own custom built engine, but I would imagine you could create this look in Unity, not too sure about the lighting though we had real time directional lighting and baked the indirect component of the lighting into light maps I'm not sure if that comes with Unity out of the box. But you could always just bake all the lighting, we did not go through route because we wanted high quality looking shadows and we would have run out of memory trying to get to acceptable resolutions with some of the bigger tracks. Strangely enough we had to tackle this problem on Kinect Sports 2 skiing and it was a major nightmare without the real time shadows.
In terms of art software nothing fancy here:
-Maya for all 3D modelling and scene assembly.
-Photoshop CS4 to create textures.
-Nvidia Photoshop plugin to export diffuse and spec textures, there are no normal maps in our game.
-Custom interface with Maya mental ray to bake indirect lighting to light maps and bake on a farm, direction lighting and shadows are real time.
-Ati cube map gen to blur cube maps captured from game.
-Debug menu in game to tune post processing.
-Havok Maya tool to tag collision.
-Some various custom Maya tools/scripts to help with repetitive non creative tasks.
That's about it really.
Cool, Thanks for the information! I should really check out that Nvidia plug-in for photoshop. Adding a specular map and of course quality texture can take an average model to a great model.
Thank you for taking your time to do such a write up.
As a person that's getting knee deep into making games all I can say that posts like this are nothing but info gold mine and a massive motivation.
Replies
Real time shadows are expensive, we're not deferred. Started with 4 cascades, optimized down to 3, only 2 in split screen.
Props turn off at distance solved pop in by growing them in, Farcry 1! Props only allowed one draw call, artist rule of thumb not an engine hard coded requirement, went back and texture paged older props to use a single texture/shader/1 draw call. No LOD's can't afford the memory, prop is either on or off.
Physics programmer limited number of active broken pieces per prop, very hard limit. Extremely low poly Havok collision hulls for broken pieces, hard to debug, not artist friendly, artists don't understand how to build an optimized hull. Havok again?!!!!!! Too many broken pieces active at one time spike frame rate.
Stu does view frustrum culling I believe, hides any geo not seen by camera. Tracks are loops which means at any time you can see most of the world, camera fairly wide, 60-70fov based on speed, measured horizontally, implemented volumes that when the car is inside it, turns off artist specified objects, helpful on some tracks not so much on others, great Maya workflow very easy to set up and tag groups of objects to a particular volume in game tool for testing, don't actually have to drive the car around.
Avatars are expensive, no option to optimize, global asset linked to a bunch of existing games. 4player split does not render at 720p, slightly lower to keep frame rate solid.
All particles are rendered at lower res buffer, common trick, but if you pay attention they can look pixelated really bothers in some instances.
Even with our cartoony diffuse art style we still had fps concerns!
Sorry, just now got to adding this to the wiki
http://wiki.polycount.com/CategoryReferenceGameArt#Joy_Ride_Turbo_.282012.29
Must be one of my favorite game art dumps:)
Oh and thanks Stu for all technical breakdowns! Really cool to see how you guys went around accomplishing this. Picked up a couple of new tricks as well.
p.s. dope concept art too.
Congratulations to all involved!
For me the trial was fun and I love this type of game play for cars, where you can throw them around and flip out I enjoyed this release, love the colors and art style perfect for kids too and It's been a while since I did any gaming.
Thanks guys!
But anyways the game art is awesome, congratulations. And the whole art dump is some serious s**t, I'll keep it for inspiration. :Q___
I'm considering moving more of my art and design process into maya because of this.
Just out of curiosity, what software/engine did you use to compile the actual game and how was the workflow pipeline from maya?
The pipeline from Maya was awesome, one button click on the Maya self exported your current world, copied it to the xbox360 rebooted the box and launched the game into that track. You could set a config file for all sorts of other options too like skip front end, turn off hud, etc. All our tagging and mark up was in Maya so there was no learning curve it was a very simple straight forward pipe without any unneccessary crashes if you forgot to assign a texture to a model for example. We had a custom reference pipeline which also lived inside Maya and props could be updated throughout all levels without having to reexport the level they had been placed in just had to reexport the prop file. Collision was done inside of Maya as well with Havok's Maya tools.
In terms of art software nothing fancy here:
-Maya for all 3D modelling and scene assembly.
-Photoshop CS4 to create textures.
-Nvidia Photoshop plugin to export diffuse and spec textures, there are no normal maps in our game.
-Custom interface with Maya mental ray to bake indirect lighting to light maps and bake on a farm, direction lighting and shadows are real time.
-Ati cube map gen to blur cube maps captured from game.
-Debug menu in game to tune post processing.
-Havok Maya tool to tag collision.
-Some various custom Maya tools/scripts to help with repetitive non creative tasks.
That's about it really.
Cool, Thanks for the information! I should really check out that Nvidia plug-in for photoshop. Adding a specular map and of course quality texture can take an average model to a great model.
As a person that's getting knee deep into making games all I can say that posts like this are nothing but info gold mine and a massive motivation.
Well done,man!
It would be popular!