introduce economy #231

Closed
opened 2026-10-25 12:58:25 +00:00 by sermuns · 1 comment
Owner

Add a currency people can use to buy cosmetics, emotes, gadgets e.g.

Should be earned via events and performing misc. tasks in the free-roam. Should also passively be earned at a pretty slow rate, like 1 per minute.

Should be a mockery of micro-transactions in games but still fun to grind.

Need a name/item of currency. Could be

  • bottlecaps
  • cigars (like the Elsie cat is smoking)
  • HP (högskolepoäng) is funny but easily confused with health points

The currency should only be integer, nothing should cost/earn you fractional.

This whole economy idea depends on a lot of unimplememted architecture like a stateful server, player accounts and much more complexity. But I think could be worth it.

Add a currency people can use to buy cosmetics, emotes, gadgets e.g. Should be earned via events and performing misc. tasks in the free-roam. Should also passively be earned at a pretty slow rate, like 1 per minute. Should be a mockery of micro-transactions in games but still fun to grind. Need a name/item of currency. Could be - bottlecaps - cigars (like the Elsie cat is smoking) - HP (högskolepoäng) is funny but easily confused with health points The currency should only be integer, nothing should cost/earn you fractional. This whole economy idea depends on a lot of unimplememted architecture like a stateful server, player accounts and much more complexity. But I think could be worth it.
Author
Owner

Wild ideas, roughly in the order I would argue about them.

Short version: build the wardrobe, not the bank; make the shop a museum of dark patterns; call the money pins.

The expensive part of this issue is the part we can skip

The issue says this depends on a stateful server and accounts. I don't think it does. The architecture already says players are client-authoritative because cheating is out of scope for co-op, and an economy inherits that: pins are a wardrobe, not a bank.

  • v1 wallet lives on the client and is saved locally. That makes a save file the real prerequisite, not an account system. I don't think the client saves anything today; this would be the first thing it remembers.
  • the server only needs to know what you look like, because other players see it. The name already travels once in Hello; a look can travel the same way.
  • if someone edits their save, they rob their own shop.

Trading is the feature that forces a server. So don't build trading until there is something to trade. When we do, the line is: only income the server can see becomes tradeable (event placements from its own tally, distance from the server-stepped fleet), while free-roam earnings stay local and never enter the shared pool. That is a clean rule and it pushes the hard work to the day it is actually needed.

Name

pins (märken). It ties the currency to the one collection the campus already ships: the association emblems on Märkesbacken.

  • the icon is an enamel pin, not a coin; the shop is the pin counter;
  • every association can get a pin, earned by visiting its emblem and bought or worn later;
  • a display board for your room is the prestige sink;
  • HP dies because event scores already call their unit points, and a second kind of point is a HUD hazard; poäng dies the same death;
  • bottlecaps are a Fallout quote. Cigars or stubbar work if the cat is the banker and are funnier than caps, but they tie the whole economy to one smoking joke.

One currency, integers. If we want to mock premium currency, do it in the shop's copy, not in the data model. A u64 balance and u32 prices, with percentage fees rounded up, keep that promise.

The bake already furnished the shop

This is the part that makes me want to build it: the baked prop catalog already has Vending, Recycling, Atm, Printer, Cafe, ParcelLocker, PostBox, Fountain, DiscGolf, Bbq and PicnicTable. The economy can be physical on day one, with no new bake fields:

  • vending machines are the shop terminals. Walk up, press E, the catalog opens.
  • recycling stations are the pant machines. Bottles spawn near benches and bins; return a bag for a few pins.
  • printers sell a paper hat. You pay to print your thesis, wear it, and that is the whole joke.
  • cafes sell fika, and the fountain takes a pin and passes your wish to nearby players as a small pure sink.
  • parcel lockers receive your loot-box delivery, so opening it means walking there. Friction is the best anti-dark-pattern.
  • ATMs are where the premium-currency gag lives: withdraw 1:1, leave 3.
  • disc golf gets a disc gadget with a real target already in the bake.

No shop building, no new marker, no rebake.

What money buys

