All projects
2026In development

Fluffernutter

A cozy desktop companion — a pair of pixel-art bunnies that live on your desktop, going about their day in real time while you tend to them.

Developed by Engine Room

The short version

Overview

Fluffernutter is a desktop companion: a small, always-on-top window in the corner of your screen where two bunnies — Cadbury and Caramilk — live in a cozy bedroom. They hop around, graze, drink, dig into a tunnel, do midnight zoomies, and flop on the rug. You keep their hay topped up, their water clean, and their litter box fresh, and in return you get a little pocket of warmth in the middle of the workday.

There's no account, no login, no feed. You install it and the bunnies are just there — quietly getting on with their lives whether you're watching or not. The entire scene — every bunny, every plank of floor, the drifting clouds outside the window — is drawn from code as blocky pixel art. There isn't a single image file in the project.

Why it exists

The problem it solves

The goal was to make something that felt alive rather than interactive — a companion you glance at, not an app you operate. That set three design constraints up front.

It has to feel like its own little world: the bunnies should behave believably even when no one is touching anything — resting in the evening, playing in the afternoon, napping, snacking, keeping a polite distance from each other.

It has to respect real life: their rhythm should track the actual time of day, and time should keep passing when the app is closed, so coming back always tells a small story. And caretaking should be gentle, never a chore — the interactions are tiny and tactile: a click to refill, a hover to tidy up, a click to get a happiness-boosting pet.

Under the hood

How it works

A living daily rhythm

The bunnies run on a behaviour state machine driven by both their needs and the real-world clock. A 'calm factor' derived from system time shifts how they spend their day: lively and playful in the afternoon, winding down into flopping, grazing, and sleeping through the evening and night. The room's lighting shifts with it — a full day-to-night cycle with a sun, a moon, drifting clouds, and a star field, all keyed to the actual hour. On top of that they keep believable routines: a nap roughly every fifteen minutes, regular meals and drinks, trips to the litter box, and daytime play sessions.

Caretaking, reduced to gestures

Hover to tidy: poops and stray hay are gathered just by sweeping the cursor over them — carry up to ten bits, then click the compost to tip them in. Click to tend: the water bowl, hay manger, and litter box each open a small action menu, with timothy-or-alfalfa hay, murky water that needs cleaning, and a litter box to scoop or re-bed. Click to pet: tap a bunny and it does a happy little hop with hearts. Health and happiness meters sit at the top, and a notification — plus a native desktop alert — surfaces only when something genuinely needs attention, with cooldowns so it never nags.

Time that keeps passing

The game saves to disk, and when the app is closed the simulation keeps running against the clock. Reopen it after a few hours and the bunnies are hungrier, the floor is messier, and a 'while you were away' summary greets you. Long absences are capped so nothing ever becomes grim — you're never punished for living your life.

Everything is drawn, nothing is loaded

All artwork is procedural pixel art rendered to a Canvas every frame — the bunnies, the furniture, the toys, the room. Each bunny is composed from a bold outline pass and coloured fills in an art-unit coordinate system, giving them a real animation vocabulary: hopping, running, eating, drinking, sleeping, flopping on their back paws-up, loafing into a round 'cookie', and sprawling flat in the tunnel with their feet poking out both ends. Because there are no sprite sheets, adding a new pose is just more drawing code.

The stack

Engineering choices — and why

PlatformElectron desktop app (macOS & Windows)An always-on-top window with a tray/menu-bar presence, native notifications, and one-command installers for both platforms.
RenderingHTML5 Canvas, redrawn every frameThe whole scene is procedural pixel art drawn from code — zero image assets, no sprite sheets, nothing in the render path to load.
LanguageVanilla JavaScript, plain modulesNo framework or engine — the simulation is pure JS, which keeps the logic portable into a headless test harness.
AnimationSquash-and-stretch with shared kinematicsLeaps into the bed or litter box squash low and stretch through the arc; the ground shadow tightens and fades using the same kinematics so sprite and shadow stay in sync.
BehaviourState machine + lightweight path planningBunnies keep personal space, spring into mirrored zoomies when they bump, and route through a waypoint to arc around the tunnel instead of walking through it.
TestingHeadless simulation harnessThe whole game loads into a stubbed browser/canvas, fast-forwarding tens of thousands of frames across different times of day to exercise every behaviour and render path before anything is eyeballed in the real window.
Outcomes

Results

Craft & engineering

  • Zero image assets — every bunny, prop, and cloud is drawn from code to a Canvas each frame.
  • Path planning verified with a simulation harness over a thousand tunnel crossings — zero walk-throughs.
  • Self-contained desktop app: tray presence, always-on-top toggle, native notifications, one-command installers for macOS and Windows.

The little things

  • A sleeping bunny floats lazy 'Z's — and half the time a thought-bubble drifts up with a dreamed-of carrot inside.
  • Weather is clipped to the window pane, so clouds slide out of view at the frame instead of leaking into the room.
  • Two bunnies piling into the bed make the cushion plump up and curl at the edges.
A calm, characterful little world that rewards a glance, asks for almost nothing, and keeps living whether you're looking or not — no engine, no asset pipeline, just code that draws bunnies, and bunnies that behave like bunnies.

Want something like this built?

Start a project