Configuration

Every Glitch option across its three config files — what a stream earns with the defaults, the app, money, tiers and earnings, the simulated audience and categories, and the simulated chat, emotes and chat lines.

Three files, all in escrow_ignore:

  • shared/config.lua: the app, money, tiers, earnings, limits and rate limits
  • shared/config/audience.lua: the simulated audience and the categories
  • shared/config/chat.lua: the simulated chat, emotes and fake usernames

Text players see lives in locales/en.json, including the simulated chat lines (sim.<pack>.<n>).

What a stream earns with the defaults

A one-hour stream at average interest, worked out with the same model the server runs:

TierTypical crowdAdsSimulated subsSimulated bitsTotal
Streamer10 viewers$179$22$30about $230
Affiliate32 viewers$711$71$259about $1,040
Partner64 viewers$1,787$205$536about $2,530

Real subs and cheers come on top, and are never capped. An exciting stream draws a bigger crowd than average; an idle one draws almost none and earns nothing while AFK.

shared/config.lua

OptionDefaultMeaning
Config.DebugfalseHas no effect in this version; leave it false
Config.App.idglitchThe app id on the phone, and the id to use in the phone's preinstalled apps. Leave it as glitch: the phone only serves the id declared in fxmanifest.lua
Config.App.color#12B872The icon colour where pictures are not shown
Config.App.iconBackgroundgreen gradient1 to 3 colours behind the icon picture (web/dist/icon.svg)
Config.App.order64Where the app sorts in the Store and on a new home screen; lower comes first
Config.Money.accountbankWhere viewers pay from and cash-outs land
Config.Money.subPrice250One month's subscription
Config.Money.subDays30Days a month lasts (real days)
Config.Money.maxMonthsAhead3How far ahead a viewer may pay
Config.Money.bitPrice1What one bit costs
Config.Money.cheers100, 500, 1000, 5000Bit amounts viewers can cheer
Config.Money.minCashout50The smallest cash-out
Config.Tierssee belowThe tiers, lowest first
Config.TierWindow5Recent paid streams averaged for a tier's viewer threshold
Config.Earnings.adPerViewerMinute0.3Ad revenue per viewer per minute, before the tier's multiplier
Config.Earnings.minStreamMinutes10Shorter streams earn nothing from the simulated audience
Config.Earnings.checkpointSeconds60How often a live stream's progress is saved
Config.SimSupport.followsPerViewerHour0.25Simulated follows per viewer per hour
Config.SimSupport.subsPerViewerHour0.015Simulated subs per viewer per hour
Config.SimSupport.cheersPerViewerHour0.04Simulated cheers per viewer per hour
Config.SimSupport.cheerBitslistBit amounts a simulated cheer picks from
Config.Limits.*Lengths (title, name, bio, chat, report note), list sizes, chat backlog, players per chat room, moderators per channel, the slow mode and timeout choices
Config.RateLimits.*Requests per player per kind: { burst, per milliseconds }. opened (3 per 10 s) covers taking a phone out, when Glitch checks which account that phone is on
Config.Notifications.livetrueTell followers when a channel goes live
Config.Notifications.supporttrueTell streamers about subs and cheers
Config.Notifications.liveFollowersMax300Followers told per go-live, most recent first
Config.Notifications.liveRepeatMinutes30A follower hears about one channel at most this often
Config.Report.reasonssix reasonsReport reasons on offer
Config.PoliceJobspolice jobsOn-duty jobs that count as police near a streamer

Simulated earnings are per tick, scaled by engagement (0.5 for a dull stream to 1.5 for a gripping one) and the tier.

Tiers

TierFollowersAvg viewersStreamsAd multiplierPlatform cutHourly capDaily cap
Streamer0001.050%$600$2,500
Affiliate50851.340%$1,500$6,000
Partner40030201.630%$3,000$12,000

A channel holds the highest tier whose three thresholds it meets. The caps limit what the simulated audience pays per rolling hour and day, counted per channel and per streaming character across all their channels; a cap of 0 means no cap, not no pay. To stop the simulated audience paying, set Config.Earnings.adPerViewerMinute, Config.SimSupport.subsPerViewerHour and Config.SimSupport.cheersPerViewerHour to 0. The cut applies to real and simulated subs and cheers.

shared/config/audience.lua

The short names in this table (baseViewers and the rest) are inside Config.Audience.

