Guide 0 — Before You Start
Everyone reads this one. About 20 minutes. You won't build any of your game yet — this is the setup that prevents the most confusing problems later.
1. Make the project
Unity Hub → New Project → 2D (URP) template → name it after your game.
Why URP? Only one game in the class strictly needs it (Detective Liz, for 2D lighting), but starting everyone on the same template means the guides match what you see. If you already made a plain 2D project, that's fine — don't redo it.
2. Install the packages
Window → Package Manager, switch the dropdown to Unity Registry, and install:
| Package | Who needs it |
|---|---|
| Input System | everyone |
| Cinemachine | everyone with a camera that moves |
| TextMeshPro | everyone with any on-screen text |
Two extras, only if your guide says so:
| Package | Only for |
|---|---|
| AI Navigation | Store Simulator |
| Universal RP (already in if you used the 2D URP template) | Detective Liz |
After installing Input System
Unity will ask to enable the new input backend and restart. Say yes. If you missed the prompt: Edit → Project Settings → Player → Active Input Handling → Input System Package (New). Unity restarts.
After installing TextMeshPro
Window → TextMeshPro → Import TMP Essential Resources. Do this now. If you skip it, scripts that use text won't compile and the error looks like it's about something else.
3. Import the script package
Assets → Import Package → Custom Package, choose the .unitypackage, click Import with everything ticked.
Wait for Unity to finish compiling — the spinner in the bottom-right corner. If the Console shows errors, stop here and tell your instructor. Don't start building on a project that doesn't compile.
4. Run the setup tool
In the menu bar you'll now see a GAME1303 menu.
- GAME1303 → Setup Project
- GAME1303 → Verify Setup
The second one prints a report in the Console. You want it to end with:
GAME 1303 — project setup looks complete. You're ready to build.
If it lists problems, fix them before continuing. The most common one is Active Input Handling — see step 2.
What did that just do?
It created two Tags (Player, Enemy) and eight Layers (Ground, Hitbox, Hurtbox, and five others), and set the Physics 2D collision matrix.
This matters more than it sounds. Tags and layers don't travel inside a .unitypackage — they live in your project's settings. Without them, the scripts compile perfectly and then do nothing. No error, no warning. Your player just stands there. If that ever happens to you, run Verify Setup first before anything else.
5. Three concepts you need before the guides make sense
Component vs. ScriptableObject
A component is something you add to a GameObject in the scene. You click Add Component and it appears in the Inspector. PlayerController2D is a component.
A ScriptableObject is an asset in your Project window — a file, like a sprite or a sound. You make one with right-click in Project → Create → GAME1303 → …. ItemType is a ScriptableObject.
You cannot add a ScriptableObject to a GameObject, and you cannot create a component as a file. When a guide says "create an ItemType asset," it means the Project window, not the Hierarchy.
UnityEvents
Many scripts have fields in the Inspector that look like this:
On Died ()
List is Empty
[+] [-]
That's a UnityEvent — a list of "when this happens, do that." To fill one in:
- Click +
- Drag the GameObject that should react into the empty object slot
- Click the No Function dropdown, find the script, then the method
There's a catch worth knowing now. The dropdown has two sections: Static Parameters (top) and Dynamic (bottom). If the event passes a value along — like OnHealthChanged (int, int) — pick the one under Dynamic. The static one lets you type a fixed number instead, which is almost never what you want.
Your guide lists every event you need to wire in a table. Roughly three quarters of "my game is broken" turns out to be a missing event connection, so when something doesn't work, check that table again before anything else.
Prefabs
A prefab is a saved GameObject you can stamp copies of. Build one spike trap, drag it from the Hierarchy into the Project window, and now you have a spike trap prefab — drag it back into the scene as many times as you like, and editing the prefab updates all of them.
Every guide has you build a few prefabs early, because placing forty hand-made copies of anything is how you lose a weekend.
6. Check your Input Actions
Find the input actions asset in your Project (it's usually called InputSystem_Actions or similar) and double-click it.
Under the Player map you should already see Move, Jump, Attack, Sprint, Look, Crouch, Previous, Next.
If your guide asks for an action that isn't there, add it:
- Click + next to Actions
- Name it exactly as the guide says — spelling and capitals matter
- Set Action Type to Button
- Click + on the action → Add Binding → click Path → Listen → press the key you want
- Save Asset (top of the window)
Actions various guides ask for: Dash, Grapple, Magnet, Interact, Flashlight, Pickup.
7. One setting that breaks everything if it's wrong
When you add a PlayerInput component to your player (your guide will tell you when), set:
Behavior: Send Messages
Not "Invoke Unity Events," not "Send Messages (Broadcast)". Just Send Messages.
Here's why: the kit works by having Unity call OnJump on every component of your player at once. That's how a double jump, a wall jump and a ladder can all hear the same button press and quietly agree on who acts. Any other setting and only one of them hears it — or none do.
8. Set up your folders
After importing, you'll have this:
Assets/
Scripts/ ← everything from the package
Player/ Combat/ Enemies/ Movement/ Hazards/ Level/
Collectibles/ Camera/ Managers/ UI/ Environment/
Progression/ Snake/ Delivery/ Maze/ Interaction/
Dialogue/ Endings/ Light/ Puzzle/ Pet/ Save/ Store/
ApepsTrial/ MythoClash/ CommissionWitch/ Instructor/
Editor/ ← GAME1303Setup.cs lives here
Add your own folders alongside it:
Assets/
MyGame/
Prefabs/
ScriptableObjects/
Art/
Audio/
Scenes/
Put your stuff in MyGame/. Leave Scripts/ alone — if you edit those files, you'll lose your changes the next time your instructor hands out an update.
One bit of housekeeping
The package contains three files ending in .~cs — backups from an earlier edit, in Scripts/Player/ and Scripts/Combat/. Unity ignores them (they're not .cs), so they do no harm, but you can delete them if you like a tidy Project window.
9. Before you go to your own guide
Quick self-check:
Now open your own guide.
When something goes wrong
In this order:
- Read the first error in the Console, not the last. Unity reports one real problem and then a cascade of consequences. Fix the top one and recompile.
- Run GAME1303 → Verify Setup.
- Check the event wiring table in your guide.
- Check that objects have the right tag and layer — click the object and look at the top of the Inspector.
- Then ask.
Most problems in this kit are one of three things: a missing tag, a missing event connection, or a field left empty in the Inspector. None of them produce a helpful error message, which is exactly why the checklist above exists.