A searchable archive of the old YoYo Games Sandbox, preserving 100k+ GameMaker projects from 2007 to 2014.
For more information see yygarchive.org/about :)
Games are hosted on the Internet Archive; this site provides search and browsing over the metadata.
It uses vanilla HTML/CSS/JS for the frontend, and generates static pages with Jinja2. I use GitHub Pages for hosting.
All game metadata lives in a single games.json file (~50 MB, ~100k entries). The entire file is fetched on loading the homepage and held in memory, enabling fully client-side search and filtering.
The initial load can be slow on poor connections, but once downloaded, search, filter, and sort operations are instant.
Previously the site had a Flask backend (see the old-flask branch). Now pages are built from Jinja2 templates in templates/ using build.py, which outputs to _site/.
GitHub Actions runs python build.py --all and deploys _site/ to GitHub Pages.
A Flask-based server (serve.py) can render these templates on the fly for local development.
The old Flask site had /developer/<name> paths for every developer. Having these dedicated pages for authors didn't seem worth the maintenance burden, but I still want to preserve the existing links.
GitHub Pages has no SPA routing support, so having index.html preserve these paths isn't possible. As a hack requests to these paths are caught by 404.html, which redirects to /#developer=<name>.
Note this redirect behaviour isn't replicated in serve.py, so for local development you will just get a normal 404.