Deconstructing Robo Recall

I’ve decided to dig deep into the Robo Recall project file to see if there are things we can learn from it, some things that we might have done differently the entire time we were building UE.
This has started as a personal project, but I’m more than happy to share this here with you, who knows it might benefit someone else and this might get some interesting discussions started.

Methodology: First I listed all most common settings that have been tweaked in Robo Recall. The benchmark here is a clean 4.15 project.
I listed all differences in Excel: Green column is the clean 4.15 project, Orange column is Robo Recall.
Followed by some loose remarks about Post Processing volumes, lights and reflection capture actors.

Bonus : I’m also reconstructing the Robo Recall HUB map (where you start in the game) in a 4.15 project. Just the outer walls , the correct settings etc, to get the same setup / look&feel. Possibly using it as a template for future project. Many of the assets - even just the outer walls cannot be easily migrated over to 4.15 since there are a lot of bindings to the Odin project (Robo Recall) - so this may take a while.

Hope this is useful for anyone else.


Box Reflection Capture Actor

  • Every room has one, surrounding it completely
  • Box transition distance vary from 20 to 100
  • Brightness 1.5 on most of them

Planar Reflection Actor

  • 2 of them on the floors, overlapping a little bit

Sphere Reflection Capture Actors

  • Influence radius on all of them set to 0
  • Brightness 1.5 or 2

I think this is a special material trick to get rid of some unwanted MSAA edge jitter
Imgur: The magic of the Internet ( -> you 'll find this in “M_Railings”)

Animated shadow of the fan on the floor is actually just a mesh
Animation to show what I mean here : Jsjd - YouTube

No Atmospheric Fog

  • In stead there are Cylinders (check for a mesh called “Cylinder2” for example) with a transparent material near the windows and under the fans to give the illusion of atmospheric fog.

Post Processing Volume
Compared to my usual Post Processing Volumes (which are usually full of tweaks -> not good for performance) there is really not a lot going on here for Robo Recall. Just Tonemapper > Slope and a 0.2 Bloom Intensity

I noticed a few things as well. They disabled ambient occlusion from post processing and instead baked it into the light maps. In general you’ll want to do one or the other, baking it gives better performance, but will be missing on dynamic objects. Capsule shadows can help make up for the lack of AO on dynamic objects. I think I noticed that the enemies where the only thing using capsule shadows, but I could be wrong.

Has anyone looked at the differences between the Epic and Cinematic presets they have?

Thanks a lot for your reverse engineering, always interesting :wink:

I would have said 0.1 for the ‘Static Lighting Level Scale’ and 5 or 6 for the ‘Indirect Lighting Quality’ at first sight but it is 0.3 and 4!

Note on the planar reflections: only one is active at a time during play. Upon teleport it selects the best one to use.

On your note on draw calls, I noticed even after culling, DM_Chill.umap has over 3000 draw calls at some view points. Does it actually run smoothly without falling into reprojection in the shipping build (I could only look at it in editor)?

Added this as a comment in my visuals.
Regarding the second part : to get AO on Movable objects there’s a checkbox to set “Light as static”, no ?

Can you point to the blueprint that organizes this ?

Has anyone else encountered issues trying to Migrate certain assets to another project. I would assume this is because it comes from a modded package. But a lot of migrated files aren’t use-able or able to be open. (Vector Fields, some particles, materials). Of course the bulk of their materials rely on custom material function which makes the migration process a little more tangled. I spent a few days having to manually rebuild a lot of the files and functions to get things running in a clean package.

It is in the C++ code. Search search the code for OdinPlanarReflection.

Awesome!
This is probably related. I got some frametearing and spikes in my reconstructed level. Frame time goes above 11ms.

Planar reflections not supported in Forward renderer so it falls back to deferred?
(This hitch does not happen in the actual Robo Recall game or project)

Cant edit post on phone.
This screensot actually shows the planar reflections ******** up my framerate

issue.jpg

Playing around with the settings, but it seems that mesh content in the editor is affected too, any idea what setting might cause it?

all kinds of weird stuff happening with those meshes - they also have protection against simple migration (to say a 4.15 project)

Those are not RR assets, it happens to all my project meshes, after applying RR render and world settings

Gotcha - same happens here.
I’m blaming it on Forward Renderer.
See issue here : https://issues.unrealengine.com/issue/UE-42376

Yup, was indeed the Forward Shading option. Disabling it results now in decals not displayed properly.

Does someone here know what kind of general computer spec hardware is required for Forward Shader enabled?

To enable decals in indirect lighting like in those shadows without forward shading you need to turn on dbuffer decals.

Shouldn’t be. Forward definitely supports planar reflections, it doesn’t support screen-space reflections.

Hi Sunchaser. I’ve been doing exactly the same thing. I imagine many of us VR devs are all taking a deep look at Robo Recall’s implementation.

I’ve been poking around and deconstructing what I can to try to pick out useful best practices for UE4 VR development. I created a new blank project using the latest 4.16 master branch and started migrating certain assets (art assets only) and then started coding from scratch some basic locomotion and interaction to experiment and verify I understood how the Epic devs implemented certain features.

I made sure my project settings (.ini files) and map settings were the same wherever possible. Everything looks and performs pretty much exactly the same.

Here’s a video of what I have. Again, this isn’t robo recall but a completely seperate 4.16 project just using some of the robo recall art assets and settings. If you have anything you want to discuss add me on the Unreal Slackers discord chat. Would love to talk shop with someone else interested in the inner workings of Robo Recall.

DBUffer decals are enabled.

Hi guys, I know the thread hasn’t been active for a while but i’m wondering if anyone could tell me why in the ‘pearl light night’ level they have grouped point lights together? (for example on the solar panel trees). Does this help performance/baking in any way or is it just for organizing purposes?