# 1. Artifacts and a Non-Commercial Policy
Part of [[Publishing to itch.io and Steam]]. Next: [[2. itch.io Pages and butler]].
[[Build Automation and CI]] already produces a player. This part decides *what* you are allowed to ship in this course, and what "store-ready" means before anyone runs butler or SteamPipe.
## 1.1 Non-commercial, on purpose
Level 18 in [[Level Up! (Review)]] is business and pitch. This classroom track stops before checkout:
- No Unity IAP (`com.unity.purchasing`), no Unity Economy, no ads, no "buy coins" button, no paid DLC wired into the player.
- An itch page *may* have a price or a "name your own" box - that is a **store-page** setting on itch, not a feature you implement in C#. This series still does not implement store checkout in the game.
- Steam can be used for a **free** or **playtest** app. Do not implement Steam inventory commerce or microtransactions here.
- If a later elective wants IAP, that is a different, versioned package decision. It is not a hidden part of this assignment.
Write that policy at the top of the assignment cover sheet so a teammate does not "just add a buy button."
## 1.2 Two stores, one artifact pipeline
| Store | What you upload | Account |
|---|---|---|
| **itch.io** | A folder or zip, pushed with official **butler**, or dragged onto the dashboard | An itch account (or a classroom org the instructor controls) |
| **Steam** | Depots uploaded with **SteamPipe** (SteamCMD or the partner-site tools) to an **App ID** | A Steamworks partner account. Students without an App ID still complete the depot *plan*. |
Unity does not ship the game for you. Build Profiles, a local command-line script, GameCI, or Unity Build Automation produce the **artifact**. This series only **consumes** that folder.
## 1.3 What "store-ready" means
- **Release** configuration. Development Build, Autoconnect Profiler, and Script Debugging stay off on a public channel. A labeled "qa" / Steam beta branch is the place for those.
- The folder is the **player output** (Windows: `.exe` plus `_Data`; macOS: the `.app` bundle; Linux: the player tree). Not the project, not `Library`, not a Unity `.zip` only your Editor can open, not an Editor log.
- A short `README.txt` sits beside the executable: how to start, OS, keyboard or gamepad, version, where to report bugs. No secrets.
- The **version** in Player Settings (bundle / product version), the README, and the itch `--userversion` / Steam build note are the **same string**. "Latest" with no number is how you cannot reproduce a bug.
- Addressable content, if you use it, is already in the player or in the content build you intend to ship ([[Addressables]], [[6. Content Builds Updates and CI]]). Do not upload a player that still points at Editor-only paths.
Example local layout (the date and number are yours):
```
dist/windows-0.1.0/
ClassroomArena.exe
ClassroomArena_Data/
README.txt
```
CI should produce the same shape. butler and SteamPipe both care whether you uploaded the folder or an extra wrapper directory that forces "open another folder, then find the exe."
## 1.4 What this series will not do
- Invent a **Steamworks.NET** (or similar) package version. You can upload a depot **without** a C# Steamworks plugin. Adding a wrapper later is a separate, verified decision.
- Publish a WebGL / HTML5 build in depth. itch can host HTML5; that player-settings and memory work belongs to the later **Web / WebGL Builds** queue item. This series only points at the official butler HTML5 note.
- Upload anything from the author's machine. You push with **your** credentials, on **your** accounts.
- Cover macOS notarization flag-by-flag, Google Play signing, or Quest / App Lab. Flag those as real if you leave Windows-first; do not invent `notarytool` invocations from memory.
## 1.5 Prerequisites
- A vertical slice that already builds from a **Build Profile** ([[1. Build Profiles]], [[5. Worked Example - Windows and Android Profiles]]).
- An itch.io account. A Steamworks partner login only if the student actually has an App ID.
- Secrets stay out of Git ([[Version Control]]): butler API keys, Steamworks passwords, `config.vdf`, signing keystores.
## 1.6 Exercise
Write a one-page ship note before any upload:
1. Platform (Windows first unless the class already standardized on something else).
2. Build Profile name and output folder.
3. Version string you will put on the store.
4. itch-only, or itch plus a Steam depot *plan*.
5. A sentence that this slice has no IAP.
That page is the assignment cover. The next parts fill the commands.
## Sources
- [[Build Automation and CI]]
- itch butler: https://itch.io/docs/butler/
- Steamworks uploading / SteamPipe: https://partner.steamgames.com/doc/sdk/uploading