I've never had a personal website, and I didn't want to make a resume/portfolio site, so I rebuilt Guardian and hid a treasure hunt through my life inside it.
You start in the Halo 3 main menu, go through the lobby, spawn in the map, and explore. There are photos, stories, quests, mini-games, and Easter eggs scattered around. Movement is via WASD and mouse, no signup.
Guardian was my third place growing up. Starting in 9th grade, my friends and I would get home after school, get on Halo, and hang out in a Guardian free-for-all with MLG settings until everyone came online, then play customs or ranked for hours.
On weekends we'd bring our Xboxes and monitors to each other's houses, stay up all night, and play in local tournaments. Guardian was probably the closest thing I had to a digital home, so I wanted my site to live there. Playing it and hearing the theme music for the first time in 10+ years in a place I knew by heart felt a bit like coming home.
The map itself isn't AI-generated. It uses an original Guardian asset export distributed through the fan-run Halo Archive: an OBJ with 115,250 faces, the original UV coordinates, and 42 referenced diffuse textures, loaded through Three.js.
What was AI-generated was everything on top needed to turn it into a complete game: shaders, lighting, scenario tags, physics, animations, collision, movement, sky and fog, lifts, pickups, weapon handling, and quest routing.
Every pickup was placed by hand against the geometry using callout maps and a dev-only coordinate locator. This was surprisingly tedious to get right - I think it took me 10 iterations just to get the blue lift on Camo to line up parallel with the ledge.
The Guardian geometry and texture assets are 21 MB, so the load is hidden inside the lobby countdown and scorecard screen while the shaders warm up. It targets 60 FPS and feels smooth on a recent MacBook in Chrome.
Touch controls work on mobile, but the field of view is roughly 20 degrees in portrait, so desktop is definitely the best way to play it.
I built it with Codex using Astra. It wrote essentially all of the code: 20,552 lines of TypeScript across 118 files, 973M tokens, 37 hours of runtime, and about 25-30 hours of my time.
Coding wasn't the hard part. The time-consuming part was deciding which memories belonged in the map, where each should live, what game mechanic fit each one best, and then playing it over and over to fix bugs and get the movement and user flow to feel right.
I'll write up more about the Codex/Astra side in a comment since I had a lot of interesting learnings from building something this large with it.
This is an unofficial fan project and I'm not making money from it. The geometry, textures, UI, and many of the sound effects are Halo material and belong to their respective owners.
Some things are still rough. There's occasional lag when picking up a power weapon. The lifts don't feel quite natural - it was hard to replicate the vacuum effect of the real lifts. On some browsers like Firefox, audio needs a click before it starts.
Would love feedback on how it could be improved, especially from anyone else who spent a lot of time on this map.
Ha, fair. I should have said "Coding wasn't the hard part because Astra did all of it."
The hard parts for me were describing bugs that weren't visual and the more subjective stuff, e.g. where memories should go, pacing, what felt confusing, whether something was actually fun, etc. I couldn't have built this without AI.
Regarding Microsoft: a little. It's noncommercial, and I have a credits/disclaimer screen that makes it clear it's an unofficial fan project and that the Halo assets belong to their respective owners. But obviously that doesn't mean I own or have a license to the Guardian assets. If Microsoft/Halo Studios asked me to take it down or change something, I would.
You start in the Halo 3 main menu, go through the lobby, spawn in the map, and explore. There are photos, stories, quests, mini-games, and Easter eggs scattered around. Movement is via WASD and mouse, no signup.
Guardian was my third place growing up. Starting in 9th grade, my friends and I would get home after school, get on Halo, and hang out in a Guardian free-for-all with MLG settings until everyone came online, then play customs or ranked for hours.
On weekends we'd bring our Xboxes and monitors to each other's houses, stay up all night, and play in local tournaments. Guardian was probably the closest thing I had to a digital home, so I wanted my site to live there. Playing it and hearing the theme music for the first time in 10+ years in a place I knew by heart felt a bit like coming home.
The map itself isn't AI-generated. It uses an original Guardian asset export distributed through the fan-run Halo Archive: an OBJ with 115,250 faces, the original UV coordinates, and 42 referenced diffuse textures, loaded through Three.js.
What was AI-generated was everything on top needed to turn it into a complete game: shaders, lighting, scenario tags, physics, animations, collision, movement, sky and fog, lifts, pickups, weapon handling, and quest routing.
Every pickup was placed by hand against the geometry using callout maps and a dev-only coordinate locator. This was surprisingly tedious to get right - I think it took me 10 iterations just to get the blue lift on Camo to line up parallel with the ledge.
The Guardian geometry and texture assets are 21 MB, so the load is hidden inside the lobby countdown and scorecard screen while the shaders warm up. It targets 60 FPS and feels smooth on a recent MacBook in Chrome.
Touch controls work on mobile, but the field of view is roughly 20 degrees in portrait, so desktop is definitely the best way to play it.
I built it with Codex using Astra. It wrote essentially all of the code: 20,552 lines of TypeScript across 118 files, 973M tokens, 37 hours of runtime, and about 25-30 hours of my time.
Coding wasn't the hard part. The time-consuming part was deciding which memories belonged in the map, where each should live, what game mechanic fit each one best, and then playing it over and over to fix bugs and get the movement and user flow to feel right.
I'll write up more about the Codex/Astra side in a comment since I had a lot of interesting learnings from building something this large with it.
This is an unofficial fan project and I'm not making money from it. The geometry, textures, UI, and many of the sound effects are Halo material and belong to their respective owners.
Some things are still rough. There's occasional lag when picking up a power weapon. The lifts don't feel quite natural - it was hard to replicate the vacuum effect of the real lifts. On some browsers like Firefox, audio needs a click before it starts.
Would love feedback on how it could be improved, especially from anyone else who spent a lot of time on this map.
Awesome job! Very cool to see this.
Sir you made my day. Worked on iPhone se3.
At first I thought that might have been the third gen of iPhones (circa 2009), but then I looked it up and saw it came out in 2022 . Thank you!
“Coding wasn't the hard part.” I would hope not since astra did that.
Above saltiness aside, are you worried Microsoft will see this?
Ha, fair. I should have said "Coding wasn't the hard part because Astra did all of it."
The hard parts for me were describing bugs that weren't visual and the more subjective stuff, e.g. where memories should go, pacing, what felt confusing, whether something was actually fun, etc. I couldn't have built this without AI.
Regarding Microsoft: a little. It's noncommercial, and I have a credits/disclaimer screen that makes it clear it's an unofficial fan project and that the Halo assets belong to their respective owners. But obviously that doesn't mean I own or have a license to the Guardian assets. If Microsoft/Halo Studios asked me to take it down or change something, I would.