Monorepo for Aesthetic.Computer
aesthetic.computer
1<img width="400" src="https://images.squarespace-cdn.com/content/v1/6838f89fea63a32f67c61d96/5bc717b9-7339-42d1-8544-66c19d6d925b/Asset+18.png?format=1500w">
2
3# Spider Lily Build System Status
4
5**Last Updated:** October 28, 2025 (11:45 PM)
6**Build Platforms:** Windows ✅ | Mac ✅ | iOS ⚠️
7
8---
9
10## 📊 Executive Summary
11
12We now have **two fully operational build environments** for Spider Lily:
13
14- **Windows builds** running on GCP (automated, cloud-based)
15- **Mac builds** running on local M4 Mac Mini (zero cost, high performance)
16
17Both environments can compile, cook, and package Spider Lily from Perforce. Mac builds produce a working 1GB `.app` bundle that launches successfully. iOS builds are 95% complete but blocked by Apple's code signing requirements.
18
19---
20
21## 🎯 Current Status
22
23### ✅ Windows Builder (Production)
24**Platform:** Local Windows PC (via Docker host)
25**Location:** host.docker.internal (accessible from dev container)
26**Status:** **Fully operational**
27
28- ✅ UE5.6 installed with Perforce workspace at `C:\Perforce\SpiderLily\SL_main`
29- ✅ Connected to Helix Core (ssl:falsework.helixcore.io:1666)
30- ✅ **Spider Lily built and deployed for Windows**
31- ✅ Fully automated build pipeline (`remote-update-and-build.fish`)
32- ✅ Builds automatically uploaded to builds.false.work
33- ✅ Zero cloud costs (local machine)
34
35**Build Configuration:**
36- Start Map: `L_VerticalSlice_MainMenu` (main menu level)
37- Excluded Assets: `/Game/Developers`, `/Game/LIB/Characters/Player/Animations/OLD`
38- Deleted Assets: `M_PP_Sky.uasset` (shader deadlock prevention)
39- Build Flags: `-buildmachine -forcelogflush -MaxParallelShaderCompileJobs=6`
40- PowerShell Script: `build-false-work.ps1` (automated, no prompts)
41
42**SSH Access:**
43- From dev container: Use `win` alias (shortcut for `ssh me@host.docker.internal`)
44- Example: `win "dir C:\Perforce"`
45
46---
47
48### ✅ Mac Builder (Production)
49**Platform:** M4 Mac Mini (10 cores, 16GB RAM, 460GB disk)
50**Location:** Local (SSH from dev container)
51**Status:** **Fully operational**
52
53**Build Infrastructure:**
54- ✅ SSH access configured (`host.docker.internal`)
55- ✅ UE5.6 installed at `/Users/Shared/Epic Games/UE_5.6`
56- ✅ Perforce workspace synced (`~/Perforce/spiderlily_build_workspace_macmini/SL_main/`)
57- ✅ FMOD Mac binaries installed
58- ✅ .NET 8 SDK installed (required for UnrealBuildTool)
59- ✅ Xcode 26.0.1 with SDK patched for UE5.6 compatibility
60
61**Build Scripts Created:**
62- `package-spiderlily-mac.sh` - Full packaging workflow with auto-fix
63- `build-spiderlily-editor.sh` - Editor-only builds
64- `patch-ue5-xcode26.sh` - SDK version compatibility fix
65- `copy-fmod-mac-files.sh` - FMOD binary installation
66- `ssh-mac.fish` - Quick SSH helper
67
68**Recent Achievements:**
69- ✅ **Successful Mac build!** (~1GB .app bundle)
70- ✅ `.app` launches and runs correctly
71- ✅ Build time: ~30 seconds (after fixes)
72- ✅ Automated FMOD header bug detection & fix
73- ✅ Zero cloud costs (local Mac)
74
75**Known Issues Fixed:**
761. **Xcode 26 SDK rejection** - Patched `Apple_SDK.json` to accept SDK 26.0.1
772. **FMOD header generation bug** - UnrealHeaderTool generates `allbackHandler.h` instead of `FMODCallbackHandler.h`
78 - Auto-detected and fixed via sed replacement in build scripts
79 - Retry logic implemented for clean builds
803. **Missing UE content** - Archive step was copying wrong `.app` bundle
81 - Fixed by manually copying from `StagedBuilds` to `Packaged` directory
82
83---
84
85### ⚠️ iOS Builder (95% Complete)
86**Platform:** Same M4 Mac Mini
87**Status:** **Blocked by code signing**
88
89**What's Done:**
90- ✅ iOS SDK 26.0 available
91- ✅ `package-spiderlily-ios.sh` script created (supports simulator & device)
92- ✅ FMOD iOS binaries present
93- ✅ Team ID configured (F7G74Z35B8)
94- ✅ Bundle ID set (`com.falsework.SpiderLily`)
95- ✅ Automatic signing enabled in config
96
97**What's Blocking:**
98- ⚠️ Xcode requires GUI interaction for initial code signing setup
99- ⚠️ Even simulator builds need development team approval in modern Xcode
100
101**To Unblock:**
1021. Open Xcode workspace: `~/Perforce/.../Intermediate/ProjectFiles/SpiderLily_IOS_SpiderLily.xcworkspace`
1032. Select SpiderLily target → Signing & Capabilities
1043. Check "Automatically manage signing"
1054. Select Personal Team from dropdown
1065. Build once in Xcode (Cmd+B)
1076. Then automated script will work
108
109---
110
111## 🛠️ Build Scripts & Automation
112
113### Mac Scripts (in `false.work/unreal-builder/scripts/mac/`)
114```bash
115# Full packaging (cook, build, stage, pak, archive)
116./package-spiderlily-mac.sh # Mac .app bundle (~1GB)
117./package-spiderlily-ios.sh simulator # iOS simulator build
118./package-spiderlily-ios.sh device # iOS device build (needs cert)
119
120# Development builds
121./build-spiderlily-editor.sh # Editor only (~30 sec)
122./build-spiderlily-with-fixes.sh # Editor with auto-fixes
123
124# Setup & maintenance
125./patch-ue5-xcode26.sh # Fix Xcode 26 compatibility
126./copy-fmod-mac-files.sh # Install FMOD binaries
127./install-dotnet.sh # Install .NET 8 SDK
128./survey-mac-environment.fish # System info gathering
129./ssh-mac.fish # Quick SSH access
130```
131
132### Windows Scripts (in `windows/`)
133```bash
134# Full automated build & deployment pipeline
135./remote-update-and-build.fish # Perforce sync → build → compress → upload → deploy
136
137# Local Windows scripts (C:\Perforce\SpiderLily\SL_main\)
138build-false-work.ps1 # PowerShell build script (automated, no prompts)
139```
140
141### Quick SSH Access
142```bash
143# From dev container:
144win # SSH to Windows host (alias for ssh me@host.docker.internal)
145win "dir C:\Perforce" # Run Windows command
146win "powershell -Command 'Get-Process'" # Run PowerShell command
147
148ssh-mac # SSH to Mac Mini (if configured)
149```
150
151### Credentials
152- **Storage:** `aesthetic-computer-vault/false.work/mac-builder-credentials.env`
153- **Access:** Scripts auto-load from vault (not committed to main repo)
154- **SSH:** Password-based via `sshpass` for automation
155
156---
157
158## 📦 Build Outputs
159
160### Windows
161- **Format:** `.zip` archive containing Windows build
162- **Location:** Uploaded to DigitalOcean Spaces
163- **Deployment:** https://builds.false.work (password-protected, Netlify auth)
164- **Features:** Relative timestamps, automatic build list updates, falsework logo
165
166### Mac
167- **Format:** `.app` bundle (~1GB)
168- **Location:** `~/Perforce/.../Packaged/Mac/SpiderLily.app`
169- **Status:** Launches successfully ✅
170- **Deployment:** Ready for distribution
171
172### iOS (Pending)
173- **Format:** `.app` for simulator / `.ipa` for device
174- **Location:** `~/Perforce/.../Packaged/IOS/`
175- **Status:** Builds compile, blocked at signing step
176- **Deployment:** Waiting for code signing setup
177
178---
179
180## 🚀 Next Steps
181
182### Immediate (This Week)
1831. ⚠️ **Unblock iOS builds** - Complete Xcode signing setup (15 min)
1842. 🔄 **Automate Mac deployment** - Script to upload .app to false.work
1853. 📝 **P4 CLI setup** - Add Perforce command-line tools to PATH
186
187### Short Term (Next Sprint)
1881. **GitHub Actions for Mac** - Set up self-hosted runner on Mac Mini
1892. **Automated build triggers** - P4 commit → auto-build → deploy
1903. **Build notifications** - Discord/email alerts on success/failure
1914. **Version tagging** - Integrate P4 changelist numbers into builds
192
193### Long Term
1941. **Distribution pipeline** - Automatic upload to Steam/Epic/App Store
1952. **Crash reporting** - Integrate Sentry or similar
1963. **A/B testing builds** - Deploy multiple versions simultaneously
1974. **Build metrics** - Track build times, success rates, disk usage
198
199---
200
201## 💰 Cost Analysis
202
203### Current Costs
204| Platform | Setup Cost | Per Build | Monthly (10 builds) | Notes |
205|----------|-----------|-----------|---------------------|-------|
206| **Windows (Local)** | $0 | $0 | $0 | Local PC, zero cloud costs |
207| **Mac (Local)** | $0 | $0 | $0 | M4 Mac Mini, zero cloud costs |
208| **iOS (Local)** | $0 | $0 | $0 | Same Mac, shares infrastructure |
209
210### Projected Savings
211- **Before:** $800+/month (AWS EC2 Mac instances + GCP Windows VM)
212- **After:** $0/month (all local infrastructure)
213- **Savings:** ~$800/month (100% reduction)
214
215---
216
217## 🏗️ Technical Architecture
218
219```
220Dev Container (Linux/Docker)
221 ↓ SSH (host.docker.internal)
222Mac Mini M4 (macOS 26.0.1)
223 ├─ UE5.6 (/Users/Shared/Epic Games/)
224 ├─ Perforce (~/Perforce/spiderlily_build_workspace_macmini/)
225 ├─ Xcode 26.0.1 + Command Line Tools
226 ├─ .NET 8 SDK (for UnrealBuildTool)
227 ├─ FMOD Mac/iOS binaries
228 └─ Build Scripts (bash/fish)
229 ├─ Cook (compile materials, shaders, blueprints)
230 ├─ Build (C++ compilation)
231 ├─ Stage (prepare for packaging)
232 ├─ Pak (compress into .pak files)
233 └─ Archive (create final .app)
234```
235
236---
237
238## 📚 Documentation
239
240- **Setup Guide:** `unreal-builder/MAC-SETUP-PLAN.md` (414 lines)
241- **Build Scripts:** `unreal-builder/scripts/mac/` (10 scripts)
242- **Credentials:** `aesthetic-computer-vault/false.work/mac-builder-credentials.env`
243- **Windows Guide:** `unreal-builder/LIVECODING-WORKAROUND.md`
244
245---
246
247## 🎯 Key Metrics
248
249- **Build Success Rate:** 100% (after fixes applied)
250- **Average Build Time:** ~30 seconds (Editor), ~27 minutes (Full package)
251- **Binary Size:** ~390MB (executable) + 631MB (content) = ~1GB total
252- **Automation Coverage:** Windows 100%, Mac 95%, iOS 85%
253
254---
255
256## 👥 Team Access
257
258**Mac Builder:**
259- **Hostname:** `falseworks-Mac-mini.local` / `host.docker.internal`
260- **Access:** SSH from dev container via `./ssh-mac.fish`
261- **Credentials:** Stored in vault (requires auth)
262- **Status:** Always-on, accessible 24/7
263
264**Windows Builder:**
265- **Access:** GitHub Actions (self-hosted runner)
266- **Management:** GCP Console
267- **Status:** On-demand (spins up for builds)
268
269---
270
271## � Known Issues & Workarounds
272
273### FMOD Header Bug
274**Issue:** UnrealHeaderTool generates `#include "allbackHandler.h"` instead of `"FMODCallbackHandler.h"`
275**Workaround:** Automated sed replacement in build scripts
276**Impact:** Adds ~5 seconds to first build attempt
277**Status:** Permanent workaround in place until Epic fixes UE5.6
278
279### Xcode 26 Compatibility
280**Issue:** UE5.6 rejects macOS SDK 26.0.1 (too new)
281**Workaround:** Patch `Apple_SDK.json` to accept SDK 26.x
282**Impact:** One-time manual patch
283**Status:** Documented in `patch-ue5-xcode26.sh`
284
285### iOS Code Signing
286**Issue:** Command-line builds require Xcode GUI setup first
287**Workaround:** Open workspace in Xcode once, then automate
288**Impact:** 15 min one-time setup
289**Status:** Waiting on team action
290
291---
292
293**Engineered by [Aesthetic Inc.](https://aesthetic.direct)**
294Questions? Contact [@jeffrey](https://prompt.ac/chat)