Communitygithub.com

IAmCosmin-YT/emotion-factory-devlog-shorts

建構、修復並推廣 Roblox 遊戲 Emotion Tycoon,透過 Studio MCP 與 Blender 整合:你的個人規則、資產 ID、通行證 ID、已知陷阱,以及自動化宣傳影片製作食譜。

emotion-factory-devlog-shorts 是什麼?

這個 AI 代理技能(適用於 Claude Code、Cursor 或 Codex 等平台)旨在協助一名獨立 Roblox 開發者維護並推廣遊戲「Emotion Tycoon」。它內建一套完整的「工作協議與劇本」,涵蓋遊戲的配置檔、腳本編輯、UI/UX 設計原則、資產管理、以及全自動宣傳影片製作流程。技能核心強調尊重開發者的個人風格(避免 AI 生成的視覺效果),並嚴格遵循其自訂的資產 ID、通行證 ID 與遊戲機制。透過與 Studio MCP(Roblox Studio 的模型上下文協議)及 Blender 的整合,代理能夠直接讀取遊戲程式碼、編輯 Config 設定、使用遠端事件測試遊戲狀態,並自動生成宣傳影片。此技能特別適合需要頻繁迭代、且對美術風格有高度主觀要求的 Roblox 開發者,能顯著減少手動重複操作,同時避免破壞現有設計。

相容平台~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

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Emotion Tycoon — 工作協議與劇本

每當用戶提及 Emotion Tycoon、其樹木、工人、掉落器、加成、事件、樓層、存檔欄位、遊戲通行證、突襲、兌換碼、管理面板,或要求為其製作圖示、粒子、UI、模型、縮圖或宣傳影片時,請使用此文件——即使他們只描述了症狀(「樹卡住了」、「粒子看起來很小」、「我卡在 $0 了」)。

用戶是一名獨立 Roblox 開發者(群組「Squashed Stuidos」,id 706695552),他手繪了大量美術資源,並且對任何看起來像是「vibecoded」或 AI 生成的東西非常挑剔。以下所有內容都來自他們自己的修正;請將其視為他們的個人風格,而非建議。他們經常發送長串語音輸入的請求批次:將每個批次轉換為任務列表,先處理快速修復的錯誤,並在最終報告中回答每一項(包括你決定不執行的事項)。

用戶的常規規則

  • 尊重他們的編輯。 永遠不要覆蓋用戶手動進行的模型/UI 更改。讀取前先寫入。
  • 不要使用 AI 風格的 UI。 不要使用文字標籤/籌碼/徽章(「PASS」、「NEW」、「HOT」),不要使用貼在物件上的光滑漸層藥丸,不要使用與文字欄位重疊的圖示,不要使用解釋事物的純浮動文字行。改用佈局、輪廓樣式、顏色或分組來區分事物。
  • 新視窗:複製一個用戶已批准的視窗(HUD.FriendModal 兩欄佈局、RebirthModal、OfflineModal)並更換其內容,而不是從頭組合一個。從頭製作的視窗曾被拒絕,原因是「明顯是用 AI 做的」。文字欄位 = 帶有深色 3px 輪廓的凹陷白色框,深色文字。
  • 玩家擁有的數字看起來像現金欄。 例如:突襲代幣 = 複製一個 HUD.Cash 放在旁邊,加上代幣圖示,懸停(PC)/ 點擊(手機)顯示工具提示。始終讓懸停資訊在手機上也能運作(點擊切換)。
  • 真實的紋理材質用於 UI 背景:rbxassetid://100839690373358(永遠不要使用程式生成的)。
  • 優先使用他們手製的資產(ID 在下方)。當有他們自己的資產時,不要生成替代品。
  • 每次添加視覺效果的回复結尾,都附上一個簡短的資產列表,用戶可以繪製這些資產來取代佔位符。
  • Robux 字形是專用字元 U+E002。
  • 不要幻覺。 當對 API 或 ID 不確定時,搜尋網路 / 閱讀程式碼。
  • 不要打開第二個 Roblox Studio。 電腦操作僅用於 MCP 無法完成的事情(FBX 導入、Game Bar)。
  • 永遠不要儲存他們的 .blend 檔案(C:\Users\cosul\Desktop\models_for_roblox\RobloxTycoon.blend);提醒他們按 Ctrl+S。
  • Blender 中的 3D 模型:基於修改器、乾淨的低多邊形、平面著色;齒輪使用 /roblox-r6-armor 套件的風格。
  • 沒有每日獎勵(他們偏好離線 / AFK 收益)。到處保留「?」神秘六邊形——當一個「?」變成真實節點時,在它後面添加新的「?」六邊形。
  • 已決定 / 已拒絕(不要再提議): 基礎保護、跳過重生、「全部升級」(僅有每個 NPC 的最大按鈕)、裝飾品商店、獎盃樹(突襲代幣保留;透過每日重生前三名及每第五次重生獲得)。天氣機器 = 每個地塊恰好一個。協同作用教學:暫緩,直到他們詢問。
  • 永遠不要讓玩家卡死。 任何對成本/樹木/重生的更改都必須保留一條通往有效生產線的路徑(主線有 lineCost + rescue 充值以及 Cash-Tree 守衛——讓它們保持運作)。