The rule I would hold: never sell traversal, spawning, events or voice. The moment a purchase changes how fast you reach a place or whether you can join, the grind becomes a wall around the game.

  • verbs: emotes (cat loaf, sipping coffee, conductor), gadgets (frisbee, laser pointer, sparkler, bubbles, camera, boombox), and toys that reuse the ball's throw, the beam and trail effects, and the sitting bit;
  • looks: shirt patterns overriding the id-picked palette, hats/glasses/scarves on the glTF head, vehicle paint and bells (the car look is already hashed from the id, so the override is one function), beam color, trail color, a chat title;
  • props: a picnic blanket, a placeable flag, a cat that follows you and sits when you sit;
  • tapes: liuverse-music already picks a score from world state, so a tape is a director preset and the boombox broadcasts it to nearby players over the same proximity pattern as voice. Selling someone a mood is a great cosmetic.

Consumables (fireworks, bubbles, a round of fika) are the recurring sink: cheap, disposable, and they make a gathering better instead of making a number bigger.

Earning

The 1/minute passive is the part I would make diegetic, or it is an idle-farm button:

  • lectures: sit inside a RoomFunction::Teaching room and earn 1/min. The location strip already names the room, the sitting bit is already on the wire, and interiors get a reason to exist. Two players in the same hall can get a study-group bonus; the joke writes itself.
  • the bus: the server already steps the shuttles, so distance ridden is observable when online. "The only profitable thing on campus is the bus."

Active income should be 5-10x passive or nobody does it:

  • pant, above;
  • odometers: bike, skate, sled, scooter. The pose stream already carries everything needed to measure distance;
  • entrances: first time through each building's door. The bake has every entrance, so a visited bit per building is a map-completion goal built from content we already have;
  • events: placement payouts from the server's own tally, scaled against the score (a race win is 1000 points; paying 1000 pins would let one race buy the shop). Losing should still pay something;
  • photo spots: baked markers plus a camera gadget. A postcard collection with better branding.

Passive math: 60 pins/hour. If the first hat is around 150, that is 2.5 hours of class or 15 minutes of pant. A gadget at 400-800 and a prestige item at a few thousand feels right, with events as the spike.

The satire

The joke should be that the mechanics are visible and harmless. A shop that is a museum of dark patterns:

  • a page selling "premium" currency 1:1 with decimals, always leaving 3, which is the regular currency with an extra step;
  • a lyckohjul with published odds, a pity timer, and duplicates that recycle at a fraction;
  • Terminskortet: a battle pass that never expires and whose premium track is bought with the free currency;
  • a sale timer that resets instead of ending, so there is no FOMO;
  • a receipt, a newsletter and a dismissible notification for every purchase;
  • a 15% kårservice fee that is visibly deleted, and occasionally returned as a budget surplus to everyone;
  • a "skip the grind" button that gives a short lecture on the value of play;
  • Elsie in a kiosk, taking a cut, saying "mrrp". Prices are non-negotiable.

No daily streaks, no real money, no actual gambling, no stock that punishes missing a week. The satire has to be funny from the outside, not effective on the player. That is also why the parcel-locker delivery is good: it makes the loot-box joke physical and silly.

Sinks that scale

One-time cosmetics run out, and then passive income piles up. Recurring and shared sinks:

  • rent on a dorm room or garden plot, the most LiU sink possible, which also gives a place to hang the pin board;
  • fountain wishes and donations with badge tiers (you get nothing; that is the donation);
  • a campus crowdfund, e.g. a statue or the fountain repaired, paid by everyone and then permanent. That is the first shared world state beyond events and daytime, and a good reason to want a server later;
  • a kårmöte vote on the shop tax, reusing the event vote machinery and a Daytime-style one-byte broadcast. Exam-week surcharge, recession sale, market mood. One byte, endless copy.

Shape in the tree

v1, no wire changes:

  • catalog: ids, names, integer prices and unlock rules. Not liuverse-assets, which depends on render and could never be linked by the server; liuverse-world already holds the event catalog and the server already depends on it. Prices live next to the items so the HUD, the shop and any future server cannot disagree.
  • wallet: balance + owned bitset + stats, saved once (native file, localStorage). Client only.
  • earn hooks next to the stats they read; the shop is a tab in the existing inventory panel, opened by a vending-machine interaction.
  • look applied locally: shirt override, hat socket, paint override. Nobody else sees it yet. That is enough to test whether the loop is fun.

