Templates - Overview, Details, and Request for Feedback

(This is a [re-post]( Feedback Wanted: Scriptable Render Pipelines page-21#post-3894136). I posted this in the wrong spot because I was confused about the difference between a Scriptable Render Pipeline and a Project Template)

Hey there, I just have some general accessibility feedback surrounding the new render pipelines and project templates:

Background:

I’ve been working in Unity for over 5 years. I’ve shipped and maintained a game on 8 different platforms, including all the big VR platforms. I’ve written code that saves out multiple lightmaps to a single prefab to allow switching between them at runtime at a performance that runs well on a Note 4 in Gear VR mode.

With this background, I don’t consider myself an expert – but I also have a bit of an understanding of how things work in Unity.

Feedback:

I find the new project templates difficult to approach and learn. My biggest problem is that I don’t deeply understand how the resulting project will be different if I choose to start with one template over the other. I think the documentation for this is actually fine and as clear as it could be. But documentation isn’t good enough on its own. As a developer, I need to be able try things and see what the difference is, at a very deep and technical level. Diff tools are always helpful for this. And being able to switch a project back and forth between configurations is also imperative to having confidence in my understanding.

I’m not sure what the best way to approach this accessibility would be, but I think the end-goal for these new features should be the following:

It should be intuitive to a developer to configure an existing empty (basic 3D) project to be equivalent to a project template without needing to start the project with that project template.

If I had a way to get to this point, I feel I would be able to deeply understand these new templates. But without any direction on how I could do this, I feel lost when trying to learn the impact of these new templates on a project. No documentation describing the different templates will solve this problem – I need to be able to go through the steps of configuring the project myself and see how things change (using diff tools, etc.). Right now, it is definitely not clear how I could do this.

Thanks for your work,
Allen

Update:

I figure it could be helpful to Unity developers to share my experience as I try and figure this out myself to highlight where the pain points are:

Recreating the “3D with Extras” template:

  • Pain point 1: After reading the documentation on Project Templates, I have no idea how easy it is to change a “3D” project into one that uses a template. I also have no idea how easy it might be to change a template project back into a bare-bones “3D” project if I choose I want to strip out the extra stuff later in a project.

  • Started with two projects, one using “3D with Extras” template, one with no template (“3D”)

  • I noticed there was a Post Process Volume script, attached to the object in the Extras scene, so I thought I could start with trying to replicate this.

  • Editing the post-processing script revealed that it existed outside the Assets folder in a package cache. This lead me to believe this post processing script was likely in a package I could install

  • Pain point 2: I brought up the Package Manager and couldn’t find the Post Process package. This was because, in Unity 2019 alpha when using “3D” template, the “Show preview packages” was turned off in the Package Manager. This made it appear as if I would need to go somewhere else to get this magical package that appeared only when I used the “3D with Extras” template.

  • Now that I had found the preview packages and matched up my project to have the same packages as the template project, I copied over all the assets from one project into the other.

  • At this point, I could tell I was still missing something, though no errors were given and all the project assets and packages matched:

  • It seemed my post process effect wasn’t working correctly, so I started to look at that, and found this error immediately:

  • This lead me to review all my project settings. When doing that I think I found the differences between starting with or without the template.
  • After changing the project settings, I think I was able to get my 3D project to be equivalent to the “3D with Extras” template:

Recreating the HD RP template:

  • After my experience with recreating the “3D with Extras” pipeline, I started with the packages. This time I knew about the “Show preview packages” option.
  • Pain point 3: For some reason, the HD Render pipeline package is named differently when you use the template vs when you use the Package Manger on a blank 3D project??? Edit: turns out this is just before you import it.

  • Next I copied all the assets over and replicated the project settings.
  • I think that seemed to be it:

Summary:

To be honest, it wasn’t as bad as I thought to recreate one of the templates from the basic “3D” template. There were a few pain points, but the only real thing that stuck out was my own lack of understanding on what a template really was. Somehow it wasn’t entirely clear to me that a template was nothing more than:

  • An additional one or two packages that could easily be added or removed through the package manager

  • A set of starter assets, some of which all developers will immediately delete

  • A few small tweaks to a project’s settings

Now that I’ve understood this, it has become obvious to me that which template I start with really doesn’t matter and I don’t need to predict the future before starting work on a prototype.

The one big issue:

The major issue I want to end on was a fuzziness in my understanding between the render pipeline packages, the post-processing package, and the project templates. Could you use a render pipeline without starting with the template for that render pipeline? Is a render pipeline and a template the same thing? If it’s a project template, then why is there one for a specific package? If a render pipeline is a package, then why is there a whole project template for it? These questions made this all very confusing and unapproachable to me.