Studio MCP 工作流程

  • Studio id 每工作階段變化——使用 list_roblox_studios 取得。
  • 在「播放」模式下無法編輯資料模型。 用戶會自己進行遊戲測試:檢查 get_studio_state;當他們遊玩時,你仍然可以透過伺服器資料模型(game.ServerScriptService.Main.Source)讀取腳本。等待他們(每隔幾分鐘輪詢一次);只有在他們閒置數分鐘後才停止他們的遊戲測試,並告知他們。如果他們問「確保東西已儲存」:編輯僅在「編輯」模式下進行時才會持久化。
  • 在 Client/Server 中執行 execute_luau 有其自己的 require 快取:那裡的 require(module) 是一個全新的副本,而不是正在運行的副本(對其進行猴子補丁無效)。透過遊戲的遠端事件(ReplicatedStorage.Remotes.Request:InvokeServer(action, ...),包括 admin 操作)或實例/屬性來訪問運行狀態。要在編輯模式下測試 Config 編輯,請使用 require(Config:Clone())。
  • 腳本編輯:透過 execute_luau 使用 ScriptEditorService:UpdateSourceAsync,使用 string.find(src, old, 1, true) 進行精確查找/替換,並斷言匹配是唯一的。使用 [==[ ]==] 字串(程式碼通常包含 ]])。
  • UI 模組的 start 函數已達到 Luau 的 200 個局部暫存器限制(「Out of local registers」)。永遠不要在該處添加新的頂層局部變數:將新的狀態/函數放在共享的 ext 表或 do ... end 區塊內。
  • 要測試一個稀有狀態(例如,一條滿的生產線),在編輯模式下暫時更改 Config 常數,進行遊戲測試,然後恢復它。
  • 使用 ET_NoSave 驗證:start_stop_play、screen_capture、get_console_output。user_mouse_input x/y 是 GUI/螢幕座標:對於世界點,使用 WorldToScreenPoint(= 視口 y - 58);對於 UI,使用 AbsolutePosition。螢幕截圖會被縮放(約 0.955 倍於 2011px 視口)。textInput 輸入 TextBox 無法送達——通過遠端事件測試類似兌換碼的流程。
  • Studio 中的 DataStores 是真實的(API 訪問已啟用):測試時寫入的任何內容(例如測試用兌換碼)必須在之後刪除。

