A-frame
Valley-facing windows, a deck with a hot tub, and a steep gravel driveway.


An Airbnb hosting game set on the real mountains of north Georgia.
Buy a cabin, furnish it, list it, and keep your guests happy. They text you, and you text back in your own words. Their replies come from a small language model I fine-tuned, running on your computer with nothing sent online.
I run three Airbnbs. Most of the job isn't the houses. It's the texts: a guest who can't find the lockbox, a broken vase, someone asking if they can bring a dog you already said no to. I wanted a game about that part, with the decorating and the money around it.
It was also an excuse to test two things at once. Could I build a 3D game on BRUTAL, the framework from the Kitten Space Agency team, without an engine? And could a small local model play a guest well enough that you'd want to text it?
Eight places so far, each on its own site. Every one is modelled with a Blender script, and every room can be walked through and refurnished.
Valley-facing windows, a deck with a hot tub, and a steep gravel driveway.


Wraparound porch with rocking chairs, a stone fireplace, and a ladder up to the loft. Ten minutes from town.



On stilts behind the dunes, with a glass corner looking out to sea and a boardwalk down to the beach. Blue Ridge doesn't have an ocean. I gave it one.



A long flat roof, big windows, a record player and an open-plan kitchen.



A black cabin with a glass gable, sliding doors onto the deck, a wood stove, and a sleeping loft under skylights.





One room and a bath, a rusty tin roof, and a porch bench looking down at the river.



Tiny and cosy, with a fire pit, string lights and a striped awning. No pets.

Yours. A run-down board cabin with a sagging roof, a wood stove and an outhouse out back. You don't rent this one out.


Every guest, and your mom, is written by a Qwen3.5 4B model with a LoRA fine-tune fused in. It runs in the game through LLamaSharp on the CPU, about two and a half seconds a reply, and ships as one 2.7 GB file.
Stock models kept slipping into the host's role, answering their own questions or offering the player a refund. Fine-tuning on about 10,000 example conversations, written to match the prompts the game actually builds, fixed most of that. Scores below are from blind grading on held-out scenarios: an earlier 2B fine-tune against the 4B that shipped.

People will try to talk a guest into paying them $10,000. So nothing an NPC types changes the game. Money, refunds and reviews are decided by game code, and the model only writes the words.
One pass over the data. The early runs crashed the Mac, and a GPU hang partway through a long run meant resuming from a checkpoint and losing the optimizer state.
The same training ported to PyTorch and PEFT with the same tokens, loss mask and LoRA settings. Train, merge, export to GGUF and run the eval on the pod. Under $1 a run.
That changed how I worked. When a run costs ten hours you try one idea a night. At fifteen minutes you can try a different dataset, grade it, and try again before lunch.
This is how hosting actually feels: the requests and the texts come in while you're doing something else. So the in-game phone can move to your real one. Open Phone Link on the in-game laptop, scan the QR code with the companion app, and the game's phone shows up on yours. You can accept a booking, answer a guest or move money from the couch while the game keeps running on your computer.
The app doesn't rebuild any screens. The in-game phone was already drawn as its own 390-point screen, so the game streams that screen as JPEG frames over a direct WebRTC connection, and your taps and typing go back the same way. Every phone app in the game works on day one. Open the in-game camera and your phone's gyroscope aims it.
A small Cloudflare Worker only does the handshake. Game data goes straight between your computer and your phone. Bookings and guest texts come in as real push notifications. The app is React Native with Expo, so one codebase covers iPhone and Android.

A-frames, log cabins, an Airstream, a mid-century house, a beach house and a tiny house in the Blue Ridge woods. Each one sits on its own site, and the bank will lend you the down payment if your credit holds up.
Walk through every room and place furniture from a catalog. Then take the listing photos yourself. Better photos rank better, so there is a reason to buy a real camera.
Set a nightly price on SkyBnB, accept or decline requests, and wait for the reviews. Guests only see each other’s reviews once both sides have written one, same as the real thing.
Book cleaners between stays, restock the toilet paper and coffee, fix what guests break, and answer the HOA. You live in a run-down shack behind the Airstream while all this goes on. Call your mom.
BRUTAL is a C# and Vulkan framework, not an engine. It hands you a window, Vulkan bindings, Dear ImGui and some math, and the rest is yours. So the game has its own terrain renderer reading USGS 3DEP height maps of Blood Mountain and Blue Ridge, its own forest scatter, rivers and roads, and an ink-outline pass that gives it the graphic-novel look.
BRUTAL officially targets Windows and Linux. I'm on a Mac, so it runs on .NET 10 through MoltenVK, with the Vulkan loader bundled into the app. The buildings and furniture are modelled with Blender scripts and exported as GLB.
It's early and changes every week. Mac needs Apple silicon and macOS 26; Windows needs a recent GPU driver. About 3 GB. If something breaks, tell me the version number in the bottom-left corner.
Download on itch.io