No description
  • TypeScript 59%
  • Logos 35.4%
  • CSS 4.7%
  • HTML 0.9%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
sophie b624453296
All checks were successful
Trigger ansible deploy / dispatch (push) Successful in 1s
Readme and attribution.
2026-09-18 08:58:24 +03:00
.forgejo/workflows switch to ansible 2026-09-18 08:45:39 +03:00
src can't leave house on mobile, font looks fucked on mobile 2026-09-18 08:15:33 +03:00
.gitignore website v3 2026-09-17 23:32:20 +03:00
ant.lockb website v3 2026-09-17 23:32:20 +03:00
frontend.ts website v3 2026-09-17 23:32:20 +03:00
package.json website v3 2026-09-17 23:32:20 +03:00
README.md Readme and attribution. 2026-09-18 08:58:24 +03:00
tsconfig.json website v3 2026-09-17 23:32:20 +03:00

Bee Meadow - sad.ovh

Sophie's personal site as a tiny explorable game. A living bee meadow rendered on <canvas>, where buildings are pages: walk (pan) around, tap things, read the blog, browse projects, and step inside the house.

Live at https://sad.ovh

What it is

  • Explorable homepage - a Tiled .tmx meadow baked to canvas, with day/night tinting, wandering bees, hives, chatter bubbles, and a rotating binkie billboard.
  • Buildings are content - each building cluster opens a parchment popup: blog, projects, contact, donations, webrings, skills, Last.fm.
  • A house you can enter - the click to enter building loads an interior map (assets/map/my_house.tmx) with its own decorations and popups. On mobile a ← leave house button appears; on desktop press Escape.
  • Mobile-friendly - touch pan, tap-to-open, responsive popup card, safe-area aware exit button, fluid hint/type sizes.

Controls

Input Action
Drag / scroll Pan the meadow
Click / tap building Open its page, or enter the house
Escape or ← leave house Exit the house
H / T Toggle highlight / tree debug layers

Tech

  • Preact (popup.tsx, pages/) rendered into a canvas-anchored HTML overlay
  • Custom engine (src/game/engine/) - TMX loader, canvas baker, sprites, day tint, HTML overlay, input (tap / touch-pan / wheel-pan)
  • Simulation (bees.ts, chatter.ts, binkies.ts, clusters.ts, save.ts)
    • bee foraging, day cycle, speech bubbles, billboard rotation, localStorage saves
  • SSSG static build (frontend.ts) - TypeScript compiler, Markdown blog compiler, image optimization, __BLOG_POSTS__ variable injection
  • Maps - edited in Tiled, stored as base64+zstd .tmx in src/assets/map/

Getting started

Requires Ant.

ant install
ant run dev    # serve with live reload on :8080
ant run prod   # optimized build into dist/