遊戲地圖(事物所在位置)

  • ReplicatedStorage.Shared.Config — 所有調整項:Items、Employees、Perks、Materials、Events、Robux、RobuxClusters、Themes、TreePaths/TreeLayout/RebirthLayout、AURA(誰對哪些區塊施加增益/減益)、CAPACITY_PERKS、MAX_LIVE_CUBES(每條掉落器生產線)/ MAX_PLOT_CUBES、天氣機器函數(weatherChance、weatherUpgradeCost = 下一級重生成本翻倍的比例、weatherRoll、weatherOwned)、突襲定義 + 代幣。
  • ReplicatedStorage.Shared.Grid — 網格數學(20x20 區塊,TILE=4)。旋轉 r:0=-Z 1=+X 2=+Z 3=-X。
  • ReplicatedStorage.Shared.VFX — 粒子預設;VFX.burst 為每種顏色生成一個發射器。
  • ServerScriptService.Main — 工作階段、handlers.* 用於所有遠端操作(包括用於拖放建造的 batch、upgradeWeather、redeemCode、buyRaidToken)、天氣機器資料(data.wm、Factory.weatherHook)、救援、Heartbeat 循環。pushState 可以在批次期間被持有(s.holdPush)。
  • ServerScriptService.Server.{Factory,Plots,Shop,Events,DataService,Leaderboards,Prices,Raids,Admin,Codes}。Factory:每條生產線的方塊計數(session.lineCount、uncount)、lineCap、掉落器上的 LineFull 屬性、分桶的阻擋器檢查(保持 O(n),生產線可以容納 100 個方塊)、Factory.hold 用於批次重建。Admin:管理員專用 ops(贈送線上/離線/跨伺服器、事件、公告、兌換碼)。Codes:DataStore ET_Codes_v1(鍵 codes + uses_<CODE>),種類 cash/scaled/rp/token/boost,日期,最大使用次數(0 = 無限制)。
  • StarterPlayerScripts.ClientModules.{UI,Build,Cubes,Life,Boards,Aura,Pop} — UI = HUD、樹木、模態視窗、檢查面板;Build = 重影、拖放/批次放置(帶有透明佔位符)、右鍵長按刪除、移動;Aura = 綠色/紅色/黃色區塊方塊。管理面板 UI:ServerStorage.AdminGui(+ AdminClient),僅克隆到管理員的 PlayerGui。
  • 樹木畫布是 StarterGui.TreeGui.Window.Pan.{Canvas,RebirthCanvas,RobuxCanvas}.Nodes 中的創作節點(屬性 Q、R、Ring、Path、Mystery)。一個新節點 = 在該儲存格重新命名/轉換一個「?」節點(移除 Mystery,設定 Path)+ 將 id 添加到 Config.TreePaths/RebirthLayout。位置:現金 x = 0.4654 + 0.0691q,y = 0.6062 + 0.0850r + 0.0425q;重生 x = 0.5 + 0.1230q,y = 0.5 + 0.1300r + 0.0650q。
  • 僅限 Studio 的開發者遠端事件:devEvent、devCash、devRobux、devRobuxRemove、devRobuxReset、devOffline、devTutorial。管理員遠端事件(admin、op、...)在 Studio 中對所有者有效(可以給自己贈送 rp/cash/token)。
  • 永遠不要意外地對真實存檔進行測試。 在進行一次性遊戲測試之前,在「編輯」模式下執行 workspace:SetAttribute("ET_NoSave", true),之後將其移除。

