สำหรับสตูดิโอพัฒนามืออาชีพ การตั้งค่าเครื่องมือของบุคคลที่สามและการลงทุนในระบบอัตโนมัติสามารถปรับปรุงประสิทธิภาพการทำงานของนักพัฒนาได้อย่างมาก แนวทางการทำงานแบบคลาวด์ของ Roblox มีข้อดีหลายประการ แต่การย้ายบางส่วนของกระบวนการพัฒนานอกคลาวด์สามารถช่วยให้ทีมขนาดใหญ่ติดตามการเปลี่ยนแปลงตลอดเวลา ตรวจสอบโค้ด และใช้ภาษาและเครื่องมือที่พวกเขาคุ้นเคยอยู่แล้ว
- หากคุณต้องการใช้โปรแกรมแก้ไขข้อความภายนอกหรือเก็บโค้ดในระบบควบคุมเวอร์ชัน Script Sync เป็นตัวเลือกที่ยอดเยี่ยม
- หากคุณต้องการจัดการโปรเจกต์ทั้งหมดของคุณในรูปแบบไฟล์ท้องถิ่น หน้านี้จะครอบคลุมเครื่องมือและกลยุทธ์บางอย่าง
ปัญหาการซิงค์
ที่แกนหลัก การใช้เครื่องมือภายนอกกับ Roblox เป็นปัญหาการ ซิงค์:
- คุณต้องการให้อินสแตนซ์ Roblox ของคุณมีอยู่ในรูปแบบไฟล์บนดิสก์เพื่อที่คุณจะได้ใช้เครื่องมือของคุณเองในการทำงานกับมัน
- คุณต้องนำไฟล์ของคุณกลับเข้าสู่โปรเจกต์ Roblox หลังจากที่คุณทำงานกับมันเสร็จแล้ว
- หากมีคนอื่นเปลี่ยนไฟล์เดียวกันในระหว่างนี้ คุณต้องจัดการกับความขัดแย้งใด ๆ
เพื่อให้โซลูชันทั้งหมดรู้สึกไร้รอยต่อและอัตโนมัติ คุณต้อง a) ฟังการเปลี่ยนแปลงในไฟล์และ b) รวมการเปลี่ยนแปลงเหล่านี้กลับเข้าไปใน Studio
แทนที่จะใช้แนวทางการทำงานแบบคลาวด์ของ Roblox Rojo อนุญาตให้ใช้แนวทาง "ไฟล์ระบบก่อน" มันทำงานเป็นเซิร์ฟเวอร์บนเครื่องของคุณที่สื่อสารกับ ปลั๊กอิน Studio เพื่อซิงค์ไฟล์และโมเดลข้อมูลของ Studio
ติดตั้ง Rojo ด้วย Rokit
คุณสามารถดาวน์โหลดและรันไฟล์ Rojo แบบไบนารีด้วยตนเอง แต่แนวทางนี้มีความเสี่ยงที่นักพัฒนาคนอื่นในทีมของคุณจะใช้เวอร์ชัน Rojo ที่แตกต่างกัน ทางออกที่ดีกว่าคือการใช้เครื่องมือจัดการเช่น Rokit ซึ่งใช้ไฟล์กำหนดค่า—รายการของที่เก็บและเวอร์ชัน—เพื่อทำให้กระบวนการติดตั้งและอัปเกรดมีความสอดคล้องกันในทุกเครื่อง
เนื่องจากมันจัดการสภาพแวดล้อมการพัฒนาพื้นฐานของคุณแทนที่จะเป็นแพ็คเกจภายในโปรเจกต์ของคุณ Rokit จึงมีความคล้ายคลึงกับ nvm มากกว่า npm แต่การเปรียบเทียบนี้ไม่สมบูรณ์ ไฟล์ rokit.toml ที่เรียบง่ายมีลักษณะดังนี้:
[tools]
rojo = "rojo-rbx/rojo@7.6.1"
wally = "upliftgames/wally@0.3.2"
lune = "lune-org/lune@0.10.4"จากนั้นคุณติดตั้งเครื่องมือเหล่านี้ด้วย rokit install นอกจากไฟล์ rokit.toml ทั่วไป Rokit ยังรองรับไฟล์ต่อโปรเจกต์ ดังนั้นคุณจึงสามารถใช้เวอร์ชันที่แตกต่างกันของ Rojo, Wally หรือเครื่องมืออื่น ๆ สำหรับโปรเจกต์ต่าง ๆ และทำให้ทีมของคุณทั้งหมดใช้เวอร์ชันเดียวกัน
เมื่อเครื่องมือปล่อยเวอร์ชันใหม่ คุณจะต้องปรับหมายเลขเวอร์ชันในไฟล์ .toml ของคุณ ใช้ Rokit เพื่อทำการอัปเกรด ทดสอบเวอร์ชันใหม่ และลดระดับหากเกิดปัญหา สำหรับคำสั่งและคำแนะนำในการติดตั้ง ดูที่ Rokit
รัน Rojo
หลังจากที่คุณติดตั้ง Rojo ด้วย Rokit สิ่งที่คุณได้ติดตั้งจริง ๆ คือเซิร์ฟเวอร์ Rojo ขั้นตอนถัดไปคือการติดตั้งปลั๊กอิน Rojo สำหรับ Roblox Studio
คุณสามารถติดตั้งจาก Creator Store หรือทำการติดตั้งในเครื่องด้วยคำสั่งนี้:
rojo plugin installจากนั้นสร้างโครงสร้างโปรเจกต์สำหรับเกมใหม่ของคุณและสร้างมัน:
rojo init my-new-experience
cd my-new-experience
rojo build -o my-new-experience.rbxlหรือคุณสามารถ พอร์ตเกมที่มีอยู่ ไม่ว่าจะด้วยวิธีใด หลังจากที่คุณมีโปรเจกต์แล้ว ให้เริ่มเซิร์ฟเวอร์ Rojo:
rojo serveใน Roblox Studio ให้เปิดไฟล์ .rbxl ที่คุณเพิ่งสร้างขึ้น เปิดปลั๊กอิน Rojo และเชื่อมต่อกับเซิร์ฟเวอร์ที่กำลังทำงานอยู่ จากนั้นคุณสามารถเริ่มทำการเปลี่ยนแปลงในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและดูการเปลี่ยนแปลงเหล่านั้นซิงค์กลับไปยัง Studio โดยอัตโนมัติ


