# 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