已知陷阱(每個都讓我們吃過一次虧)

  • Premium NPC 放置錯誤留下了「鬼魂」區塊 → place 在建構時包含在 pcall 內並帶有回滾;保持該模式。
  • PlayerAdded 會暫停(Shop.checkPasses、DataStore 加載):每次暫停後檢查工作階段是否仍然有效,否則離開的玩家會以無所有者的方式重建其地塊。PlayerRemoving 在儲存之前釋放地塊。
  • 一個 UIGradient 會乘以 BackgroundColor3 ——一個帶有紫色漸層的青色框架會渲染成海軍藍。當透過漸層重新著色時,將背景設為白色。
  • 現金欄有一個 Bump UIScale:任何從其 AbsoluteSize 定位的東西都必須除以該比例。
  • 在 Build 模式中,右鍵 = 長按刪除;鏡頭平移是滑鼠中鍵 / WASD。
  • 樹木拖曳起始必須使用 UIS.InputBegan(按鈕按壓永遠無法到達 win.InputBegan)。
  • 樓層主題紋理位於地板之上(Texture 實例);永遠不要改變地板的 Material。
  • 使用者粒子表是 2x2 翻頁書,帶有小形狀 → 縮放 Size ~2–2.5x;多色 = 多個發射器。
  • 新上傳的紋理可能會模糊一段時間(Roblox 處理中)。
  • 高階掉落器每個階段需要大量工作;弱生產線售價約為 $1(空方塊價值)。
  • 圖片:upload_image 從本地 http 伺服器(例如 http://127.0.0.1:8765/<file>)運作。
  • FBX 管道: 使用 use_selection=True, object_types={'MESH'}, apply_unit_scale=True, mesh_smooth_type='FACE' 從 Blender 匯出到 %LOCALAPPDATA%\Temp\et_export\;透過電腦操作導入(Asset Manager → Import → 輸入路徑 → Import),會落在 workspace.<FbxName>。匯入器鏡像 X 軸:使用 CFrame.new(-x_b, z_b, y_b) 從 Blender 座標放置零件。預覽渲染:暫時性「ET_Preview」場景 → 分階段的圖片。
  • 遊戲內不允許外部連結:Discord/群組放在遊戲頁面的 Social Links;遊戲內僅允許一個 GroupService:PromptJoinAsync(groupId)「Join group」按鈕。

貨幣化佈局(當前)

  • Robux 商店 = 你可以在不同的島嶼之間平移(Config.RobuxClusters:Game Passes、Premium Workers、Cash、Boosts & Events)。添加一個通行證 = 將其 id 添加到一個島嶼的 items + 在 RobuxCanvas.Nodes 中添加一個六邊形。
  • 通行證與產品透過島嶼和輪廓動畫區分,永遠不使用標籤。
  • 價格即時獲取(Server.Prices → ReplicatedStorage 屬性 RobuxPrices)。
  • 通行證 ID:HypeQueen 2026442663, DiamondWorker 2026394625, PassMidas 2025590666, PassLuck 2025848628, PassDrop 2025464639, PassVIP 2026922652, GoldenRobot 2025374681, LayoutSlot3 2026652648, LayoutSlot4 2026010654, Pass2x 2027138654。
  • 產品 ID: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。
  • 樓層是免費的重生獎勵,在設定中選擇。工廠存檔:2 個免費欄位,欄位 3–4 是通行證。
  • 後期遊戲玩家擁有數百萬萬億和 30+ 次重生:將後期內容定價為 Config.rebirthCost(永遠縮放)的一部分,而不是固定數字;兌換碼預設同樣使用「下一次重生的百分比」作為理由。

用戶的資產

圖示: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 (生產線滿標誌), backpack_cubes 84466301181838 / crate_cubes 108346564955404 / chest_cubes 131689000211065 (容量加成)。

樓層:ocean_lights 138556700370722, holy 105026190310831, pink 83692624195325, pink_green 136148045549462, redx 124121848293779。

粒子(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"](列出其 Decals 以取得 ID):有用的——向下箭頭 17368169201, Codes 17368032566, MultiGifts 15402969720, Expand 17368183719, Click 17260727409, Rocket 16670799841, Box 17368122337, Crate 17368402884。CubePets 17368391613 是一隻狗——永遠不要將其用於非寵物的事物。

宣傳影片食譜(全自動,首次批准後無需使用者點擊)

  1. 一次性批准: 電腦操作訪問 Roblox Studio + Game Bar(使用系統按鍵組合),以及對 ~/Videos 的資料夾訪問(Game Bar 儲存到 Videos\Captures)。
  2. 展示狀態: 設定 ET_NoSave,開始播放,然後透過 Request 遠端事件:devCash,解鎖所有現金樹節點(循環 unlock 直到沒有進度),清除佈局,建造 4 條生產線(掉落器在 x=1 r=1,傳送帶在 x=2..17,賣家在 x=18;工人在兩側面向傳送帶)。使用 Dropper2–4,這樣方塊實際上會填充並以真實數字出售。
  3. 客戶端中的導演: BindToRenderStep 在 Camera+5 強制 CameraType=Scriptable 和一個 _G.DirCF;用於 Hold/Move/Orbit 的輔助函數;切換 HUD ScreenGuis(不是 TreeGui)。儲存格 → 世界:地塊 1 的 X = -134 + 4x, Z = -96 + 4z。在錄製前使用 screen_capture 預覽取景。
  4. 錄製: 聚焦 Studio,win+alt+r → 執行動作(execute_luau,< 60 秒) → win+alt+r。在鏡頭之間使用 devEvent("") 停止自然事件。使用 devEvent("Thunderstorm" | "MeteorShower" | "BloodMoon" | "CashRain" | "GoldenHour" | "Frost") 觸發事件。使用帶時間戳的聯絡表檢查剪輯,並重拍不好的。

…(原文截斷)

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.

相關技能