โปรเจกต์ Rojo มีข้อกำหนดในการตั้งชื่อไฟล์บางอย่าง ตัวเลือกการกำหนดค่าหลายประการ และข้อจำกัดบางประการ ซึ่งทั้งหมดนี้ครอบคลุมใน เอกสาร Rojo
ตัวจัดการแพ็คเกจ
Roblox มี API ที่รวมอยู่ที่แข็งแกร่ง แต่หากคุณต้องการใช้แพ็คเกจซอฟต์แวร์จากชุมชนในลักษณะที่สอดคล้องและสามารถทำซ้ำได้ คุณต้องการตัวจัดการแพ็คเกจ Wally เป็นตัวเลือกที่ได้รับความนิยม คุณสามารถติดตั้งผ่าน Rokit เช่นเดียวกับ Rojo
ภายในไดเรกทอรี Rojo ของเกมของคุณ ให้รัน wally init จากนั้นเพิ่มแพ็คเกจที่คุณต้องการลงใน wally.toml ไฟล์อาจมีลักษณะดังนี้:
[package]
name = "my-home-directory/my-new-experience"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
react = "jsdotlua/react@17.2.1"
react-roblox = "jsdotlua/react-roblox@17.2.1"
cryo = "phalanxia/cryo@1.0.3"จากนั้นรัน wally install Wally จะสร้างไดเรกทอรี Packages และดาวน์โหลดแพ็คเกจที่ระบุไว้ที่นั่น ขั้นตอนสุดท้ายคือการเพิ่มไดเรกทอรี Packages ลงใน Rojo เพื่อให้เนื้อหาของมันซิงค์กลับไปยัง Roblox เปิด default.project.json และเพิ่มเส้นทาง สำหรับความเรียบง่าย ตัวอย่างนี้จะเพิ่มไดเรกทอรีทั้งหมดลงใน ReplicatedStorage เพื่อให้แพ็คเกจทั้งหมดสามารถใช้ได้กับสคริปต์ทั้งหมด แต่คุณอาจต้องการเพิ่มแพ็คเกจเฉพาะลงใน ServerScriptService หรือ StarterPlayerScripts:
{
"name": "my-new-experience",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Shared": {
"$path": "src/shared"
},
"Packages": {
"$path": "Packages"
}
},
...
}
}จากนั้นคุณสามารถเรียกใช้แพ็คเกจภายในสคริปต์ของคุณได้เช่นเดียวกับ ModuleScript อื่น ๆ:
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local React = require(ReplicatedStorage.Packages.react)
local ReactRoblox = require(ReplicatedStorage.Packages["react-roblox"])
local handle = Instance.new("ScreenGui", Players.LocalPlayer.PlayerGui)
local root = ReactRoblox.createRoot(handle)
local helloFrame = React.createElement("TextLabel", {
Text = "สวัสดีชาวโลก!",
Size = UDim2.new(0, 200, 0, 200),
Position = UDim2.new(0.5, 0, 0.5, 0),
AnchorPoint = Vector2.new(0.5, 0.5),
BackgroundColor3 = Color3.fromRGB(248, 217, 109),
Font = Enum.Font.LuckiestGuy,
TextSize = 24
})
root:render(helloFrame)เช่นเดียวกับโปรเจกต์ซอฟต์แวร์อื่น ๆ เป้าหมายคือให้ผู้มีส่วนร่วมสามารถโคลนที่เก็บข้อมูล ติดตั้ง Rokit รันคำสั่งไม่กี่คำสั่ง และมีสภาพแวดล้อมการพัฒนาที่เหมือนกับทีมอื่น ๆ
การควบคุมเวอร์ชัน
การมีชุดไฟล์ข้อความธรรมดาบนคอมพิวเตอร์ของคุณปลดล็อกความสามารถที่หลากหลาย แต่ความสามารถหลักคือ การควบคุมเวอร์ชัน คุณสามารถเก็บไฟล์ของคุณในที่เก็บ Git หรือ Mercurial; โฮสต์ที่เก็บระยะไกลและตรวจสอบการเปลี่ยนแปลงโค้ดใน GitHub, GitLab, หรือ Bitbucket; และใช้โปรแกรมแก้ไขข้อความใดก็ได้ที่คุณชอบ
Visual Studio Code และ Cursor มีระบบส่วนขยายที่ใหญ่ที่สุด แต่ Sublime Text, Notepad++, และ Vim ก็เป็นตัวเลือกที่ได้รับความนิยมเช่นกัน ไม่ว่าคุณจะเลือกโปรแกรมแก้ไขใด การจับคู่ความสามารถของโปรแกรมแก้ไขสคริปต์ Studio จะต้องใช้ส่วนขยายบางอย่าง
คุณอาจพิจารณาเพิ่ม:
- Linter เช่น selene เพื่อจับปัญหาทั่วไปและบังคับใช้มาตรฐานการเขียนโค้ด
- ตัวจัดรูปแบบโค้ด เช่น StyLua
- เซิร์ฟเวอร์ภาษา เช่น Luau Language Server สำหรับการเติมอัตโนมัติ การตรวจสอบประเภท และอื่น ๆ
ยกเลิกทุกอย่าง
เนื่องจากเครื่องมือของบุคคลที่สามซิงค์การเปลี่ยนแปลงกลับไปยัง Roblox Studio แทนที่จะเปลี่ยนที่มัน ไม่มีส่วนใดของกระบวนการทำงานนี้เกี่ยวข้องกับการล็อคในเวลาใดก็ได้ คุณสามารถหยุดใช้เครื่องมือใด ๆ หรือทั้งหมดนี้และกลับไปแก้ไขเกมของคุณเฉพาะใน Studio ข้อดีของการไม่มีความเสี่ยงทำให้การทดลองกับเครื่องมือของบุคคลที่สามมีความน่าสนใจเป็นพิเศษ