Communitygithub.com

IAmCosmin-YT/emotion-factory-devlog-shorts

Construa, corrija e promova o jogo Roblox Emotion Tycoon via Studio MCP e Blender: suas regras de estilo próprias, IDs de assets e passes, pegadinhas conhecidas e a receita automatizada de vídeo promocional.

O que é emotion-factory-devlog-shorts?

Esta skill serve como guia de trabalho completo para o desenvolvimento, manutenção e promoção do jogo Roblox *Emotion Tycoon* (grupo "Squashed Studios", ID 706695552). Ela contém as regras de estilo do usuário (um desenvolvedor solo), IDs de assets feitos à mão, instruções de fluxo de trabalho com Studio MCP e uma receita passo a passo totalmente automatizada para criar vídeos promocionais. A skill garante que cada alteração respeite as preferências do usuário — sem uso de elementos visuais com aparência de IA —, priorizando o uso de assets próprios e mantendo a consistência com janelas e HUD já aprovados. Ela documenta extensivamente a estrutura do código do jogo (Config, Main, ClientModules), IDs de passes e produtos (ex.: HypeQueen 2026442663), IDs de assets (ícones, partículas, pisos) e pegadinhas conhecidas, como a limitação de registradores no módulo UI ou o espelhamento em X na importação FBX. A receita de vídeo promocional descreve aprovações únicas, configuração de estado de vitrine, uma função "Director" no cliente para movimentação de câmera e gravação de clipes com atalhos de teclado, garantindo que o usuário seja lembrado de salvar seu arquivo .blend do Blender.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/IAmCosmin-YT/emotion-factory-devlog-shorts/tree/HEAD/extracted_skills/emotion-tycoon-dev/emotion-tycoon-dev

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Emotion Tycoon — acordo de trabalho e guia de jogo

Use isto sempre que o usuário mencionar Emotion Tycoon, suas árvores, trabalhadores, despejadores, reforços, eventos, andares, slots de salvamento, passes de jogo, invasões, códigos, o painel de administrador, ou pedir ícones, partículas, interface, modelos, miniaturas ou um vídeo promocional para ele — mesmo que descreva apenas um sintoma ("a árvore está travada", "as partículas parecem pequenas", "estou preso com $0").

O usuário é um desenvolvedor Roblox solo (grupo "Squashed Studios", id 706695552) que desenha à mão grande parte da arte e é exigente com qualquer coisa que pareça "vibecoded" ou gerada por IA. Tudo abaixo vem das próprias correções dele; trate como o estilo pessoal dele, não como sugestão. Ele costuma enviar longas rajadas de solicitações em voz: transforme cada rajada em uma lista de tarefas, corrija primeiro os bugs rápidos e responda cada item no relatório final (incluindo aqueles que você decidiu não fazer).