Editing content

  • Popups - edit src/game/popup.tsx (BUILDING_MESSAGES). hint controls the floating yellow label; content is Preact rendered into #popup-text.
  • Blog - add/remove src/blogs/*.md. The list is injected at build time via __BLOG_POSTS__ in frontend.ts; pages/Blog.tsx reads it.
  • Maps - edit in Tiled, keep layer names (terrain/ground = ground, everything else = canopy). Buildings come from the buildings layer clusters; IDs (B1, B2, …) are assigned by cluster size order, so check the popup mapping after reshaping the map.
  • House - src/assets/map/my_house.tmx. Decorations with triggers live in decorations; H<cell> IDs in popup.tsx must match tile indices.

How the house works

enterHouse() caches the meadow (map, baked layers, binkie face), loads my_house.tmx, mounts per-tile hints, and shows the exit button. exitHouse() restores the cache and disposes house hints. Both guard on inHouse / transitioning / booted so rapid taps can't corrupt state.

License / contact

"[LPC] Fruit Trees" by bluecarrot16, Joshua Taylor, and cynicmusic. https://opengameart.org/content/lpc-fruit-trees

LPC Coniferous Tree. Original by Sharm. Modified by WoldMountainGames for the Winter Tree. https://opengameart.org/content/lpc-seasoned-trees

"[LPC] Farm" by bluecarrot16, Wolthera van Hövell tot Westerflier (TheraHedwig), and Ivan Voirol. License: CC-BY 4.0. http://opengameart.org/content/lpc-farm . Based on: "Slates [32x32px orthogonal tileset by Ivan Voirol]" by Ivan Voirol. License: CC-BY 4.0 https://opengameart.org/content/slates-32x32px-orthogonal-tileset-by-ivan-voirol . "LPC compatible Ancient Greek Architecture" by Wolthera van Hövell tot Westerflier (TheraHedwig). Licenses: CC-BY-4.0 / GPL-3.0 / OGA-BY-3.0. https://opengameart.org/content/lpc-compatible-ancient-greek-architecture

Attribution to Nemisys,Daniel Eddeland (http://opengameart.org/content/lpc-farming-tilesets-magic-animations-and-ui-elements) and Tuomo Untinen https://opengameart.org/content/lpc-signposts-graves-line-cloths-and-scare-crow

Curt, Sharm, William.Thompsonj, This Webaddress https://opengameart.org/content/lpc-water-fountain

and my own assets (beehive, and more.)

Terrain

"[LPC] Terrains" by bluecarrot16, Lanea Zimmerman (Sharm), Daniel Eddeland (Daneeklu), Richard Kettering (Jetrel), Zachariah Husiar (Zabin), Hyptosis, Casper Nilsson, Buko Studios, Nushio, ZaPaper, billknye, William Thompson, caeles, Redshrike, Bertram, and Rayane Félix (RayaneFLX) https://opengameart.org/content/lpc-terrains-repacked

Liberated Pixel Cup (LPC) Base Assets (sprites & map tiles) Lanea Zimmerman (Sharm) CC-BY 3.0 / CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/liberated-pixel-cup-lpc-base-assets-sprites-map-tiles

[LPC] Farming tilesets, magic animations and UI elements Daniel Eddeland (Daneeklu) CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-farming-tilesets-magic-animations-and-ui-elements

ZRPG Tiles Richard Kettering (Jetrel), Zachariah Husiar (Zabin), Hyptosis, Lanea Zimmerman (Sharm), and Open Pixel Project. CC-BY-SA 3.0+ https://opengameart.org/content/zrpg-tiles

LPC C.Nilsson Casper Nilsson CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-cnilsson

Frozen Lake [LPC] Buko Studios (http://www.buko-studios.com/) Commissioned by PlayCraft: (www.playcraftapp.com) CC-BY 3.0 https://opengameart.org/content/frozen-lake-lpc

LPC Animated Water and waterfalls ZaPaper CC-BY-SA 3.0 https://opengameart.org/content/lpc-animated-water-and-waterfalls

LPC More Water Transitions billknye CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-more-water-transitions

[LPC] Sand+Rock Alt Colors William.Thompsonj, Daniel Eddeland CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-sandrock-alt-colors

[LPC] Colorful Sand + Deep Water! Nushio CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-colorful-sand-deep-water

LPC terrain extension caeles CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-terrain-extension

RPG Tiles: Cobble stone paths & town objects Zachariah Husiar (Zabin), Daniel Eddeland (Daneeklu), Richard Kettering (Jetrel), Hyptosis, Redshrike, Bertram CC-BY-SA 3.0 https://opengameart.org/content/rpg-tiles-cobble-stone-paths-town-objects

RPG Terrains Rayane Félix (RayaneFLX) CC-BY-SA 3.0 https://opengameart.org/content/rpg-terrains

Trees

"[LPC] Trees Mega-Pack" by bluecarrot16, Jetrel, Zabin, Hyptosis, Surt, Buch, Johann Charlot, Stephen Challener and the Open Surge team (http://opensnc.sourceforge.net), Gaurav Munjal, Ivan Voirol (Silver IV) Guido Bos, Yar, Paulina Riva (PauR), William.Thompsonj, Casper Nilsson, Hyptosis, ansimuz, qubodup, Bart K., Blarumyrran, Lanea Zimmerman (Sharm), Leonard Pabin, Chris Phillips, Barbara Rivera, and Talosaurus. CC-BY-SA 3.0 http://opengameart.org/content/lpc-trees

Lots of trees and plants from OGA (DB32) tilesets pack 1 Jetrel, Zabin, Hyptosis, Surt CC0 https://opengameart.org/content/lots-of-trees-and-plants-from-oga-db32-tilesets-pack-1

The Field of the Floating Islands Buch https://opengameart.org/users/buch CC0 https://opengameart.org/content/the-field-of-the-floating-islands

Outdoor tiles, again Buch https://opengameart.org/users/buch CC-BY 2.0 https://opengameart.org/content/outdoor-tiles-again

Shoot'em up graphic kit Johann Charlot CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/shootem-up-graphic-kit

32x32 (and 16x16) RPG Tiles--Forest and some Interior Tiles Stephen Challener and the Open Surge team (http://opensnc.sourceforge.net)commissioned by Gaurav Munjal CC-BY 3.0 https://opengameart.org/content/32x32-and-16x16-rpg-tiles-forest-and-some-interior-tiles

Orthographic outdoor tiles Buch CC0 https://opengameart.org/content/orthographic-outdoor-tiles

Basic map 32x32 by Silver IV Ivan Voirol (Silver IV) CC-BY 3.0 / GPL 3.0 / GPL 2.0 https://opengameart.org/content/basic-map-32x32-by-silver-iv

old frogatto tile art Guido Bos CC0 https://opengameart.org/content/old-frogatto-tile-art

Generic Platformer Tiles surt CC0 http://opengameart.org/content/generic-platformer-tiles

Isometric 64x64 Outside Tileset Yar CC-BY 3.0 https://opengameart.org/content/isometric-64x64-outside-tileset

Nature tileset Paulina Riva (PauR) CC-BY 3.0 https://opengameart.org/content/nature-tileset

[LPC] Tree Recolors William.Thompsonj CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-tree-recolors

LPC C.Nilsson Casper Nilsson CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/lpc-cnilsson

Lots of Hyptosis' tiles organized! Hyptosis CC-BY 3.0 https://opengameart.org/content/lots-of-hyptosis-tiles-organized

Trees & Bushes ansimuz CC0 http://opengameart.org/content/trees-bushes

OGA Community Tileset: Nature qubodup, Bart K., Blarumyrran GPL 2.0 / GPL 3.0 / CC-BY-SA 3.0 https://opengameart.org/content/oga-community-tileset-nature

Liberated Pixel Cup (LPC) Base Assets Lanea Zimmerman (Sharm) CC-BY-SA 3.0 / CC-BY 3.0 / GPL 3.0 https://opengameart.org/content/liberated-pixel-cup-lpc-base-assets-sprites-map-tiles

Whispers of Avalon: Grassland Tileset Leonard Pabin CC-BY 3.0 / GPL 3.0 / GPL 2.0 https://opengameart.org/content/whispers-of-avalon-grassland-tileset

Team River Fox Chris Phillips, Barbara Rivera CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/team-river-fox

Concept Art for LPC Entry Barbara Rivera CC-BY-SA 3.0 / GPL 3.0 https://opengameart.org/content/concept-art-for-lpc-entry

Old Eastern Themed Building Tiles + Tree Talosaurus CC0 https://opengameart.org/content/old-eastern-themed-building-tiles-tree