# ๐ŸŽ๏ธ ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ๋ ˆ์ด์‹ฑ ๊ฒŒ์ž„ ๋กœ๋ธ”๋ก์Šค ์ŠคํŠœ๋””์˜ค๋กœ ์ œ์ž‘ํ•œ ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ์Šคํƒ€์ผ ๋ ˆ์ด์‹ฑ ๊ฒŒ์ž„ --- # ๋กœ๋ธ”๋ก์Šค ํ”„๋กœ์ ํŠธ ์ „์šฉ ์ง€์นจ ## MCP ์„œ๋ฒ„ ์‚ฌ์šฉ ๊ทœ์น™ **๐Ÿ”ด ํ•„์ˆ˜**: ์ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” **Roblox Studio MCP ์„œ๋ฒ„**๋ฅผ ํ•ญ์ƒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ### Roblox Studio MCP ์‚ฌ์šฉ - **๋ชจ๋“  ๋กœ๋ธ”๋ก์Šค ์ž‘์—…**์— `mcp__Roblox_Studio__run_code` ๋˜๋Š” `mcp__Roblox_Studio__insert_model` ์‚ฌ์šฉ - **์ ˆ๋Œ€ ๊ธˆ์ง€**: ์ผ๋ฐ˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ์œผ๋กœ `.rbxl` ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ - **Lua ์Šคํฌ๋ฆฝํŠธ ํ™•์ธ/์ˆ˜์ •**: MCP๋ฅผ ํ†ตํ•œ `run_code` ์‚ฌ์šฉ ### ์ฃผ์š” ์ž‘์—… ํŒจํ„ด #### ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ํ™•์ธ ```lua mcp__Roblox_Studio__run_code: -- Workspace, StarterPlayer, ReplicatedStorage ๋“ฑ ํ™•์ธ for _, obj in pairs(game.Workspace:GetChildren()) do print(obj.Name) end ``` #### ์Šคํฌ๋ฆฝํŠธ ๋ถ„์„ ```lua mcp__Roblox_Studio__run_code: -- ์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ํ™•์ธ local script = game.StarterPlayer.StarterCharacterScripts.VehicleControl print(script.Source) ``` #### ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ/์ˆ˜์ • ```lua mcp__Roblox_Studio__run_code: -- ์ƒˆ ํŒŒํŠธ, ์Šคํฌ๋ฆฝํŠธ, UI ๋“ฑ ์ƒ์„ฑ local part = Instance.new("Part") part.Parent = game.Workspace ``` ### ์™œ MCP๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - โœ… **์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ์ƒํƒœ ์ ‘๊ทผ**: ๋กœ๋ธ”๋ก์Šค ์ŠคํŠœ๋””์˜ค์™€ ์ง์ ‘ ํ†ต์‹  - โœ… **Lua ์‹คํ–‰**: ๊ฒŒ์ž„ ์—”์ง„์—์„œ ์ง์ ‘ ์ฝ”๋“œ ์‹คํ–‰ ๋ฐ ํ…Œ์ŠคํŠธ - โœ… **์•ˆ์ „ํ•œ ์ˆ˜์ •**: ํŒŒ์ผ ์†์ƒ ์—†์ด ์˜ค๋ธŒ์ ํŠธ ์กฐ์ž‘ - โŒ **ํŒŒ์ผ ์ ‘๊ทผ ๋ถˆ๊ฐ€**: `.rbxl`์€ ๋ฐ”์ด๋„ˆ๋ฆฌ ํฌ๋งท์œผ๋กœ ์ง์ ‘ ์ฝ๊ธฐ ๋ถˆ๊ฐ€๋Šฅ ### ๊ธˆ์ง€ ์‚ฌํ•ญ - โŒ `Read` ํˆด๋กœ `.rbxl` ํŒŒ์ผ ์ฝ๊ธฐ - โŒ `Edit` ํˆด๋กœ `.rbxl` ํŒŒ์ผ ์ˆ˜์ • - โŒ `Write` ํˆด๋กœ Lua ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ƒ์„ฑ - โŒ `Glob` ํˆด๋กœ `.lua` ํŒŒ์ผ ๊ฒ€์ƒ‰ (ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์—๋Š” ์—†์Œ) ### ์˜ฌ๋ฐ”๋ฅธ ์›Œํฌํ”Œ๋กœ์šฐ 1. **์ƒํƒœ ํ™•์ธ**: `mcp__Roblox_Studio__run_code`๋กœ ํ˜„์žฌ ๊ตฌ์กฐ ํŒŒ์•… 2. **๋กœ์ง ๊ตฌํ˜„**: `mcp__Roblox_Studio__run_code`๋กœ ์ฝ”๋“œ ์ž‘์„ฑ/์ˆ˜์ • 3. **ํ…Œ์ŠคํŠธ**: MCP๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์‹คํ–‰ ๋ฐ ๊ฒ€์ฆ 4. **๋ฌธ์„œํ™”**: `CLAUDE.md` ์—…๋ฐ์ดํŠธ (์œ ์ผํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—…) --- ## ๐Ÿšจ ์ค‘์š” ๊ฐœ๋ฐœ ๋…ธํŠธ (๋ฐ˜๋“œ์‹œ ์ˆ™์ง€!) ### โŒ LocalScript ๋ฌผ๋ฆฌ ์—”์ง„ ์ œ์•ฝ์‚ฌํ•ญ **๋ฌธ์ œ**: LocalScript์—์„œ BodyVelocity/BodyGyro๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ๋ณด์ด๊ณ  ์‹ค์ œ ๋ฌผ๋ฆฌ ์—”์ง„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•จ **์ฆ์ƒ**: - Output ์ฐฝ์— "โœ… BodyVelocity ์ƒ์„ฑ" ๋ฉ”์‹œ์ง€๋Š” ๋‚˜์˜ค์ง€๋งŒ - ์‹ค์ œ๋กœ `workspace.RaceCar1.Chassis:FindFirstChildOfClass("BodyVelocity")`๋Š” nil ๋ฐ˜ํ™˜ - `bodyVelocity.Velocity` ์„ค์ •ํ•ด๋„ ์ฐจ๋Ÿ‰์ด ์›€์ง์ด์ง€ ์•Š์Œ - ํ‚ค ์ž…๋ ฅ์€ ๊ฐ์ง€๋˜๊ณ  ์†๋„ ๊ณ„์‚ฐ์€ ์ •์ƒ์ด์ง€๋งŒ ์ด๋™ ์—†์Œ **์›์ธ**: - LocalScript๋Š” ํด๋ผ์ด์–ธํŠธ ์ „์šฉ์ด๋ฏ€๋กœ ์„œ๋ฒ„์— ๋ฌผ๋ฆฌ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ - BodyVelocity/BodyGyro๋Š” ์„œ๋ฒ„์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๋ฌผ๋ฆฌ ์—”์ง„ ์ปดํฌ๋„ŒํŠธ **ํ•ด๊ฒฐ์ฑ…**: ```lua -- โŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ (LocalScript) local bodyVel = Instance.new("BodyVelocity") bodyVel.Parent = chassis bodyVel.Velocity = moveDirection -- ํšจ๊ณผ ์—†์Œ! -- โœ… ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ• (LocalScript) chassis.AssemblyLinearVelocity = moveDirection -- ์ง์ ‘ ์„ค์ • chassis.CFrame = chassis.CFrame * CFrame.Angles(0, rotation, 0) -- ํšŒ์ „ ``` **์ถ”๊ฐ€ ์ œ์•ฝ**: - `SetNetworkOwner()` - LocalScript์—์„œ ํ˜ธ์ถœ ๋ถˆ๊ฐ€ (์„œ๋ฒ„ ์ „์šฉ API) - `BodyGyro`, `BodyPosition`, `BodyForce` ๋“ฑ ๋ชจ๋“  Body* ๊ณ„์—ด ๋™์ผํ•œ ๋ฌธ์ œ ### โœ… Roblox ์ตœ์‹  ๋ฌผ๋ฆฌ ์—”์ง„ ๊ถŒ์žฅ ์‚ฌํ•ญ **์ตœ์‹  ๋ฐฉ์‹**: AssemblyLinearVelocity/AssemblyAngularVelocity ์ง์ ‘ ์‚ฌ์šฉ - LocalScript/Script ๋ชจ๋‘์—์„œ ์ž‘๋™ - ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์  - Body* ๊ณ„์—ด๋ณด๋‹ค ์˜ˆ์ธก ๊ฐ€๋Šฅ **์ฐธ๊ณ  ์ฝ”๋“œ**: ```lua -- ์†๋„ ์„ค์ • chassis.AssemblyLinearVelocity = chassis.CFrame.LookVector * speed -- ํšŒ์ „ chassis.CFrame = chassis.CFrame * CFrame.Angles(0, math.rad(turnSpeed), 0) -- ๋ฌผ๋ฆฌ ์†์„ฑ ์กฐ์ • (์„ ํƒ์‚ฌํ•ญ) chassis.CustomPhysicalProperties = PhysicalProperties.new( 0.7, -- Density 0.3, -- Friction 0.5 -- Elasticity ) ``` --- # ๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” - **ํ”Œ๋žซํผ**: Roblox Studio - **์–ธ์–ด**: Lua - **์Šคํƒ€์ผ**: ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ (Future GPX Cyber Formula) - **์žฅ๋ฅด**: ๋ ˆ์ด์‹ฑ, ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ ### 1. ๋„๋กœ ์‹œ์Šคํ…œ (v0.4.0) - **๋Œ€๊ทœ๋ชจ ๋„์‹œ ๋„๋กœ ๋„คํŠธ์›Œํฌ** (2500x2500 studs) - ์ฃผ์š” ๊ฐ„์„ ๋„๋กœ 5๊ฐœ (4-6์ฐจ์„ ) - ๋ณด์กฐ ๋„๋กœ 8๊ฐœ (2-3์ฐจ์„ ) - ๋‚จ๋ถ ์—ฐ๊ฒฐ๋„๋กœ 4๊ฐœ - ์ฐจ์„  ๋งˆํ‚น ์‹œ์Šคํ…œ - ๊ฐ•๋ณ€๋„๋กœ ์‹œ์Šคํ…œ - ๊ต๋Ÿ‰ 3๊ฐœ (๋‚œ๊ฐ„ ํฌํ•จ) - ์Šคํƒ€ํŠธ/ํ”ผ๋‹ˆ์‹œ ๋ผ์ธ (์ฒด์ปค๋ณด๋“œ ํŒจํ„ด) ### 2. ์ฐจ๋Ÿ‰ ์‹œ์Šคํ…œ - ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ์Šคํƒ€์ผ (๋„ค์˜จ ํšจ๊ณผ) - ์ปค์Šคํ…€ ์šด์ „ ์‹œ์Šคํ…œ (WASD) - ์•ˆ์ •์„ฑ ์‹œ์Šคํ…œ (์ „๋ณต ๋ฐฉ์ง€) - ํ—ค๋“œ๋ผ์ดํŠธ/ํ…Œ์ผ๋ผ์ดํŠธ - ์‚ฌ์šด๋“œ ์‹œ์Šคํ…œ (์—”์ง„, ๋ถ€์ŠคํŠธ, ์•„์ดํ…œ) ### 3. ๋ถ€์ŠคํŠธ ์‹œ์Šคํ…œ - **F ํ‚ค** ๋ฐœ๋™ - ์˜ค์ผ ๊ฒŒ์ด์ง€ ๊ด€๋ฆฌ (100%) - ๋ถ€์ŠคํŠธ ์†Œ๋ชจ: 30% / ํšŒ๋ณต: ์ดˆ๋‹น 5% - ์—”์ง„ ๋ธ”๋กœ์šฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (10% ์ดํ•˜ ๊ฐ•์ œ ๋ถ€์ŠคํŠธ) ### 4. ์•„์ดํ…œ ์‹œ์Šคํ…œ (v0.4.0 ํ™•์žฅ) - โ›ฝ **์˜ค์ผ ์บ”** (x10): ์˜ค์ผ +50% ํšŒ๋ณต - ๐Ÿš€ **๋ถ€์ŠคํŠธ ํŒจ๋“œ** (x6): ๊ฐ•๋ ฅ ๊ฐ€์† - ๐Ÿ”ง **๋ฆฌํŽ˜์–ด ํ‚ท** (x4): ์—”์ง„ ์ฆ‰์‹œ ์ˆ˜๋ฆฌ + ์˜ค์ผ 100% - ๋งต ์ „์—ญ์— ๋ถ„์‚ฐ ๋ฐฐ์น˜ - ํšŒ์ „ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ### 5. UI ์‹œ์Šคํ…œ - ์˜ค์ผ ๊ฒŒ์ด์ง€ (์ƒ‰์ƒ ๋ณ€ํ™”) - ์†๋„๊ณ„ (์‹ค์‹œ๊ฐ„ ์†๋„ ํ‘œ์‹œ) - ๋ถ€์ŠคํŠธ ์ƒํƒœ ํ‘œ์‹œ - ์•Œ๋ฆผ ์‹œ์Šคํ…œ - ๋žฉํƒ€์ž„ ๋””์Šคํ”Œ๋ ˆ์ด ### 6. ๋žฉํƒ€์ž„ ์‹œ์Šคํ…œ - ์Šคํƒ€ํŠธ๋ผ์ธ ๊ฐ์ง€ - ๋žฉํƒ€์ž„ ๊ธฐ๋ก - ์ตœ๊ณ  ๊ธฐ๋ก ์ถ”์  - ์‹ค์‹œ๊ฐ„ UI ์—…๋ฐ์ดํŠธ - ์ตœ์†Œ ๋žฉํƒ€์ž„ ๊ฒ€์ฆ (10์ดˆ ์ด์ƒ) ### 7. ๋ฆฌ๋”๋ณด๋“œ ์‹œ์Šคํ…œ - ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ํ‘œ ํ‘œ์‹œ - ์ตœ๊ณ  ๋žฉํƒ€์ž„ ๊ธฐ๋ฐ˜ ์ •๋ ฌ - ํ”Œ๋ ˆ์ด์–ด๋ณ„ ํ†ต๊ณ„ (Best Lap, Total Laps) - 1-3์œ„ ํŠน๋ณ„ ํ‘œ์‹œ (๊ธˆ, ์€, ๋™๋ฉ”๋‹ฌ) - ์ž์‹ ์˜ ์ˆœ์œ„ ํ•˜์ด๋ผ์ดํŠธ - ์ตœ๋Œ€ 8๋ช… ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์ง€์› ### 8. ํ™˜๊ฒฝ ์‹œ์Šคํ…œ (v0.4.0 ์‹ ๊ทœ) - ๊ฐ•(ํ•˜์ฒœ) ์‹œ์Šคํ…œ (๊ตฌ๋ถˆ๊ตฌ๋ถˆํ•œ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ˜•ํƒœ) - ๊ฐ•๋‘‘ ๋ฐ ๊ต๋Ÿ‰ ์‹œ์Šคํ…œ - ๊ฐ€๋กœ๋“ฑ 50๊ฐœ (์ž๋™ ์กฐ๋ช…) - ๋งต ๊ฒฝ๊ณ„ ์•ˆ์ „์žฅ์น˜ - ๊ฐ•๋ณ€๋„๋กœ์™€ ๋„์‹ฌ๋„๋กœ์˜ ์กฐํ™” ## ๐ŸŽฎ ์กฐ์ž‘๋ฒ• - **W**: ์ „์ง„ - **S**: ํ›„์ง„ - **A**: ์™ผ์ชฝ ํšŒ์ „ - **D**: ์˜ค๋ฅธ์ชฝ ํšŒ์ „ - **F**: ๋ถ€์ŠคํŠธ ๋ฐœ๋™ - **Space**: ์ฐจ๋Ÿ‰ ํ•˜์ฐจ ## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ (v0.4.0) ``` Workspace/ โ”œโ”€โ”€ CityRoads/ # ๋„์‹œ ๋„๋กœ ๋„คํŠธ์›Œํฌ (2500x2500) โ”‚ โ”œโ”€โ”€ EastWestMainRoad # ๋™์„œ ์ฃผ๊ฐ„์„ ๋„๋กœ (6์ฐจ์„ ) โ”‚ โ”œโ”€โ”€ NorthSouthMainRoad # ๋‚จ๋ถ ์ฃผ๊ฐ„์„ ๋„๋กœ (5์ฐจ์„ ) โ”‚ โ”œโ”€โ”€ RiversideRoad1_2 # ๊ฐ•๋ณ€๋„๋กœ (4์ฐจ์„ ) โ”‚ โ”œโ”€โ”€ DiagonalMainRoad # ๋Œ€๊ฐ์„  ๊ฐ„์„ ๋„๋กœ (5์ฐจ์„ ) โ”‚ โ”œโ”€โ”€ SecondaryRoad[1-8] # ๋ณด์กฐ๋„๋กœ (2-3์ฐจ์„ ) โ”‚ โ”œโ”€โ”€ VerticalConnector[1-4] # ๋‚จ๋ถ ์—ฐ๊ฒฐ๋„๋กœ โ”‚ โ””โ”€โ”€ StreetLights (x50) # ๊ฐ€๋กœ๋“ฑ ์‹œ์Šคํ…œ โ”œโ”€โ”€ River/ # ๊ฐ• ์‹œ์Šคํ…œ โ”‚ โ”œโ”€โ”€ RiverSegment[1-6] # ๊ฐ• ๋ณธ๋ฅ˜ โ”‚ โ”œโ”€โ”€ Riverbank[1-5] # ๊ฐ•๋‘‘ โ”‚ โ””โ”€โ”€ Bridge[1-3] # ๊ต๋Ÿ‰ ๋ฐ ๋‚œ๊ฐ„ โ”œโ”€โ”€ SimpleCyberCar/ # ์ฐจ๋Ÿ‰ ๋ชจ๋ธ โ”‚ โ”œโ”€โ”€ Chassis # ์ฐจ์ฒด โ”‚ โ”œโ”€โ”€ DriveSeat # ์šด์ „์„ โ”‚ โ”œโ”€โ”€ Wheels (x4) # ๋ฐ”ํ€ด โ”‚ โ”œโ”€โ”€ NeonLines # ๋„ค์˜จ ์žฅ์‹ โ”‚ โ””โ”€โ”€ Sounds/ # ์‚ฌ์šด๋“œ ์‹œ์Šคํ…œ โ”‚ โ”œโ”€โ”€ EngineSound # ์—”์ง„ ์†Œ๋ฆฌ โ”‚ โ”œโ”€โ”€ BoostSound # ๋ถ€์ŠคํŠธ ํšจ๊ณผ์Œ โ”‚ โ”œโ”€โ”€ PickupSound # ์•„์ดํ…œ ํš๋“ โ”‚ โ””โ”€โ”€ BlowSound # ์—”์ง„ ๋ธ”๋กœ์šฐ โ”œโ”€โ”€ Items/ # ์•„์ดํ…œ (๋งต ์ „์—ญ ๋ถ„์‚ฐ) โ”‚ โ”œโ”€โ”€ OilCan (x10) โ”‚ โ”œโ”€โ”€ BoostPad (x6) โ”‚ โ””โ”€โ”€ RepairKit (x4) โ””โ”€โ”€ StartLine # ์Šคํƒ€ํŠธ/ํ”ผ๋‹ˆ์‹œ ๋ผ์ธ (์ฒด์ปค๋ณด๋“œ) StarterPlayer/ โ””โ”€โ”€ StarterCharacterScripts/ โ””โ”€โ”€ VehicleControl # ๋ฉ”์ธ ์šด์ „ ์Šคํฌ๋ฆฝํŠธ (์‚ฌ์šด๋“œ ํ†ตํ•ฉ) StarterGui/ โ””โ”€โ”€ RacingUI/ # UI ์‹œ์Šคํ…œ โ”œโ”€โ”€ OilGauge # ์˜ค์ผ ๊ฒŒ์ด์ง€ โ”œโ”€โ”€ Speedometer # ์†๋„๊ณ„ โ”œโ”€โ”€ BoostStatus # ๋ถ€์ŠคํŠธ ์ƒํƒœ โ”œโ”€โ”€ Notification # ์•Œ๋ฆผ โ”œโ”€โ”€ LapTime # ๋žฉํƒ€์ž„ ํ‘œ์‹œ โ””โ”€โ”€ LeaderboardUI # ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ํ‘œ ReplicatedStorage/ โ”œโ”€โ”€ OilPickup # ์˜ค์ผ ์•„์ดํ…œ ์ด๋ฒคํŠธ โ”œโ”€โ”€ RepairPickup # ๋ฆฌํŽ˜์–ด ์•„์ดํ…œ ์ด๋ฒคํŠธ โ””โ”€โ”€ LapEvent # ๋žฉํƒ€์ž„ ์ด๋ฒคํŠธ ServerScriptService/ โ”œโ”€โ”€ LapTimer # ๋žฉํƒ€์ž„ ์„œ๋ฒ„ ๋กœ์ง โ””โ”€โ”€ Leaderboard # ๋ฆฌ๋”๋ณด๋“œ ๊ด€๋ฆฌ ``` ## ๐ŸŽฏ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด 1. **์ฐจ๋Ÿ‰ ํƒ‘์Šน**: ๋„ค์˜จ ์ฐจ๋Ÿ‰์— ์ ‘๊ทผํ•ด์„œ ํด๋ฆญ 2. **๋„์‹œ ๋ ˆ์ด์‹ฑ**: WASD๋กœ ๋Œ€๊ทœ๋ชจ ๋„์‹œ ๋„๋กœ ๋„คํŠธ์›Œํฌ ์ฃผํ–‰ (2500x2500 studs) 3. **๋ถ€์ŠคํŠธ ๊ด€๋ฆฌ**: F ํ‚ค๋กœ ๋ถ€์ŠคํŠธ, ์˜ค์ผ ๊ฒŒ์ด์ง€ ์ฃผ์˜ 4. **์•„์ดํ…œ ์ˆ˜์ง‘**: ๋งต ๊ณณ๊ณณ์˜ ์•„์ดํ…œ์œผ๋กœ ์˜ค์ผ ํšŒ๋ณต ๋ฐ ๋ถ€์ŠคํŠธ 5. **๋žฉํƒ€์ž„ ๋„์ „**: ์Šคํƒ€ํŠธ๋ผ์ธ์„ ํ†ต๊ณผํ•˜๋ฉฐ ๊ธฐ๋ก ์ธก์ • 6. **ํ™˜๊ฒฝ ํƒํ—˜**: ๊ฐ•๋ณ€๋„๋กœ, ๊ต๋Ÿ‰, ๋„์‹ฌ ๊ฐ„์„ ๋„๋กœ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ 7. **์ฃผ์˜**: ์˜ค์ผ 10% ์ดํ•˜์—์„œ ๋ถ€์ŠคํŠธ โ†’ ์—”์ง„ ๋ธ”๋กœ์šฐ! ## ๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ - **Lua**: ๊ฒŒ์ž„ ๋กœ์ง - **Roblox Studio**: ๊ฒŒ์ž„ ์—”์ง„ - **BodyVelocity/BodyGyro**: ์ฐจ๋Ÿ‰ ๋ฌผ๋ฆฌ - **HingeConstraint**: ๋ฐ”ํ€ด ํšŒ์ „ - **RemoteEvent**: ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ†ต์‹  - **ParticleEmitter**: ๋ถ€์ŠคํŠธ ํšจ๊ณผ - **Sound**: ์˜ค๋””์˜ค ์‹œ์Šคํ…œ ## ๐Ÿ“Š ๊ฒŒ์ž„ ๋ฐธ๋Ÿฐ์Šค | ํ•ญ๋ชฉ | ๊ฐ’ | |------|-----| | ๊ธฐ๋ณธ ์†๋„ | 80 | | ๋ถ€์ŠคํŠธ ์†๋„ | 160 (2๋ฐฐ) | | ํ›„์ง„ ์†๋„ | 40 | | ์กฐํ–ฅ ๊ฐ๋„ | 5ยฐ | | ๋ถ€์ŠคํŠธ ์ง€์† | 3์ดˆ | | ๋ถ€์ŠคํŠธ ์†Œ๋ชจ | 30% | | ์˜ค์ผ ํšŒ๋ณต | ์ดˆ๋‹น 5% | | ์—”์ง„ ๋ธ”๋กœ์šฐ | 10์ดˆ ์ •์ง€ | ## ๐Ÿš€ TODO - [x] UI ์‹œ์Šคํ…œ (์˜ค์ผ ๊ฒŒ์ด์ง€, ์†๋„๊ณ„) - [x] ์‚ฌ์šด๋“œ ์ดํŽ™ํŠธ - [x] ๋žฉํƒ€์ž„ ์‹œ์Šคํ…œ - [x] ๋ฆฌ๋”๋ณด๋“œ ์‹œ์Šคํ…œ - [x] ๋Œ€๊ทœ๋ชจ ๋„์‹œ ๋„๋กœ ๋„คํŠธ์›Œํฌ (v0.4.0) - [x] ๊ฐ•/ํ•˜์ฒœ ์‹œ์Šคํ…œ (v0.4.0) - [ ] UI ์ •๋ฆฌ ๋ฐ ๋ ˆ์ด์•„์›ƒ ์ตœ์ ํ™” - [ ] ๊ตํ†ต ์‹œ์Šคํ…œ (์‹ ํ˜ธ๋“ฑ, ํ‘œ์ง€ํŒ) - [ ] ํƒ€์ž„ ์–ดํƒ ๋ชจ๋“œ - [ ] ๋ฏธ๋‹ˆ๋งต ์‹œ์Šคํ…œ ## ๐Ÿ“ ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ ### v0.5.0 (2025-10-07) - โœ… **8๋Œ€ ์ฐจ๋Ÿ‰ ๊ทธ๋ฆฌ๋“œ ์Šคํƒ€ํŠธ ์‹œ์Šคํ…œ** - ๊ฐ€๋กœ 1์ค„ 8๋Œ€ ๋ฐฐ์น˜ (P1~P8) - ์Šคํƒ€ํŠธ๋ผ์ธ 240 studs ํญ - ์ฐจ๋Ÿ‰ ๊ฐ„๊ฒฉ 30 studs - ๋ฌด์ง€๊ฐœ ๊ทธ๋ผ๋ฐ์ด์…˜ ์ƒ‰์ƒ - โœ… **ํ”Œ๋ ˆ์ด์–ด ์ž๋™ ํƒ‘์Šน** - ๋งต ์ž…์žฅ ์‹œ ์ž๋™์œผ๋กœ ๋นˆ ์ฐจ๋Ÿ‰ ๋ฐฐ์ • - P1๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์น˜ (์ตœ๋Œ€ 8๋ช…) - ํฌ์ง€์…˜ ์•Œ๋ฆผ ์‹œ์Šคํ…œ - โœ… **์Šคํƒ€ํŠธ ๊ทธ๋ฆฌ๋“œ ์‹œ์Šคํ…œ** - ์ฒด์ปค๋ณด๋“œ ํŒจํ„ด ์Šคํƒ€ํŠธ๋ผ์ธ - ์Šคํฐ ํฌ์ธํŠธ ๋งˆ์ปค (P1~P8) - ์‹œ๊ฐ์  ํฌ์ง€์…˜ ํ‘œ์‹œ ### v0.4.0 (2025-10-07) - โœ… **๋Œ€๊ทœ๋ชจ ๋„์‹œ ๋„๋กœ ๋„คํŠธ์›Œํฌ** (2500x2500 studs) - ์ฃผ์š” ๊ฐ„์„ ๋„๋กœ 5๊ฐœ (4-6์ฐจ์„ ) - ๋ณด์กฐ ๋„๋กœ 8๊ฐœ (2-3์ฐจ์„ ) - ๋‚จ๋ถ ์—ฐ๊ฒฐ๋„๋กœ 4๊ฐœ - โœ… **๊ฐ•/ํ•˜์ฒœ ์‹œ์Šคํ…œ** - ๊ตฌ๋ถˆ๊ตฌ๋ถˆํ•œ ๊ฐ• ๋ณธ๋ฅ˜ 6๊ฐœ ์„ธ๊ทธ๋จผํŠธ - ๊ฐ•๋‘‘ 5๊ฐœ - ๊ต๋Ÿ‰ 3๊ฐœ (๋‚œ๊ฐ„ ํฌํ•จ) - โœ… **ํ™˜๊ฒฝ ์‹œ์Šคํ…œ** - ๊ฐ€๋กœ๋“ฑ 50๊ฐœ (์ž๋™ ์กฐ๋ช…) - ๋งต ๊ฒฝ๊ณ„ ์•ˆ์ „์žฅ์น˜ - ๊ฐ•๋ณ€๋„๋กœ์™€ ๋„์‹ฌ๋„๋กœ ์กฐํ™” - โœ… **์•„์ดํ…œ ํ™•์žฅ** - ์˜ค์ผ์บ” 10๊ฐœ, ๋ถ€์ŠคํŠธํŒจ๋“œ 6๊ฐœ, ๋ฆฌํŽ˜์–ดํ‚ท 4๊ฐœ - ๋งต ์ „์—ญ ๋ถ„์‚ฐ ๋ฐฐ์น˜ - โœ… ๊ธฐ์กด ์ž‘์€ ์„œํ‚ท์„ ๋Œ€๊ทœ๋ชจ ๋„์‹œ ๋งต์œผ๋กœ ์™„์ „ ๊ต์ฒด ### v0.3.0 (2025-10-07) - โœ… ๋ฆฌ๋”๋ณด๋“œ ์‹œ์Šคํ…œ (์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ํ‘œ) - โœ… ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์ง€์› (์ตœ๋Œ€ 8๋ช…) - โœ… ํ”Œ๋ ˆ์ด์–ด ํ†ต๊ณ„ ์‹œ์Šคํ…œ (Best Lap, Total Laps) - โœ… ์ˆœ์œ„๋ณ„ ์ƒ‰์ƒ ์ฐจ๋ณ„ํ™” (1-3์œ„ ๋ฉ”๋‹ฌ) ### v0.2.0 (2025-10-07) - โœ… ์‚ฌ์šด๋“œ ์‹œ์Šคํ…œ (์—”์ง„, ๋ถ€์ŠคํŠธ, ์•„์ดํ…œ, ์—”์ง„ ๋ธ”๋กœ์šฐ) - โœ… ๋žฉํƒ€์ž„ ์‹œ์Šคํ…œ (๊ธฐ๋ก ์ธก์ • ๋ฐ UI ํ‘œ์‹œ) - โœ… ์ตœ๊ณ  ๊ธฐ๋ก ์ถ”์  ์‹œ์Šคํ…œ ### v0.1.0 (2025-01-XX) - โœ… ์ผ๋ฐ˜ ์„œํ‚ท ํŠธ๋ž™ ๊ตฌํ˜„ - โœ… ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ์Šคํƒ€์ผ ์ฐจ๋Ÿ‰ - โœ… ์˜ค์ผ ๊ฒŒ์ด์ง€ ๋ถ€์ŠคํŠธ ์‹œ์Šคํ…œ - โœ… ์—”์ง„ ๋ธ”๋กœ์šฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜ - โœ… ์•„์ดํ…œ ์‹œ์Šคํ…œ (3์ข…) - โœ… ์ฐจ๋Ÿ‰ ์•ˆ์ •์„ฑ ์‹œ์Šคํ…œ - โœ… UI ์‹œ์Šคํ…œ ์™„์„ฑ ## ๐ŸŽจ ๋””์ž์ธ ์ปจ์…‰ **v0.4.0 ์ปจ์…‰**: "๋Œ€๊ทœ๋ชจ ๋„์‹œ๋ฅผ ์งˆ์ฃผํ•˜๋Š” ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ์ฐจ๋Ÿ‰" - ๋งต: ์‹ค์ œ ๋„์‹œ ์Šค์ผ€์ผ์˜ ๋„๋กœ ๋„คํŠธ์›Œํฌ (2500x2500 studs) - ํ™˜๊ฒฝ: ๊ฐ•๋ณ€๋„๋กœ, ๊ต๋Ÿ‰, ๋„์‹ฌ ๊ฐ„์„ ๋„๋กœ, ๊ฐ€๋กœ๋“ฑ์ด ์žˆ๋Š” ์•ผ๊ฐ„ ๋ถ„์œ„๊ธฐ - ์ฐจ๋Ÿ‰: ์‚ฌ์ด๋ฒ„ํฌ๋ฎฌ๋Ÿฌ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์Šคํƒ€์ผ (๋„ค์˜จ ํšจ๊ณผ) - ๋Œ€๋น„: ํ˜„์‹ค์  ๋„์‹œ ํ™˜๊ฒฝ + ๋ฏธ๋ž˜์  ์ฐจ๋Ÿ‰ = ๊ทน๋Œ€ํ™”๋œ ์‹œ๊ฐ์  ์ž„ํŒฉํŠธ - ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด: 3์ดˆ ์ฃผํ–‰์œผ๋กœ ์ง€๋‚˜๊ฐ€๋Š” ์ž‘์€ ์„œํ‚ท โ†’ ๊ด‘ํ™œํ•œ ๋„์‹œ ํƒํ—˜ ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค MIT License ## ๐Ÿ‘จโ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž - ๊ฐœ๋ฐœ: Claude + tindevil82 - ํ”Œ๋žซํผ: Roblox Studio - ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„: 2025