Salta ai contenuti

Il mercato

Sei monete inventate da questa città, un prezzo che si muove che qualcuno stia guardando o no, e un modo per inviare una posizione da un telefono a un altro senza che una banca ne sappia nulla.

Nulla al suo interno chiede mai al mondo esterno quanto valga qualcosa. I prezzi sono quelli del tuo server.


Apre aOscillazioneCos’è
Santocoin SNT$42,0003%La prima creata dalla città. Lenta, pesante, nel portafoglio di tutti
Vinewood VNW$3,2008%Fama, con prezzo a ore
Bayview BAY$1802%Noiosa di proposito. Un posto dove tenere i soldi mentre decidi
Dustcoin DST$1215%Arriva dalla contea, ed è già stata sulla luna due volte
Voltline VLT$6409%Energia, acqua e strade. Noiosa finché non va via la luce
Omen OMN$422%Nessuno sa chi l’abbia creata

Toglierne una dalla config e smette di esistere. La posizione di nessuno viene cancellata per questo — rimetti la moneta e ognuno ha di nuovo ciò che aveva.


shared/config/crypto.lua:

Tick = 300, -- seconds between one price and the next
Volatility = 1.0, -- every coin's swing, multiplied. One number for the whole market
History = 48, -- how many prices the chart remembers
Shock = { Chance = 0.02, Size = 0.22 }, -- rare, and the reason anybody checks twice a day
Fee = 0.02, -- the house, on the way in and on the way out
Trade = { Min = 10, Max = 250000 }, -- what one order may be, in money

E per ogni moneta: il prezzo di apertura, il suo Swing, un Drift che la spinge verso l’alto o verso il basso nell’arco di settimane, un Floor e un Ceiling da cui non esce mai, e una Depth — il denaro necessario per spostare quella moneta dell’uno per cento quando qualcuno la scambia. Una moneta sottile è una che un giocatore ricco può spostare da solo, ed è ciò che rende una moneta sottile degna di essere tenuta e temuta. Depth = 0 significa che gli ordini non spostano affatto il prezzo, il che è più semplice e molto più facile da farmare.

Icon dà un’immagine alla moneta; una moneta tua senza icona ripiega su un glifo disegnato, e poi sulla prima lettera del suo simbolo.


Wallet = 'character', -- or 'device'

In modalità character, un telefono rubato mostra al ladro un’app vuota. In modalità device, il telefono è il portafoglio, e rubarne uno porta via il portafoglio titoli.

Viene fornito su character, perché l’altra trasforma ogni scippo in una rapina in banca e questa dovrebbe essere una scelta deliberata di qualcuno, non un’impostazione predefinita.


Un prezzo è in centesimi e una posizione è in milionesimi di moneta, entrambi numeri interi dall’inizio alla fine, entrambi arrotondati contro chi sta scambiando, con la commissione in aggiunta. Comprare qualcosa e rivenderlo nello stesso secondo costa sempre denaro — un mercato in cui il bilancio risulta pari è un mercato in cui un ciclo di compra-vendi-compra-vendi stampa soldi.

Al client non viene mai chiesto quanto valga una moneta e non invia mai un prezzo. Ogni scrittura su un portafoglio è dietro un lock, perché leggere le posizioni, spostare il denaro e riscriverle sono tre passaggi con uno yield tra l’uno e l’altro, e due ordini nello stesso tick venderebbero altrimenti le stesse monete.


exports.mic_phone:Coins() --> every coin, with price, change and history
exports.mic_phone:CoinPrice('santo') --> 42137.55, in money
exports.mic_phone:GetCrypto(src, 'santo') --> 0.4218
exports.mic_phone:GetCryptoValue(src) --> the whole portfolio, in money
exports.mic_phone:AddCrypto(src, 'omen', 12.5) --> a hack that pays in coin, a mining script
exports.mic_phone:RemoveCrypto(src, 'omen', 12.5) --> false when they did not have it, and nothing moves
exports.mic_phone:SetCoinPrice('omen', 0.4) --> move the market for a story

RemoveCrypto rifiuta invece di andare in negativo, quindi la sua risposta è anche erano in grado di pagare — che è la domanda che un negozio che vende qualcosa in monete si pone davvero:

if exports.mic_phone:RemoveCrypto(src, 'omen', price) then giveThem(thing) end