OptionDefaultMeaning
Config.Sim.tickSeconds3One pass per live stream this often
baseViewers3What a brand new channel draws
followerTurnout0.03Share of followers who tune in
popularityMax2000Popularity never goes past this
rampMinutes, rampStart8, 0.35How the crowd builds after going live
interestMin, interestMax0.35, 1.6Crowd multiplier at zero and full interest
interestTau, spikeTau20, 30Seconds for interest to follow events, and for an event's excitement to fade
growthPerMinute, decayPerMinute0.35, 0.45How fast the crowd closes the gap to its target, up and down
jitter0.04Random wobble per tick
consistencyPerDay, consistencyMax0.05, 0.3Crowd bonus for days streamed in the last week
idleGraceDays, idleDecayPerDay3, 0.03Popularity fades after this long offline
primeTime, lateNight18-23 ×1.15, 2-5 ×0.85In-game hours that draw more or fewer viewers
realWeight5One real viewer counts as this many simulated ones toward popularity
realPresenceBoost, realPresenceMax0.08, 1.0Each real viewer raises the simulated crowd's target, up to +100%
realGrowthBoost, realGrowthMax0.15, 2.0And makes it grow faster
learnRate0.25Share of the gap between popularity and a stream's audience learned per hour streamed
followBoost, subBoost2, 6Popularity per real follow and sub
chatBoost, chatBoostMax0.1, 30Popularity per real chat message, capped per stream
simFollowBoost0.05Popularity per simulated follow
afkSeconds, afkRadius180, 25Staying within this many metres with nothing happening this long is AFK, and an AFK stream earns nothing; the radius is also the one spot stillMinutes looks at
afkTargetMult, afkDecayMult0.1, 3An AFK stream aims for a tenth of its crowd, which leaves three times faster
loopWindow, loopPath, loopRadius, loopPenalty180, 250, 45, 0.55Going round in a small circle is repetitive and duller
stillMinutes, stillPenalty20, 0.6One spot this long bores the crowd unless real viewers are there
cellSize, newAreaSeconds250, 60Map cells; reaching one not seen this stream is a new area
fastSpeed, highSpeed38, 42m/s counted as flat out, and that sets chat off
crashDrop, crashBody13, 60A sudden stop with body damage, or this much damage at once, is a crash
damageDrop, actionSeconds8, 30Health lost in a tick that counts as action, and how long action lasts
nearRadius, nearCap, policeRadius35, 3, 60Company and police nearby
talkThreshold, hintMaxAge0.15, 30Share of time talking that counts, and how long a client hint lasts

Config.Spikes sets how much excitement each event adds (crash, death, damage, speed, police, new area).

Categories

Config.Categories lists each category's id, crowd multiplier mult, and weights: what makes that kind of stream interesting. Signals run 0 to 1: motion (speed), vehicle, social (players nearby), action (taking damage), danger (police or wanted), explore (new areas), talk (the microphone) and ambience (night, rain, storms, fog). The name players see is category.<id> in locales/en.json.

shared/config/chat.lua

The short names in this table (basePerMinute to emoteChance) are inside Config.Chat.

OptionDefaultMeaning
basePerMinute, perViewerPerMinute, maxPerMinute1.5, 0.45, 45Simulated messages per minute at average interest
maxPerTick5Most messages in one tick
reactionMax3Most lines reacting to one event
quietSeconds60Nothing happening this long starts the "quiet" lines
poolBase, poolPerViewer, poolMax10, 1.5, 120How many simulated chatters a stream has
subShare0.15Share of simulated chatters with a sub badge
emoteChance0.3Chance a line gets an emote added
Config.Emotes16 emotesThe emotes chat understands, written :name:
Config.SimNamestwo word listsSimulated usernames are one word from each
Config.ChatPacksemptyYour own extra lines, by pack

Adding chat lines

Add lines to a pack either in locales/en.json ("sim.crash.7": "...") or in Config.ChatPacks:

Config.ChatPacks = {
    crash = { 'my insurance agent felt that {streamer} :skull:' },
    cat_racing = { 'that apex was clean :fire:' },
}

Packs: ambient, greet, hype, talk, quiet, afk, loop, night, rain, crash, death, damage, speed, area, police, follow, sub, cheer, welcome, and one per category (cat_<id>). Lines may use {streamer}, {user}, {bits} and {category}.