When it is fun:

  • Hello grows a look, and a PlayerLook frame covers changes, the same shape as the name and rename. Small ids, append-only tags. Hats become visible, still no accounts.
  • a server wallet only when pins move between players: a random student-card bearer token in Hello, a file-backed balance, and income rate-limited like voice, chat and event reports. Then tips, event pots, the tax vote and the crowdfund.
  • a day/night-style market mood broadcast.

What would make me veto it

  • trading before server identity;
  • selling speed, reach or event access;
  • daily login rewards and time-limited stock;
  • any real-money hook, even a joke that looks real;
  • a second balance in the data model.

If we want one wild anchor feature, make it the association pin collection with a display board in a dorm room. It turns the emblem hill into a destination, gives the shop a theme the campus would plausibly mint, and every association is content we already have.

Wild ideas, roughly in the order I would argue about them. **Short version:** build the wardrobe, not the bank; make the shop a museum of dark patterns; call the money pins. ## The expensive part of this issue is the part we can skip The issue says this depends on a stateful server and accounts. I don't think it does. The architecture already says players are client-authoritative because cheating is out of scope for co-op, and an economy inherits that: pins are a wardrobe, not a bank. - v1 wallet lives on the client and is saved locally. That makes a save file the real prerequisite, not an account system. I don't think the client saves anything today; this would be the first thing it remembers. - the server only needs to know what you look like, because other players see it. The name already travels once in `Hello`; a look can travel the same way. - if someone edits their save, they rob their own shop. Trading is the feature that forces a server. So don't build trading until there is something to trade. When we do, the line is: only income the server can see becomes tradeable (event placements from its own tally, distance from the server-stepped fleet), while free-roam earnings stay local and never enter the shared pool. That is a clean rule and it pushes the hard work to the day it is actually needed. ## Name **pins** (märken). It ties the currency to the one collection the campus already ships: the association emblems on Märkesbacken. - the icon is an enamel pin, not a coin; the shop is the pin counter; - every association can get a pin, earned by visiting its emblem and bought or worn later; - a display board for your room is the prestige sink; - `HP` dies because event scores already call their unit points, and a second kind of point is a HUD hazard; `poäng` dies the same death; - bottlecaps are a Fallout quote. Cigars or stubbar work if the cat is the banker and are funnier than caps, but they tie the whole economy to one smoking joke. One currency, integers. If we want to mock premium currency, do it in the shop's copy, not in the data model. A `u64` balance and `u32` prices, with percentage fees rounded up, keep that promise. ## The bake already furnished the shop This is the part that makes me want to build it: the baked prop catalog already has `Vending`, `Recycling`, `Atm`, `Printer`, `Cafe`, `ParcelLocker`, `PostBox`, `Fountain`, `DiscGolf`, `Bbq` and `PicnicTable`. The economy can be physical on day one, with no new bake fields: - **vending machines are the shop terminals.** Walk up, press E, the catalog opens. - **recycling stations are the pant machines.** Bottles spawn near benches and bins; return a bag for a few pins. - **printers sell a paper hat.** You pay to print your thesis, wear it, and that is the whole joke. - **cafes sell fika**, and the **fountain** takes a pin and passes your wish to nearby players as a small pure sink. - **parcel lockers receive your loot-box delivery**, so opening it means walking there. Friction is the best anti-dark-pattern. - **ATMs** are where the premium-currency gag lives: withdraw 1:1, leave 3. - **disc golf** gets a disc gadget with a real target already in the bake. No shop building, no new marker, no rebake. ## What money buys The rule I would hold: never sell traversal, spawning, events or voice. The moment a purchase changes how fast you reach a place or whether you can join, the grind becomes a wall around the game. - **verbs:** emotes (cat loaf, sipping coffee, conductor), gadgets (frisbee, laser pointer, sparkler, bubbles, camera, boombox), and toys that reuse the ball's throw, the beam and trail effects, and the `sitting` bit; - **looks:** shirt patterns overriding the id-picked palette, hats/glasses/scarves on the glTF head, vehicle paint and bells (the car look is already hashed from the id, so the override is one function), beam color, trail color, a chat title; - **props:** a picnic blanket, a placeable flag, a cat that follows you and sits when you sit; - **tapes:** `liuverse-music` already picks a score from world state, so a tape is a director preset and the boombox broadcasts it to nearby players over the same proximity pattern as voice. Selling someone a mood is a great cosmetic. Consumables (fireworks, bubbles, a round of fika) are the recurring sink: cheap, disposable, and they make a gathering better instead of making a number bigger. ## Earning The 1/minute passive is the part I would make diegetic, or it is an idle-farm button: - **lectures:** sit inside a `RoomFunction::Teaching` room and earn 1/min. The location strip already names the room, the sitting bit is already on the wire, and interiors get a reason to exist. Two players in the same hall can get a study-group bonus; the joke writes itself. - **the bus:** the server already steps the shuttles, so distance ridden is observable when online. "The only profitable thing on campus is the bus." Active income should be 5-10x passive or nobody does it: - **pant**, above; - **odometers:** bike, skate, sled, scooter. The pose stream already carries everything needed to measure distance; - **entrances:** first time through each building's door. The bake has every entrance, so a visited bit per building is a map-completion goal built from content we already have; - **events:** placement payouts from the server's own tally, scaled against the score (a race win is 1000 points; paying 1000 pins would let one race buy the shop). Losing should still pay something; - **photo spots:** baked markers plus a camera gadget. A postcard collection with better branding. Passive math: 60 pins/hour. If the first hat is around 150, that is 2.5 hours of class or 15 minutes of pant. A gadget at 400-800 and a prestige item at a few thousand feels right, with events as the spike. ## The satire The joke should be that the mechanics are visible and harmless. A shop that is a museum of dark patterns: - a page selling "premium" currency 1:1 with decimals, always leaving 3, which is the regular currency with an extra step; - a lyckohjul with published odds, a pity timer, and duplicates that recycle at a fraction; - **Terminskortet:** a battle pass that never expires and whose premium track is bought with the free currency; - a sale timer that resets instead of ending, so there is no FOMO; - a receipt, a newsletter and a dismissible notification for every purchase; - a 15% kårservice fee that is visibly deleted, and occasionally returned as a budget surplus to everyone; - a "skip the grind" button that gives a short lecture on the value of play; - Elsie in a kiosk, taking a cut, saying "mrrp". Prices are non-negotiable. No daily streaks, no real money, no actual gambling, no stock that punishes missing a week. The satire has to be funny from the outside, not effective on the player. That is also why the parcel-locker delivery is good: it makes the loot-box joke physical and silly. ## Sinks that scale One-time cosmetics run out, and then passive income piles up. Recurring and shared sinks: - **rent** on a dorm room or garden plot, the most LiU sink possible, which also gives a place to hang the pin board; - **fountain wishes** and donations with badge tiers (you get nothing; that is the donation); - **a campus crowdfund**, e.g. a statue or the fountain repaired, paid by everyone and then permanent. That is the first shared world state beyond events and daytime, and a good reason to want a server later; - **a kårmöte vote on the shop tax**, reusing the event vote machinery and a `Daytime`-style one-byte broadcast. Exam-week surcharge, recession sale, market mood. One byte, endless copy. ## Shape in the tree v1, no wire changes: - **catalog:** ids, names, integer prices and unlock rules. Not `liuverse-assets`, which depends on render and could never be linked by the server; `liuverse-world` already holds the event catalog and the server already depends on it. Prices live next to the items so the HUD, the shop and any future server cannot disagree. - **wallet:** balance + owned bitset + stats, saved once (native file, localStorage). Client only. - **earn hooks** next to the stats they read; the shop is a tab in the existing inventory panel, opened by a vending-machine interaction. - **look applied locally:** shirt override, hat socket, paint override. Nobody else sees it yet. That is enough to test whether the loop is fun. When it is fun: - `Hello` grows a look, and a `PlayerLook` frame covers changes, the same shape as the name and rename. Small ids, append-only tags. Hats become visible, still no accounts. - a server wallet only when pins move between players: a random student-card bearer token in `Hello`, a file-backed balance, and income rate-limited like voice, chat and event reports. Then tips, event pots, the tax vote and the crowdfund. - a day/night-style market mood broadcast. ## What would make me veto it - trading before server identity; - selling speed, reach or event access; - daily login rewards and time-limited stock; - any real-money hook, even a joke that looks real; - a second balance in the data model. If we want one wild anchor feature, make it the **association pin collection** with a display board in a dorm room. It turns the emblem hill into a destination, gives the shop a theme the campus would plausibly mint, and every association is content we already have.
Sign in to join this conversation.
No description provided.