As regras fixas do usuário

  • Respeite as edições dele. Nunca sobrescreva alterações de modelo/interface que o usuário fez manualmente. Leia antes de escrever.
  • Sem interface com aparência de IA. Sem tags/emblemas de texto ("PASS", "NEW", "HOT"), sem pílulas gradientes brilhantes coladas nas coisas, sem ícones sobrepostos a campos de texto, sem linhas de texto flutuante explicando coisas. Diferencie as coisas por layout, estilo de contorno, cor ou agrupamento.
  • Novas janelas: clone uma janela que o usuário já aprovou (layout de duas colunas HUD.FriendModal, RebirthModal, OfflineModal) e troque o conteúdo, em vez de compor uma do zero. Uma janela feita do zero foi rejeitada como "visivelmente feita com IA". Campos de texto = caixa branca rebaixada com contorno escuro de 3px, texto escuro.
  • Números que o jogador possui parecem com a barra de dinheiro. Ex.: Raid Tokens = um clone de HUD.Cash ao lado com o ícone de token, hover (PC) / toque (celular) para uma dica de ferramenta. Sempre faça a informação de hover funcionar no celular (toque alterna).
  • Textura de stud real para fundos de interface: rbxassetid://100839690373358 (nunca uma procedural).
  • Use primeiro os assets feitos à mão (IDs abaixo). Não gere substitutos quando um deles existir.
  • Termine toda resposta que adicionar visuais com uma pequena lista de assets que o usuário poderia desenhar para substituir placeholders.
  • Glyph de Robux é o caractere de uso privado U+E002.
  • Não alucine. Pesquise na web / leia o código quando estiver inseguro sobre uma API ou ID.
  • Não abra uma segunda instância do Roblox Studio. O uso de computador é apenas para coisas que o MCP não pode fazer (importação FBX, Game Bar).
  • Nunca salve o .blend deles (C:\Users\cosul\Desktop\models_for_roblox\RobloxTycoon.blend); lembre-os de Ctrl+S.
  • Modelos 3D no Blender: baseados em modificadores, low-poly limpo, sombreamento plano; engrenagens no estilo do kit /roblox-r6-armor.
  • Sem recompensas diárias (eles preferem ganhos offline/AFK). Mantenha hexágonos de "?" por toda parte — quando um "?" se tornar um nó real, adicione novos hexágonos de "?" além dele.
  • Decidido / rejeitado (não repropor): proteção de base, pular rebirth, "Upgrade All" (apenas um botão de Max por NPC), uma loja de cosméticos, uma árvore de Troféus (Raid Tokens permanecem; ganhos pelo top 3 diário em Rebirths + a cada 5 rebirths). Weather Machine = exatamente 1 por terreno. Tutorial de Sinergia: em espera até que peçam.
  • Nunca deixe um jogador ficir completamente preso. Qualquer alteração em custos/árvores/rebirth deve manter um caminho para uma linha funcional (Main tem lineCost + reabastecimento rescue e um guarda da Cash-Tree — mantenha-os funcionando).

Fluxo de trabalho com Studio MCP

  • O ID do Studio muda por sessão — obtenha-o com list_roblox_studios.
  • Editar datamodel está indisponível no modo Play. O usuário testa ele mesmo: verifique get_studio_state; enquanto ele joga, você ainda pode LER scripts através do datamodel do Server (game.ServerScriptService.Main.Source). Aguarde (pesquise a cada poucos minutos); pare o teste dele apenas se ele estiver ocioso por minutos, e avise. Se ele pedir "verifique se as coisas foram salvas": edições persistem apenas quando feitas em Edit.
  • execute_luau no Client/Server tem seu próprio cache de require: require(module) lá é uma cópia nova, não a que está em execução (monkey-patching não faz nada). Alcance o estado em execução através de remotes do jogo (ReplicatedStorage.Remotes.Request:InvokeServer(action, ...), incluindo operações admin) ou instâncias/atributos. Para testar edições no Config em modo Edit, require(Config:Clone()).
  • Edições de script: ScriptEditorService:UpdateSourceAsync via execute_luau, encontrar/substituir exato com string.find(src, old, 1, true) e afirme que a correspondência é única. Use strings [==[ ]==] (o código frequentemente contém ]]).
  • A função start do módulo UI está no limite de 200 registradores locais do Luau ("Out of local registers"). Nunca adicione novos locais de nível superior lá: coloque novos estados/funções na tabela compartilhada ext ou dentro de blocos do ... end.
  • Para testar um estado raro (ex.: uma linha cheia), altere temporariamente uma constante do Config em Edit, faça o playtest e depois reverta.
  • Verifique com playtest usando ET_NoSave: start_stop_play, screen_capture, get_console_output. user_mouse_input x/y são coordenadas da GUI/tela: para um ponto no mundo use WorldToScreenPoint (= viewport y - 58); para UI use AbsolutePosition. Screenshots são escaladas (~0.955 da viewport 2011px). textInput em uma TextBox não a alcança — teste fluxos de resgate através do remote.
  • DataStores no Studio são as REAIS (acesso à API ativo): qualquer coisa que você escrever durante o teste (ex.: códigos de teste) deve ser apagada depois.

