# Save as a course template
About 15 minutes. Instructor page.
## Learning objectives
- Clean the sample scene so a new project starts with Player + Plane + PlayerMover
- Save a Unity Hub custom template with **Keep Project Settings** on
- Fall back to a cleaned project-folder zip if Hub is older than 3.18
There is no `.unityproject` file extension in Unity. If you wanted a reusable ".unityproject", use a Hub **custom template**, or zip a clean project folder. A `.unitypackage` is different: it shares Assets (and optionally some settings you packed), not a full project, and it will miss **Active Input Handling** if you only export scripts and scenes.
Official Hub steps: [Create a custom template | Unity Hub](https://docs.unity.com/en-us/hub/templates-create-custom)
## What must be in the starter
Before you save anything, open the project you built in pages [02](02-create-the-project.md)–[05](05-move-a-player.md) and make it boring on purpose.
1. Open **SampleScene**.
2. Keep **Main Camera**, **Directional Light**, **Plane**, and **Player**.
3. Delete leftover cubes, test canvases, and extra cameras.
4. On **Player**, leave **Player Mover** enabled. Remove **Player Input** and **Player Mover Events** unless you want every student to start on the events workflow.
5. Select **Player**, press **F** in the Scene view, and confirm the Game view shows the cube on the plane.
6. Save the scene (**File > Save**).
You should see: Hierarchy is Camera, Light, Plane, Player. Console is empty in Play mode. WASD still moves the cube.
### Optional student readme in the project
1. In `Assets`, create `README.txt`.
2. Put three lines in it, for example:
```text
Course starter: Unity 6 + New Input System
Active Input Handling is Input System Package (New).
Move the Player cube with WASD or a gamepad left stick (Play mode).
```
## Primary path: Hub custom template (Hub 3.18+)
Custom templates package a project so **New project** in Hub can clone it.
Suggested identity:
- **Name:** `Course Starter — Input System`
- **Version:** `1.0.0`
- **Description:** `URP 3D starter with Input System Package (New), project-wide actions, and a WASD Player cube.`
### From the Projects list
1. Close the Unity Editor so Hub is not fighting an open project.
2. Open **Unity Hub**.
3. Select **Projects**.
4. Open the project menu for this project (the **…** menu on the project row).
5. Select **Save project as custom template**.

6. Enter the name, description, and version above.
7. Enable **Keep Project Settings**.
8. Skip source control unless you already use it for templates.
9. Select **Create**.
### From the Templates window
1. In Hub, open the **Templates** window.
2. Select **New template**.
3. Choose this project as the source.
4. Enter name, description, and version.
5. Enable **Keep Project Settings**.
6. Select **Create**.
You should see: the template listed in the Templates window and as a choice when you create a new project.
> **Why this matters:** **Keep Project Settings** must be on. If it is off, Hub copies `Assets` and `Packages` but not Player settings. Students get the Input System package and then a warning that the project is using the wrong input backends. They will have to redo [Enable the Input System](03-enable-the-input-system.md). For URP + Input System starters, always keep project settings.
### Confirm the template
1. In Hub, select **Projects > New project**.
2. Select **Course Starter — Input System**.
3. Create a throwaway project on a local disk.
4. When the Editor opens, check all four:
- **Edit > Project Settings > Player > Other Settings > Configuration > Active Input Handling** is **Input System Package (New)**
- **Edit > Project Settings > Input System Package** has the Action Asset assigned
- SampleScene contains Plane + Player
- Play mode: WASD moves the cube
Delete the throwaway project after it passes.
To ship an update later, change the source project, then save it as a **new** template (new version or new name). Hub does not overwrite an existing custom template in place.
## Fallback: clean project folder (older Hub)
If Hub has no **Save project as custom template** and no **Templates > New template**, share the project folder instead.
1. Close the Editor.
2. Duplicate the project folder (Finder, Explorer, or `cp -R`).
3. In the **copy**, delete these directories if they exist. They regenerate and they make huge archives:
- `Library`
- `Logs`
- `Temp`
- `obj`
4. Keep these:
- `Assets`
- `Packages`
- `ProjectSettings`
- `Assets/README.txt` if you added it
5. Zip the cleaned folder.
6. Students: download, unzip to a **local** disk, then in Hub use **Open** / **Add project from disk**.
You should see: the zip is small compared with a zip that still contains `Library`. Students open it as a normal project, not as a Hub template.
> **Warning:** Still do not zip from a OneDrive/Dropbox copy. Duplicate onto a local path first.
## `.unitypackage` is not a full starter
**Assets > Export Package…** creates a `.unitypackage`. That is useful for sharing extra scripts or a prefab. It is not a replacement for this template:
- It does not create a Unity project
- It does not reliably carry **Active Input Handling**
- Students who import it into a Built-in 3D template still have to do page 03 by hand
Use Hub custom templates (or the folder zip) for the course starter. Use `.unitypackage` only for add-on assets.
## Checkpoint
The starter is ready when:
- A new Hub project from the template (or an unzipped folder) opens in Unity 6
- **Active Input Handling** is **Input System Package (New)** without extra clicks
- Play mode moves the Player cube with WASD