Back to the network

Games

Embratic

The two-person indie studio behind the games on this map, and embratic.com, the site I built for it.

The studio and its site

Embratic is the two-person indie studio I founded in 2023. Blue Olive is its artist, designer and writer, and I am its programmer. Its games are The Shrouded Parchments, Astroblast Rampage and Jigsaw Artistry, with Roots & Runes coming soon on Steam. Until the summer of 2026 it was called Ember Games Studio, and the site took the new name on 2026-08-01.

I built embratic.com, the studio's home on the web. This page is a short tour of it, the ideas it is built on, and what is still on its list.

The Embratic studio site's home page: the headline “We forge worlds from sparks.” on a dark page lit by amber embers, with links to the games, the assets and the studio's YouTube channel.
The home page, captured on 2026-10-27.

A tour

The menu has four sections.

The games catalogue. Under the heading “Our games” and the line “Every world we've forged so far”, the first card: Astroblast Rampage, marked Released, with a blue and orange spaceship, its tags, Google Play and YouTube buttons and a short description.
The catalogue.
The Shrouded Parchments' page: marked Early access, 2023, with its tagline, a short description, three tags and buttons for Steam, Discussions, Guides and Support, beside the game's key art of a valley with the title on it.
A game's own page.
The assets page: “Studio assets”, on the Unity Asset Store, with a button to Blue Olive's store page, then the first pack, the Fantasy Wizard Library & Study Furniture Pack, with its picture, tags, price and a Get on Asset Store button.
Blue Olive's asset packs.
The news page: a tag reading “Draft, not yet lit” and the headline “The forge is still heating up.”, with a line saying the first dispatch is still on the anvil.
News, not open yet.

The Forge in the Dark

The design has a name in the repository's README: "The Forge in the Dark". Warm, near-black pages lit by amber embers, sparks drifting up the screen, a film grain over everything, and small animations as a page loads and as you scroll. Four typefaces share the work: Bricolage Grotesque for headings, Hanken Grotesk for text, JetBrains Mono for labels, and Fraunces, an old-style serif with expressive italics.

The sparks are 26 small HTML elements moved by CSS, with no canvas and no game engine on the page. The README gives the reason: the text stays real HTML, so search engines read it and the pages stay fast. When a visitor's system asks for reduced motion, the sparks are hidden and the CSS animations, such as the flame on the logo, stop. The fades on load and on scroll come from the Motion library, and they still play.

Nothing looks broken while art is missing. A game or a pack with no cover gets a generated ember gradient instead, and a page whose screenshots are not ready shows "In the forge" placeholders.

Content as data

The catalogue is data, not pages. A game is one block in data/games.ts, an asset pack one block in data/assets.ts, and their pictures and videos are matched to them by slug from small config files. Adding a game is copying a block and filling it in; its card in the catalogue and its own page follow. Those files hold five game entries and seven packs today.

Hosting, and a plan B on the shelf

The domain sits with one company and the site with another. embratic.com was registered on 2026-07-31, with Cloudflare as the registrar and on Cloudflare's name servers, and the site is served from Vercel. A note in the repository from 2026-06-02, before the rename, recommends that split: buy the domain where it is sold at cost, and host where builds and deploys already worked. The Cloudflare build, through OpenNext, gave trouble on Windows.

The repository also holds a plan B, written and documented but not switched on: a small Cloudflare Worker that would serve the site from Cloudflare and fall back to Vercel whenever Cloudflare throws or answers with a server error. It comes with a rollback, and it names what it does not cover, a Cloudflare-wide outage. Its routes are commented out in the committed config, so the live site does not pass through it. A status note from 2026-06-09 says why it waits. The Cloudflare deployment it would put first was blocked on one real fix, a storage bucket for the cache the prerendered pages need, and for a small site that will not reach either free tier's limits the whole effort is likely premature. Staying on Vercel was the alternative the note named, and the site is still there.

Checks any agent can run

The repository carries seven verification skills, for any agent on my machine to run: an image check, a content lint, a link check, a smoke test of every route, a build gate, an SEO audit and a matrix of screenshots. Each has a SKILL.md and one or two Node scripts, and the script decides: exit code 0 is a pass, anything else is a finding, printed line by line. One runner, run.mjs, runs a single skill, a fast offline sweep or all of them. With --serve, it starts the dev server for the checks that need one and stops it again at the end; without it, those checks are skipped, not failed.

The planning note that came before them sets the rule. The result must be the same whichever local agent runs the check, Claude or Qwen, so the judgment sits in the script and not in the model: a weak model can misread a page, but not an exit code. The history shows a run with Claude Haiku and changes made for Qwen.

The first full sweep, on 2026-06-08, found bugs in the checks themselves. The link check's was the worst: it looked for the code one folder too high, found no links at all and exited 0, a pass. The smoke test went the other way and failed every route, on a "page not found" marker that the dev server puts in every page. Both are fixed, and the status file lists each fix.

What is still on the list

My part

Stack

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind 4
  • Motion
  • Cloudflare Workers (parked)
  • Vercel

Credits

Blue Olive is the studio's artist, designer and writer. The asset packs on the site are hers, and so are 11 of its commits.

Connected to