Case study · In-house · Arcade Union

FarmFolk

A warm, light website for an isometric farming and town-building game, with the game moved under /play/ and its account server left exactly where it was.

Type
Indie game · Game website · Technical SEO
Role
Design, build, hosting and SEO
Year
2026
Built with
Eleventy, Static HTML, CSS, nginx, Godot web export
The FarmFolk home page on a desktop screen: a bright screenshot of a small farm with a barn, a silo and a wheat field behind the title, a short description and two buttons, Play now and How to play, on a cream background.

Overview

FarmFolk is a free isometric farming and town-building game that runs in the browser, made by Arcade Union. I built its website, and moved the game onto /play/ so the root of the domain could become a proper front page.

The game already had accounts and saved farms on a server of its own. The brief for the website was to add the front door without disturbing any of that.

The challenge

The game was served straight from the domain’s root, with a share image and a sitemap that had to travel with every deploy, and a header telling search engines to stay away because it was a prototype.

Two things made it more delicate than a plain launch page. The game talks to its own API on the same address, so moving it had to leave that route alone, and its engine files are large, so the way they were served mattered.

Strategy

  • Move the game, not the API. The game goes to /play/. The API stays at /api/ on the same address, so the game needs no changes and there is no cross-origin request to get wrong.
  • Make the first page do the explaining. Plant, mill, bake, sell and expand: the loop is the first thing the page says, with a screenshot of a real farm beside it.
  • Be clear about money. The currency is an ordinary in-game currency, not a token, and no wallet is needed. The page says so in a sentence people can read.
  • Look like the game. A light, warm design, rather than the dark template used for the other games, taken from the game’s own parchment and wood interface.

Design and development

  • Look: cream, leaf green and wood brown from the game’s own panels, with a rounded display typeface, and green chosen dark enough to pass contrast checks on every background.
  • Imagery: the hero is a crop of a real screenshot with the game’s interface left out, so it reads as a place rather than a window.
  • Fast engine delivery: the 34 MB engine file is served brotli-compressed at about 5.9 MB, and the hashed files are cached for a year, while the unhashed ones are always revalidated.
  • No JavaScript on the website, and one stylesheet of 3 KB gzipped.
  • Share image: the game’s existing share image is reused, and the old address for it still works.

SEO work

  • Fundamentals on every page: a unique title and description, a canonical address, one h1 and the language declared.
  • Structured data: VideoGame, WebSite, WebPage and breadcrumbs, with the publisher linked.
  • Crawl control: a sitemap, and a robots.txt that keeps the game’s engine files and its API out of the crawl.
  • Indexing changed deliberately: the prototype’s blanket noindex header was removed for the website only, and kept on /play/. The site launched on 13 October 2026.

Technology and services

  • Generator: Eleventy, sharp and lightningcss, from the shared game-website template.
  • Hosting: nginx on a dedicated server, the website in its own folder, the game mapped onto /play/, and the API proxied as before.
  • Deployment: the website is deployed separately from the game, and the game’s own deploy script was pointed at /play/ so its post-deploy checks still pass.

Screenshots

Results

  • 98–100 · 100 · 100 · 100

    Lighthouse scores, home page (performance, accessibility, best practices, SEO)

    13 Oct 2026, three runs · Source: Lighthouse 13.5, mobile profile, live site

    The How to play page scored 100 in all four.

  • 1.5 s

    Largest contentful paint, home page

    13 Oct 2026, three runs · Source: Lighthouse 13.5, mobile profile, live site

    Total blocking time 0 ms and layout shift 0 on all three runs.

  • 329 KB, 11 requests

    Home page weight and requests

    13 Oct 2026 · Source: Lighthouse 13.5, mobile profile, live site

    Every request goes to its own domain: no third-party scripts, fonts, trackers or analytics.

  • 34 MB to about 5.9 MB

    Engine file size on the wire

    13 Oct 2026 · Source: File sizes on the server (original and brotli copy)

Next step

Want a result like this?

Tell me about your site or your game and I’ll tell you honestly what I’d do and whether I’m the right fit.