HextrisSpin the hexagon, match three coloursMakers guide
Games, films, pets and small tools, published as HTML.
Overview
- Format
- Offline HTML package (ZIP)
- Entry
- index.html at the root
- Size
- ZIP ≤ 150 MB
- Cover
- 16:10, ≤ 1 MB
- Hooks
- spareStart · sparePause · spareSnapshot
- Review
- By a person
- Rights
- Stay with the maker
HextrisSpin the hexagon, match three coloursPackage
| Item | Requirement |
|---|---|
| Entry | index.html and manifest.json at the ZIP root |
| Paths | Relative only; no absolute paths, .. or remote URLs |
| Size | ZIP ≤ 150 MB |
| Network | Offline, no external scripts, no tracking |
| Sound | Muted by default, stops on pause |
| Width | Works at 320 px, keyboard and touch |
| Progress | JSON-serialisable snapshot, ideally < 16 KiB |
| Language | zh-Hans · en · fr, with a fallback |
| Leave out | node_modules, .git, keys, system files |
manifest.json
{
"schemaVersion": 1,
"id": "com.example.tiny-garden",
"name": "片刻花园",
"version": "1.0.0",
"category": "plant",
"entry": "index.html",
"permissions": [],
"storage": "local",
"lifecycle": {
"start": "spareStart",
"pause": "sparePause",
"snapshot": "spareSnapshot"
}
}| Field | Meaning |
|---|---|
id | Reverse domain or hyphenated unique id |
name | Work name, same as the submission form |
version | e.g. 1.0.0; bump on resubmission |
category | game · pet · story · novel · plant · utility · other |
entry | Relative path to the HTML file |
permissions | Empty [] for now |
storage | local or none |
lifecycle | Names of the three hooks |
Lifecycle hooks
| Function | Called when | Returns |
|---|---|---|
spareStart(saved, language) | AI starts generating; saved is the last snapshot or null | — |
sparePause() | AI is done or the window hides; stop timers, animation and sound | Snapshot |
spareSnapshot() | Progress needs saving | Small JSON object |
// Called when AI starts generating, with the last saved progress
window.spareStart = (saved, language) => {
state = saved ?? newGame();
render(language);
};
// Called when AI is done or the window hides: stop animation and sound now
window.sparePause = () => {
stopTimersAndAudio();
return window.spareSnapshot();
};
// Return a small JSON-serialisable object to resume next time
window.spareSnapshot = () => ({ ...state });| File | Purpose | Size |
|---|---|---|
index.html | Entry, edit this | 4.0 KB |
manifest.json | Name, version, category | 307 B |
preview.html | Simulates Spare locally | 3.3 KB |
README.md | Full guide | 6.8 KB |
LICENSE | MIT | 1.1 KB |
Local preview
cd spare-plugin-starter
python3 -m http.server 8000
# http://localhost:8000/preview.htmlSubmit and review
- MakeEdit index.html; test start, pause and resume in preview.html
- SubmitUpload the ZIP, a 16:10 cover and a description; list asset sources and licences
- ReviewChecked by a person: offline, no tracking, pauses, works at 320 px, assets licensed
- LiveListed on the Works page under your name
Review status
| Status | Meaning | Next |
|---|---|---|
| Pending | Waiting for review | — |
| Published | Listed on the Works page | Ask for removal anytime |
| Returned | Not accepted, reason given | Fix, bump the version, resubmit |
| Unpublished | No longer listed | Contact support@spare.cool |
Licence
| Case | Rule |
|---|---|
| You own it | Spare gets a licence to host and distribute it. Ask for removal anytime. |
| Licensed assets | You need rights to the code, images and music. List licences or sources in the README. |
| Open-source ports | Keep the original licence and credits and describe your changes. Hextris, for example, is GPL-3.0. |
| Template code | MIT. Modify and publish freely. |
FAQ
Do I need to code?
No. AI can write it.
Who owns my work?
You do. Spare gets a licence to host and distribute it; you can ask for removal anytime.
Can it use the network?
No. No tracking or third-party scripts either.