Mapa do jogo (onde as coisas estão)

  • ReplicatedStorage.Shared.Config — toda a sintonia: Items, Employees, Perks, Materials, Events, Robux, RobuxClusters, Themes, TreePaths/TreeLayout/RebirthLayout, AURA (quem buffa/debuffa quais tiles), CAPACITY_PERKS, MAX_LIVE_CUBES (por linha de despejador) / MAX_PLOT_CUBES, funções da Weather Machine (weatherChance, weatherUpgradeCost = parcela do próximo rebirth dobrada por nível, weatherRoll, weatherOwned), definições de Raid + tokens.
  • ReplicatedStorage.Shared.Grid — matemática das células (20x20 tiles, TILE=4). Rotação r: 0=-Z 1=+X 2=+Z 3=-X.
  • ReplicatedStorage.Shared.VFX — predefinições de partículas; VFX.burst faz um emissor por cor.
  • ServerScriptService.Main — sessões, handlers.* para cada ação remota (incl. batch para construção por arrasto, upgradeWeather, redeemCode, buyRaidToken), dados da Weather Machine (data.wm, Factory.weatherHook), resgate, loop Heartbeat. pushState pode ser retido (s.holdPush) durante um lote.
  • ServerScriptService.Server.{Factory,Plots,Shop,Events,DataService,Leaderboards,Prices,Raids,Admin,Codes}. Factory: contagens de cubos por linha (session.lineCount, uncount), lineCap, atributo LineFull em despejadores, verificação de bloqueador em lotes (mantenha O(n), linhas podem conter 100 cubos), Factory.hold para reconstruções em lote. Admin: operações ops só para admins (presentear online/offline/cross-server, eventos, anunciar, códigos). Codes: DataStore ET_Codes_v1 (chave codes + uses_<CODE>), tipos cash/scaled/rp/token/boost, datas, usos máximos (0 = sem limite).
  • StarterPlayerScripts.ClientModules.{UI,Build,Cubes,Life,Boards,Aura,Pop} — UI = HUD, árvores, modais, painel de inspeção; Build = fantasma, colocação por arrasto/lote com placeholders transparentes, segurar direita para deletar, mover; Aura = os quadrados verdes/vermelhos/amarelos dos tiles. UI do painel de admin: ServerStorage.AdminGui (+ AdminClient), clonado apenas no PlayerGui dos admins.
  • Os canvases das árvores são nós autorados em StarterGui.TreeGui.Window.Pan.{Canvas,RebirthCanvas,RobuxCanvas}.Nodes (atributos Q, R, Ring, Path, Mystery). Um novo nó = renomear/ converter um nó "?" naquela célula (remover Mystery, definir Path) + adicionar o id à Config.TreePaths/RebirthLayout. Posição: cash x = 0.4654 + 0.0691q, y = 0.6062 + 0.0850r + 0.0425q; rebirth x = 0.5 + 0.1230q, y = 0.5 + 0.1300r + 0.0650q.
  • Remotes de desenvolvimento apenas no Studio: devEvent, devCash, devRobux, devRobuxRemove, devRobuxReset, devOffline, devTutorial. Remotes de admin (admin, op, ...) funcionam no Studio para o dono (presentear rp/cash/token para si mesmo).
  • Nunca teste no save real por acidente. workspace:SetAttribute("ET_NoSave", true) em Edit antes de um playtest descartável, remova depois.

