Developing and synchronizing a game with both URP and HDRP. How do you do that?

I’m seeking advice for developing and synchronizing a game between two projects with URP and HDRP.

Sometimes ago, when the SRP came up in preview, I shared my huge disappointment on this forum about Unity splitting the deployment to different platforms between URP and HDRP. Now that they are official, we have to create two projects to be able to deploy to all targeted platforms if there is one target platform not available in one RP.

I searched the web and the Unity forums for comments and solutions about converting from URP to HDRP (and vice versa), and also synchronizing two projects with URP and HDRD. I haven’t found many solutions, but they are many people trying to do both and it seems really a nightmare.

It’s really a pain in the you know what. Since I know Unity I prefer to continue with Unity, but I seriously thought about switching to Unreal because of this platform deployment issue.

Based on my findings, here’s my analysis. Note that I haven’t tried to convert or synchronize a game project, but this is what I anticipate based on my findings.

Converting
Some people have converted a whole project with one pipeline to the other. In general, things are the same, but they had to recreate or reassigned certain objects. Mainly, the shaders are not the same. Furthermore, they are elements in scenes that are only available in HDRP like certain types of light. The differences are exclusively related to the graphics.

That would be the case with a project already completed with the need to target another platform not available in the current RP.

Synchronizing
That would probably be my approach because in the long run, just updating a released game with both RP will require to synchronize both projects in parallel. Here are the different aspects that I’ve noticed so far.

  1. Code.
    The code can be copied with copy and paste from one project to the other.

  2. Project Settings and configuration.
    This is another place where the process of copying and pasting is probably not fully compatible. At least, not for the graphic files. There are many files and I presume we need to be careful when copying and pasting the configuration files.

  3. Shaders and materials.
    Naturally, a part of the core mechanic for the RP happens there.

I presume that someone has to recreate a shader manually in ShaderGraph in the second project if one change happens in the first project. Copying the ShaderGraph file itself should not be compatible since both RP are not fully compatible.

  1. The scenes.
    With prefabs and also nested prefabs, it can even be more complicated. I presume that could break the process because objects are linked together with IDs. When creating new scene objects and trying to synchronize changes with copy and paste from one project to the other, the relations will not match.

Here’s an example of an issue in a scene. Let’s say that you have a camera with different properties because of the post-effects. Copying the camera object from one project to the other would not be compatible if you have screen space reflection enable in HDRP when it’s not available in URP. This is where it seems to get tricky. There are more graphic objects available in HDRP like new types of light.

Copying and pasting one scene appears incompatible to me. Therefore, everything has to be done by hand. What a job! And especially for huge games.

  1. Assets of packages from the Asset Store.
    When downloading from the Asset Store, some assets are compatible with URP or HDRP. Even with an asset compatible with both RP, when using and assigning the assets to the scene objects, it could make copying the scene incompatible after that.

Conclusion
As I’m writing this post and looking at my project in Unity, I find it even more exasperating to create two projects. When thinking about the time to make all the verification and tests to validate if both projects behave the same way seems a really daunting task.

Furthermore, I searched the Asset Store for assets to answer need, but there is nothing. I thought that would be a great idea to develop different tools to answer that need.

So far, I found that people were mainly able to convert a project to the other RP with a lot work converting the objects and adapting to the new reality. That is for a completed project. I don’t know about synchronizing afterwards.

At the moment, as a solo Indie, I’m also really wondering if the extra trouble maintaining another project to deploy to another platform is worth the money that it will generate. All this extra time to recreate a parallel project slashes the profits. I feel that I have to comprise the deployment to a more restricted number of platforms, otherwise, this is a huge cost maintaining both RP.

I wish Unity could at least provide a way better to have only one project with both RP. I saw there are people at Unity working to unify the RP in the same project, but for now, it’s still a nightmare to develop.

What suggestions do you have for someone who uses HDRP to get the best and who also needs URP to deploy to other platforms?

It’s been more than a month and still no answer! I haven’t found many answers when searching Internet. I’m not surprised. At least, I hope people at Unity read this forum and take notes because it’s certainly a critical need. :frowning:

Why not do the whole game in URP or built-in? Both of those port to all platforms.

take a look at GUID numbers and how this work;)

To deploy to all platforms, URP would work perfectly. However, we still lack the more advanced graphic features that are only available in HDRP.

For example, to deploy a game to mobile and PC with the possibility of showing advanced graphics, we need to have one project built with HDRP and another built with URP just for the mobile version.

Concerning the built-in version, it’s dead to me. For example, Shader Graph and VFX Graph only work with URP and HDRP.

I already checked the GUID in the past without digging further. A part of the nightmare begins there. If I start managing the GUID directly, I’ll probably have to say goodbye to a certain number of my hobbies and stop washing! All this because Unity split the rendering pipeline.

2 Likes

What if I want to add volumetric lights?

Still just as big of a problem.
Engines such as Godot have a dropdown box that allow you to switch between their low-end renderer and their high-end renderer right away, meanwhile on Unity the only way I’ve found to convert between these pipelines is to buy $35 worth of plugins from Queen Developer on the asset store, for something that should be built-in.