ChungChungus — Sistema de Golem Profundo (Design)
Design consolidado via workflow ultracode (5 designers + 3 críticos adversariais + síntese). Constrói EM CIMA do sistema atual (drop do mining → monta na base → renda passiva → roubo PVP), sem jogar nada fora. Números iniciais, tunáveis no
GameConfig. Estado do jogo: ver~/.claude/projects/.../memory/roblox-mining-sim.md.
Status de implementação — SISTEMA COMPLETO (A+B+C+D)
- Fase A — ✅ CONSTRUÍDA. Golem rico + float + migração.
GameConfig(tabelas v2),GolemData(novo),GolemBuilder(build(golem)),MiningServer(migração saveVersion 1→2, drop rico, income upkeep, carry/mount/steal rico). - Fase B — ✅ CONSTRUÍDA. Breeding genética + 15 mutações secretas.
GolemSecretSpecies/GolemMutations/Config.Breed,GolemData(mutationMult,origin, resolvers puros),BreedingService(herança tende-ao-pior, serverSeed não-replicado, breeds persistidos timer absoluto, InstantHatch cap 10/dia),BreedingGui. N=2000 validado. - Fase C — ✅ CONSTRUÍDA. Marketplace cross-server anti-dupe.
MarketCore(protocolo puro injetável),MarketService(MemoryStore vitrine + EscrowSnapshot/vendedor + Payout/login + reaper), hooks em MiningServer (pendingList crash-safe),MarketGui. 95/95 asserts (corrida, offline, crash, list-vs-steal, idempotência). - Fase D — ✅ CONSTRUÍDA. Dex + Hunter's Luck + loops + leaderboards.
DexCore(matemática pura),DexService(snapshot + 2 leaderboards OrderedDataStore),QuestService(diárias/semanais UTC, claim idempotente),DexGui/QuestGui,MiningServernamespaceDexD(buff income/rebirth, Hunter's Luck best-of-2, quest hooks, Genesis announce). Anti alt-feed PROVADO (compra de market não dá buff).
⚠️ Pendências de validação runtime (Fase D)
start_stop_play do MCP travou na sessão (gotcha conhecido — destrava com Play manual). NÃO confirmados em Play: leaderboards populando/ordenando, Genesis announce em runtime, boot limpo end-to-end. Lógica validada por compile/simulação. Recomendado: Play manual + QA das GUIs (Dex/Quest toggles canto inf-dir) + console [DEX]/[QUEST]/[GOLEM], OU auditoria de integração runtime após destravar o Studio.
⚠️ Tech-debt
MiningServer bateu no limite Luau de 200 locais por escopo (resolvido com namespace DexD). Script grande/frágil — considerar split em módulos numa próxima.
Pendências de deploy (user)
Save/Publish o place · ligar Studio Access to API Services (DataStore/OrderedDataStore) · publicar o jogo (MemoryStore da vitrine só roda publicado).
GOTCHA path vault: MCP
write_notejá prefixabrain/— passar path RELATIVO a brain/ (projects/..., nãobrain/projects/). GOTCHA sync: writes/deletes via MCP só aparecem no clone local após o Stop hook (agents em sub-tarefa leem o clone, podem ver versão defasada dentro do mesmo turno).
Decisões travadas pelo user
- Escopo: expandir o sistema de golem atual (golem vira o meta profundo; mining = faucet).
- Float: afeta stats E visual; "float entre raridades" via
nearTierBonus35% (moderado). - Breeding: genética + mutação; raridade tende-ao-pior (anti-impressora); pais NÃO consumidos.
- Comércio: marketplace instant-buy preço fixo, cross-server, escrow + taxa 10%.
- Escala: 10 raridades × 18 espécies base × 15 mutações secretas.
- Moeda: única (cash); player compra cash com Robux (CashPack). Sem moeda premium.
- Monetização: Hunter's Luck + Breeder's Crest (gamepasses) + Instant Hatch + CashPack. SEM P2W em sorte de mutação/float; SEM gamepass de taxa menor.
- Anti-inflação: upkeep de pedestal 8%. Float drop: viés forte (~0.21). Cap inventário: 200.
- Dex buff: só por golem produzido (mine/breed); comprado não dá buff (anti alt-feed).
- Genesis (topo): leaderboard dedicado + announce global; sem aura de servidor.
- Preços Robux: 599 / 499 / 35; sem bundle por ora.
Regra de ouro técnica: um golem existe em exatamente um lugar por vez (anti-dupe). Regra econômica: Robux compra volume/velocidade, nunca qualidade.
1. Visão geral
O golem deixa de ser um int de tier e vira um objeto rico (uid estável, espécie, raridade, float 0–1, genealogia, origin). Mining = faucet; golem = meta profundo via float (stats E visual, faixas que se sobrepõem), breeding (genética + mutação → secretas) e marketplace cross-server (escrow + taxa = sink, anti-dupe). Renda passiva, roubo PVP e monetização existentes permanecem.
2. Raridade + Float
Ladder (curva ~5×, income legado 1:1)
| # | id | Nome | Cor | $/s base | peso drop | drop natural? |
|---|---|---|---|---|---|---|
| 1 | common |
Comum | #9AA0A6 |
1 | 1000 | sim |
| 2 | uncommon |
Incomum | #4CAF50 |
6 | 420 | sim |
| 3 | rare |
Raro | #2F7BE5 |
30 | 150 | sim |
| 4 | epic |
Épico | #9B59B6 |
150 | 48 | sim |
| 5 | legendary |
Lendário | #F2B233 |
750 | 14 | sim (raro) |
| 6 | mythic |
Mítico | #E8554E |
3 800 | 4.0 | só Z4/eventos |
| 7 | ancient |
Ancião | #16C0A8 |
19 000 | — | só breeding |
| 8 | relic |
Relíquia | #FF7A2F |
95 000 | — | só breeding |
| 9 | celestial |
Celestial | #62E8FF |
480 000 | — | só breeding |
| 10 | primordial |
Primordial | arco-íris | 2 400 000 | — | só breeding (endgame) |
Tiers atuais (1..5) mapeiam 1:1. Teto de drop = Mítico.
Float
float ∈ [0,1] imutável server-only, persistido int 0..10000.
floatDrop = min(rng:NextNumber(), rng:NextNumber(), rng:NextNumber()) -- média ~0.21
floatChild = clamp01( (fA+fB)/2 + (rng:NextNumber()-rng:NextNumber()) * 0.12 )
rng = Random.new(serverSeed)
~70% dos drops < 0.35; float ≥ 0.90 ~0.1%. Não-comprável.
Power score (income E preço da MESMA função)
floatMult(f) = 0.80 + 0.50 * f
nearTierBonus(g): se f>=0.92: (rarityIncome[r+1]-rarityIncome[r]) * (f-0.92)/0.08 * 0.35 ; senão 0
baseIncome(g) = rarityIncome[r] * floatMult(f) + nearTierBonus(g)
getPowerScore(g) = baseIncome(g) * speciesMult[species] * mutationMult(g)
incomePerSec(g) = getPowerScore(g) * rebirthMult * dexIncomeMult -- net upkeep 8% no pedestal
fairPriceAnchor = getPowerScore(g) * PRICE_PER_PS * rarityScarcity[r] -- piso interno
Derivados NUNCA persistidos.
"Float entre raridades" (tabela corrigida = fórmula)
| Raridade | base | @0.05 | @0.50 | @0.95 (nearTier 35%) |
|---|---|---|---|---|
| Raro (30) | 30 | 24.75 | 31.5 | 54.0 |
| Épico (150) | 150 | 123.75 | 157.5 | 270.0 |
| Lendário (750) | 750 | 618.75 | 787.5 | 1356.6 |
Moderado 35%: Raro 0.95 → 54/s encosta no Épico baixo mas não cruza Épico médio. O overlap real é o pricing contínuo via getPowerScore.
Float → visual (5 bandas)
<0.20 Rústico, <0.45 Polido, <0.72 Cromado, <0.92 Prismático, >=0.92 Imaculado. Raridade=cor+cristais; float=acabamento. Brilho escala com powerScore. Cap 4 PointLights/base, resto Neon; shimmer = 1 loop central; handle :Destroy() anti-leak. Display = palavra; float exato só no inspect.
3. Espécies + Breeding
18 base (dropam)
stone/magma/frost/storm/void/crystal/verdant/sand/obsidian (mult 1.00-1.08, fert em void/verdant/fungal/coral) | tide/toxic/iron/crimson/aurora/amber/fungal/magnet/coral. Uniforme ~5.55%, obsidian/void/aurora 0.4×.
15 secretas (só breeding)
steam(magma×tide/frost 1.10) · ooze(toxic×verdant 1.08) · darkbolt(storm×void 1.14) · rime(frost×void 1.12) · emberwing(magma×aurora 1.16) · stained(crystal×aurora 1.13) · lodestone(iron×magnet 1.15) · tarheart(crimson×void 1.14) · livecoral(coral×verdant 1.10) · fossil(amber×iron 1.18, gen≥3) · astralcap(fungal×aurora 1.17) · quicksilver(iron×tide 1.20, float≥0.80) · livingglass(obsidian×* 1.22, rarity≥6) · eclipse(void×aurora 1.30, rarity≥7 float≥0.85, +2 raridade) · genesis(eclipse×eclipse 1.30, rarity≥9, +2 raridade +10%).
Herança
serverSeed=hash(uidA,uidB,os.clock_hi,secretNonce) (nonce nunca replicado).
hi=max(rA,rB); lo=min ; iguais→garante hi ; desiguais→40% hi / 60% lo (TENDE AO PIOR)
upChance = 0.08 + avgFloat*0.12 + (par puro?0.10) + min(pity*0.02,0.20) -- teto 50%
mutChance = 0.04 + avgFloat*0.05 + fert(A)+fert(B) + rarityBonus + min(mutPity*0.01,0.10)
receita casa → secreto (+raridade) ; senão species base nova ; senão 50/50 herda pai
garantia dura: 41º breed sem mutação → mutChance=1.0
celestial 0.90+ × celestial 0.90+ → ~10% Primordial
Custo / cooldown / slots
breedCost = 2500 * 3.4^max(r) * (mesma espécie?1.0:1.5) * (1 + 0.6*avgFloat)
breedTime = clamp(300 * rarityTimeMult[max(r)], 60, 86400) ; rarityTimeMult={1,1.4,2,3,4.5,7,11,18,30,48}
parentCooldown = breedTime*1.5 ; freeSlots=1 ; crestSlots=3 ; crestCooldownCut=0.30
Pais NÃO consumidos. Genealogia: parentSnapshot 2 níveis embutido (zero leitura de save alheio).
4. Economia + Marketplace
Faucet/Sink
Faucets: mining, golems passivos, eventos, CashPack. Sinks: taxa mercado 10% (destruída), custo breeding, upkeep pedestal 8% da renda (anti-inflação), dust/upgrades.
Marketplace: instant-buy preço fixo
Pricing: fairPriceAnchor piso interno nunca exibido; mostrado = mediana±quartis wash-filtered (≥8 contas distintas). Fee 10%; relistCooldown 6h; imposto progressivo 10/20/35% se <24h; máx 10 listagens/conta; TTL 7d.
Protocolo anti-dupe (§4.4) — CONSTRUÍDO
Vitrine = MemoryStore SortedMap (%013d:uid). Custódia = EscrowSnapshot_<seller> (1/vendedor). Pagamento = Payout_<seller> no login. Idempotência = processedTx + TxLedger. Entrega = pending-claim + IncomingGolems.
- LIST: profile remove+pendingList{txToken} → escrow c/ txToken → commit+publica. Reaper: tombstone
aborted→ devolve. - BUY: corrida decidida DENTRO do UpdateAsync do escrow por uid (DataStore serializa por chave = 1 vencedor); debita comprador (processedTx-guard); Payout idempotente; doBuy limpa escrow pós-delivery; reaper varre MemoryStore (nunca ListKeysAsync).
- PVP: listar DESMONTA (imune a roubo). LIST vs STEAL: CAS no
stateno profile do dono.
5. Data Model + Arquitetura
Golem = { uid:GUID, species, rarity, float(int 0..10000), generation, parentA?, parentB?,
parentSnapshot, mutations?, serverSeed, createdAt, origin(mine/breed/legacy),
state(1WALLET 2MOUNTED 3LISTED 4ESCROW 5CARRYING 6STOLEN_OUT), pedestalId?, lockToken? }
-- derivados recomputados, nunca persistidos. ~90-130B/golem; cap 200 → ~26KB.
Migração v1→2 lazy idempotente: monsters[int]→golems[uid], legado species=stone/float=4000 (0.40 → floatMult 1.0, income idêntico)/origin=legacy.
| Dado | Store |
|---|---|
| Carteira (posse canônica) | profile DataStore golems |
| Vitrine viva | MemoryStore SortedMap LiveListings |
| Custódia | EscrowSnapshot_<seller> (1/vendedor) |
| Pagamento offline | Payout_<userId> |
| Entrega pendente | IncomingGolems_<userId> |
| Idempotência | processedTx + TxLedger_<userId> |
| Leaderboards | OrderedDataStore (completion + Genesis) |
Módulos construídos: GolemData (A), GolemBuilder (A), BreedingService (B), MarketCore+MarketService (C), DexCore+DexService+QuestService (D). Alterados: MiningServer (drop/income/hooks breeding+market+dex, namespace DexD), GameConfig, GUIs (Breeding/Market/Dex/Quest).
6. Monetização + Retenção
| Produto | Tipo | R$ | Efeito | Qualidade? |
|---|---|---|---|---|
| Golem Hunter's Luck | Gamepass | 599 | drop 4%→7% + best-of-2 tier (cap Mítico) | Não |
| Breeder's Crest | Gamepass | 499 | slots 1→3, cooldown −30% | Não |
| Instant Hatch | Devproduct | 35 (x5:149) | token guardável, cap 10/dia | Não |
| Cash Pack | Devproduct | existente | liquidez | Não |
Golem-Dex: +1%/espécie cap +18% income + +5% rebirthMult/raridade completa (18 base), só origin mine/breed (market = só "visto", sem buff — anti alt-feed). Marcos/badges; Chungmaster 100% cosmético. Quests diárias/semanais (reset UTC, claim idempotente). Leaderboards completion + Genesis. Genesis/Primordial → announce global.
7. Tunables (resumo)
rarityIncome={1,6,30,150,750,3800,19000,95000,480000,2400000} ; dropWeight={1000,420,150,48,14,4.0}
floatMult=0.80+0.50f ; floatDropDist=min(r1,r2,r3) ; nearTierBonus=35%@f>=0.92 ; finishBands={0.20,0.45,0.72,0.92}
BREED_BASE=2500 ; RARITY_FACTOR=3.4 ; crossSpeciesPenalty=1.5 ; floatCostBonus=0.6 ; floatNoise=0.12
rarityTimeMult={1,1.4,2,3,4.5,7,11,18,30,48} ; parentCooldownMult=1.5 ; freeSlots=1 ; crestSlots=3 ; crestCooldownCut=0.30
baseUp=0.08 ; floatUpBonus=0.12 ; pairBonus=0.10 ; pity 0.02/0.20 ; baseMut=0.04 ; mutFloatBonus=0.05 ; mutPity 0.01/0.10 ; hardMutGuarantee=41 ; celestialPairPrimordial=0.10
marketFee=0.10 ; relistCooldown=6h ; progressiveTax={10,20,35<24h} ; maxListings=10 ; listTTL=7d ; escrowTimeout=60s
PRICE_PER_PS=1800 ; rarityScarcity={1,1,1.1,1.25,1.5,2,2.6,3.4,4.5,6} ; salesHistoryMinDistinct=8
pedestalUpkeep=0.08 ; golemInventoryCap=200 ; MonsterChance=0.04 ; GolemLuckChance=0.07 ; GolemLuckBestOf=2
HuntersLuck=599 ; BreedersCrest=499 ; InstantHatch=35 cap 10/dia ; dexBuffOrigin={mine,breed}
DexIncome=+1%/espécie cap 18% ; DexRebirth=+5%/raridade completa
uid=GUID ; float=int 0..10000 ; saveVersion=2 ; floatMigracaoLegado=4000 ; RNG=Random.new(serverSeed)
8. Rollout — TODAS as fases ✅
- Fase A ✅ golem rico + float + migração. Fase B ✅ breeding + 15 secretas. Fase C ✅ marketplace anti-dupe (95/95). Fase D ✅ Dex + Hunter's Luck + loops + leaderboards (QA runtime em Play pendente — ver topo).