Pegadinhas conhecidas (cada uma nos pegou uma vez)

  • Erros de lugar de NPC Premium deixavam tiles "fantasmas" → place constrói dentro de pcall com reversão; mantenha esse padrão.
  • PlayerAdded gera (Shop.checkPasses, cargas do DataStore): após cada espera, verifique se a sessão ainda é atual, ou um jogador que saiu tem seu terreno reconstruído sem dono. PlayerRemoving libera o terreno ANTES de salvar.
  • Um UIGradient multiplica BackgroundColor3 — um quadro teal clonado com um gradiente roxo renderiza azul marinho. Defina o fundo para branco ao recolorir através do gradiente.
  • A barra de dinheiro tem um Bump UIScale: qualquer coisa posicionada a partir de seu AbsoluteSize deve dividir por essa escala.
  • Botão direito do mouse no Build = segurar para deletar; panorâmica da câmera é botão do meio / WASD.
  • O início do arrasto da árvore deve usar UIS.InputBegan (pressionamentos de botão nunca alcançam win.InputBegan).
  • Texturas de tema de andar vão por cima do andar (instância Texture); nunca mude o Material do andar.
  • Folhas de partículas do usuário são flipbooks 2x2 com formas pequenas → escale o Size ~2-2.5x; multicolor = múltiplos emissores.
  • Texturas recém-carregadas podem parecer borradas por um tempo (processamento do Roblox).
  • Despejadores de alto nível precisam de muito trabalho por estágio; linhas fracas vendem por ~$1 (valor do cubo vazio).
  • Imagens: upload_image funciona a partir de um servidor http local (ex.: http://127.0.0.1:8765/<file>).
  • Pipeline FBX: exporte do Blender com use_selection=True, object_types={'MESH'}, apply_unit_scale=True, mesh_smooth_type='FACE' para %LOCALAPPDATA%\Temp\et_export\; importe usando o computador (Asset Manager → Import → digite o caminho → Import), cai em workspace.<FbxName>. O importador espelha X: coloque peças com CFrame.new(-x_b, z_b, y_b) a partir das coordenadas do Blender. Pré-visualizações de render: cena temporária "ET_Preview" → imagens em estágios.
  • Links externos no jogo não são permitidos: Discord/grupo vão nas Social Links da página do jogo; no jogo apenas um botão GroupService:PromptJoinAsync(groupId) "Join group".

Layout de monetização (atual)

  • Loja de Robux = ilhas separadas entre as quais você navega (Config.RobuxClusters: Game Passes, Premium Workers, Cash, Boosts & Events). Adicionar um passe = adicione seu id aos items de uma ilha + adicione um hexágono em RobuxCanvas.Nodes.
  • Passes e produtos são diferenciados pela ilha e animação de contorno, nunca por rótulos.
  • Os preços são obtidos ao vivo (Server.Prices → atributo RobuxPrices de ReplicatedStorage).
  • IDs de Passes: HypeQueen 2026442663, DiamondWorker 2026394625, PassMidas 2025590666, PassLuck 2025848628, PassDrop 2025464639, PassVIP 2026922652, GoldenRobot 2025374681, LayoutSlot3 2026652648, LayoutSlot4 2026010654, Pass2x 2027138654.
  • IDs de Produtos: OfflineDouble 3717787338, BuyBlood 3717787331, BuyMeteor 3717787319, BuyThunder 3717787307, BuyGolden 3717787299, BuyRain 3717787292, Boost3x 3717787279, Boost2x 3717787271, CashVault 3717787265, CashBag 3717787258, CashPouch 3717787249, RaidPortal 3717992673, RaidSiphon 3717992684, RaidJunk 3717992698, RaidGloom 3717992711.
  • Andares são recompensas gratuitas de rebirth escolhidas em Settings. Salvamentos da fábrica: 2 slots gratuitos, slots 3–4 são passes.
  • Jogadores avançados têm sextilhões e 30+ rebirths: precifique conteúdo tardio como uma parcela de Config.rebirthCost (escala para sempre) em vez de um número fixo; códigos padrão para "% do próximo rebirth" pela mesma razão.

Os assets do usuário

Ícones: moneyboost3 105474801162476, moneybag 79223369019300, goldenhour 71253971041485, thunderstorm 106415624997312, moneyvault 114456854945836, moneyboost2 88658276906960, meteor 110778083355096, rain 112383447314124, coinpouch 115820638833486, faster_hoppers 85633043652627, x2coins 100838792374750, crown 89385624200044, midas_touch 108493524899149, bloodmoon_2 79508274280864, moon2 97357609209998, hammer 89643796486723, floppydisk 127943322640811, star 119578070875725, zzz 130218032337173, frost 109343690555707, raid_token 112843349186486, weather_machine 112719886234229, conveyor_full 79879060986006 (placa de linha cheia), backpack_cubes 84466301181838 / crate_cubes 108346564955404 / chest_cubes 131689000211065 (perks de capacidade).

Andares: ocean_lights 138556700370722, holy 105026190310831, pink 83692624195325, pink_green 136148045549462, redx 124121848293779.

Partículas (folhas 2x2): anger 97456853400445, happy_love 83569352224420, bolts 125645422252125, steam 115369146046246, confetti 108450399478144, swirls_sparkles 131593243447656, waterdrops 125415103859140, happy_confetti 103582469151146, money 128140468436252, music_notes 92525208060800, ice_shards 123359736235888.

workspace["Simulator Icon Pack"] (liste seus Decals para IDs): úteis — Down arrow 17368169201, Codes 17368032566, MultiGifts 15402969720, Expand 17368183719, Click 17260727409, Rocket 16670799841, Box 17368122337, Crate 17368402884. CubePets 17368391613 é um CACHORRO — nunca use para coisas que não são pets.

Receita de vídeo promocional (totalmente automatizada, sem cliques do usuário após as primeiras aprovações)

  1. Aprovações uma vez: acesso ao computador para Roblox Studio + Game Bar com combinações de teclas do sistema, e acesso à pasta ~/Videos (Game Bar salva em Videos\Captures).
  2. Estado de vitrine: defina ET_NoSave, inicie o play, então via remote Request: devCash, desbloqueie todos os nós da cash-tree (loop unlock até não haver progresso), limpe o layout, construa 4 linhas (despejador em x=1 r=1, correias x=2..17, vendedor x=18; trabalhadores em ambos os lados voltados para a correia). Use Dropper2–4 para que os cubos realmente encham e vendam por números reais.
  3. Diretor no cliente: BindToRenderStep em Camera+5 forçando CameraType=Scriptable e um _G.DirCF; auxiliares para Hold/Move/Orbit; alterne ScreenGuis do HUD (não TreeGui). Célula→mundo: X = -134 + 4x, Z = -96 + 4z para Plot1. Quadro de pré-visualização com screen_capture antes de gravar.
  4. Gravação: foque o Studio, win+alt+r → execute a tomada (execute_luau, < 60 s) → win+alt+r. Pare eventos naturais com devEvent("") entre as tomadas. Dispare eventos com devEvent("Thunderstorm" | "MeteorShower" | "BloodMoon" | "CashRain" | "GoldenHour" | "Frost"). Verifique os clipes com uma folha de contato com carimbo de data/hora e regrave os ruins.
  5. ...

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

IAmCosmin-YT/emotion-factory-devlog-shorts

>- Use this skill when editing, reviewing, scripting, or programmatically generating high-retention YouTube Shorts, TikTok devlogs, and gaming promo videos in the style of Vedinad, Danidev, c dev, Wishbone Games, SSundee, or wynge. Built from a frame-by-frame forensic analysis of 81 videos across all 6 creator corpora (all 28 Vedinad Shorts + 2 devlogs, 15 Danidev devlogs/clips/shorts, 10 Wishbone Games shorts/devlogs, 14 c dev shorts/devlogs, 5 SSundee videos, and 7 viral reference shorts). Covers 60fps OpenCV/PIL frame-by-frame motion-graphics compositing, word-by-word animated comment zoom hooks, black-screen deadpan text slams, 3D perspective-tilted code/UI cards, animated stat counters, rarity ladders, browser-based human voiceover generation, and hyper-compressed audio mastering.

IAmCosmin-YT/emotion-factory-devlog-shorts

Create and revise gaming devlogs and Shorts using visually inspected creator references, natural narration, real gameplay, downloaded video effects, sourced SFX, smooth reframing, and verified exports. Use for scriptwriting, recording, asset sourcing, editing, and video critique.

IAmCosmin-YT/emotion-factory-devlog-shorts

Make vertical TikTok / YouTube Shorts promo videos for a Roblox game, end to end, by code — analyze reference shorts, record cinematic fly-throughs and real gameplay straight out of Roblox Studio, cut a kinetic motion-graphics explainer ("I let AI build my update") or a streamer-reaction meme edit (iShowSpeed-style facecam over gameplay), mix royalty-free Pixabay SFX + music with the drop on the reveal, and render covers/thumbnails. Use this whenever the user wants a short, TikTok, Reel, YouTube Short, promo, trailer, edit, meme video, thumbnail or cover for their Roblox game, asks to "make a video" about their game or update, wants Studio footage/gameplay recorded, or shares reference shorts to copy the style of — even if they never say "skill" or name a format.

Habilidades Relacionadas