ทุกสถานที่ได้รับการแทนด้วยโมเดลข้อมูล ซึ่งเป็นลำดับชั้นของวัตถุที่อธิบายทุกอย่างเกี่ยวกับสถานที่ โมเดลข้อมูลประกอบด้วยวัตถุทั้งหมดที่ทำขึ้นเป็นโลก 3D เช่น ส่วนประกอบ ภูมิประเทศ การจัดแสง และองค์ประกอบทางสิ่งแวดล้อมอื่นๆ นอกจากนี้ยังมีวัตถุที่สามารถควบคุมพฤติกรรมในระหว่างการทำงาน เช่น สคริปต์ที่แก้ไขคุณสมบัติ เรียกใช้เมธอดและฟังก์ชัน และตอบสนองต่อเหตุการณ์ที่ทำให้เกิดพฤติกรรมที่มีพลศาสตร์และการโต้ตอบ
Roblox Engine ใช้โมเดลข้อมูลเป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับสถานะของสถานที่ ดังนั้นจึงสามารถจำลองและเรนเดอร์มันบนอุปกรณ์ของลูกค้าได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Roblox Engine ตีความโมเดลข้อมูล โปรดดูที่ Client-Server Runtime.
วัตถุ
คุณสามารถวางและจัดระเบียบวัตถุในโมเดลข้อมูลเพื่ออธิบายสถานที่ใน Roblox ทุกวัตถุใน Roblox สืบทอดมาจากคลาส Instance ซึ่งกำหนดคุณสมบัติทั่วไป เมธอด และเหตุการณ์ที่มีทั่วไปกับวัตถุทั้งหมด วัตถุยังสามารถกำหนดลักษณะเฉพาะของตนเองขึ้นอยู่กับฟังก์ชันการทำงานที่วัตถุจัดหา มีหลายประเภทของวัตถุที่มีความหลากหลายในการใช้งาน แต่คุณมักจะทำงานกับวัตถุ BasePart และ LuaSourceContainer ซึ่งเรียกกันทั่วไปว่าส่วนประกอบและสคริปต์
สำหรับรายการคุณสมบัติทั้งหมดของ Roblox Engine โปรดดูที่ เอกสารอ้างอิง.
บล็อกสร้าง 3D
BasePart เป็นคลาสหลักสำหรับบล็อกก่อสร้าง 3D ที่มีการจำลองทางกายภาพในโลก ซึ่งกำหนดคุณสมบัติและเมธอดที่มีทั่วไปกับวัตถุทางกายภาพ เช่น ตำแหน่ง ขนาด และมุมหัน
| วัตถุ | คำอธิบาย |
|---|---|
| Part | ส่วนประกอบแบบพื้นฐาน part ที่สามารถมีรูปร่างเป็นบล็อก ลูกบอล กระบอก ไม้พยุง หรือไม้มุม |
| MeshPart | เส้นใย mesh ที่นำเข้าจากซอฟต์แวร์การสร้าง 3D เช่น Maya หรือ Blender |
| TrussPart | คานที่ตัวละครสามารถปีนได้เหมือนบันได |
ในขณะที่คุณสามารถสร้างเกม Roblox ที่ใช้งานได้โดยใช้ส่วนประกอบง่ายๆ คุณจะต้องนำเข้าพวก meshes และรวมส่วนประกอบพื้นฐานเข้าด้วยกันเพื่อสร้างวัตถุและโครงสร้างที่ซับซ้อนมากขึ้นผ่าน การสร้างแบบมั่นคง.
สคริปต์
คุณสามารถเพิ่มการโต้ตอบและพฤติกรรมในโลก 3D ของสถานที่ของคุณและกำหนดตรรกะด้วยสคริปต์ คุณเขียนสคริปต์ในภาษาโปรแกรม Luau เพื่อทำสิ่งต่างๆ เช่น เลื่อนส่วนประกอบ เรียกใช้สคริปต์อื่น และตอบสนองต่อเหตุการณ์ เนื่องจาก Roblox ทำงานในโมเดลคลไคลเอนต์-เซิร์ฟเวอร์ คุณสามารถเรียกใช้สคริปต์บนเซิร์ฟเวอร์และไคลเอนต์ หรือให้พวกมันสื่อสารข้ามพรมแดนเครือข่าย
- วัตถุ Script แทนที่สคริปต์ที่สามารถทำงานได้เฉพาะบนเซิร์ฟเวอร์
- วัตถุ LocalScript แทนที่สคริปต์ที่สามารถทำงานได้เฉพาะบนไคลเอนต์
- วัตถุ ModuleScript แทนที่สคริปต์ที่สามารถนำกลับมาใช้ใหม่ได้ซึ่งคุณสามารถ require() จากทั้งสคริปต์เซิร์ฟเวอร์และไคลเอนต์
เพื่อให้สคริปต์ทำงานได้อย่างถูกต้อง คุณต้องวางไว้ในคอนเทนเนอร์ที่ถูกต้องในโมเดลข้อมูล สำหรับข้อมูลเพิ่มเติม โปรดดูที่ส่วน Server และ Client.
การจัดระเบียบวัตถุ
ในขณะที่คุณมีความยืดหยุ่นมากในการจัดระเบียบโมเดลข้อมูลของคุณ Roblox Engine คาดหวังให้วัตถุบางประเภทอยู่ใน บริการคอนเทนเนอร์ ที่เป็นวัตถุซึ่งมีพฤติกรรมเฉพาะและสามารถส่งผลต่อพฤติกรรมของวัตถุที่มีอยู่ในนั้น ประเภทหลักของบริการคอนเทนเนอร์ประกอบด้วย:
- Workspace — Workspace เก็บวัตถุทั้งหมดที่แสดงในโลก 3D
- Environment — คอนเทนเนอร์เช่น Lighting และ SoundService ที่บรรจุวัตถุสำหรับการตั้งค่าและองค์ประกอบทางสิ่งแวดล้อม
- Replication — คอนเทนเนอร์สำหรับเนื้อหาและตรรกะที่ทำให้เกิดซ้ำระหว่างเซิร์ฟเวอร์และไคลเอนต์ เช่น ReplicatedStorage และ ReplicatedFirst
- Server — คอนเทนเนอร์สำหรับเนื้อหาและตรรกะเฉพาะด้านเซิร์ฟเวอร์ เช่น ServerScriptService และ ServerStorage
นอกจากนี้คุณยังสามารถจัดระเบียบวัตถุของคุณเพิ่มเติมด้วยวัตถุต่อไปนี้:
- Folders — Folder ใช้เพื่อวัตถุประสงค์ในการจัดระเบียบและไม่ได้กำหนดพฤติกรรมใดๆ ตัวอย่างเช่น คุณสามารถใช้โฟลเดอร์เพื่อจัดกลุ่มวัตถุที่คล้ายกัน เช่น ชุดของสคริปต์ในเซิร์ฟเวอร์สตอเรจ
- Models — Model มีจุดประสงค์หลักสำหรับการจัดกลุ่มทางเรขาคณิตของส่วนประกอบ เช่น การจัดกลุ่มชุดโต๊ะที่รวมถึงเก้าอี้ โต๊ะ และโคมไฟ เพื่อจัดระเบียบชุดที่ซับซ้อนกว่านี้ คุณสามารถซ้อนโมเดลภายในโมเดลได้
Workspace
Workspace ประกอบด้วยวัตถุทั้งหมดที่สร้างขึ้นในโลก 3D ของสถานที่ของคุณ คุณสามารถเพิ่มวัตถุไปยังเวิร์กสเปซเพื่อปรับแต่งโลก 3D ของคุณ เช่น ส่วนประกอบพื้นฐาน วัตถุเมช และโมเดล ลูกค้าจะแสดงทุกสิ่งที่ปรากฏในคอนเทนเนอร์นี้ และไม่มีอะไรอยู่นอกเหนือจากนี้ ดังนั้นคุณสามารถควบคุมสิ่งที่ผู้ใช้เห็นและโต้ตอบในสถานที่ของคุณ แม้ว่าจะไม่ได้แสดงผลจริง แต่คุณยังสามารถเพิ่มสคริปต์ที่เป็นพ่อแม่ให้กับส่วนประกอบและโมเดลที่เกี่ยวข้อง โดยค่าเริ่มต้น เวิร์กสเปซจะถูกเติมล่วงหน้าด้วยวัตถุ Terrain และ Camera.
กล้อง
Camera กำหนดวิธีที่ไคลเอนต์มองเห็นโลก 3D โดยค่าเริ่มต้น จะมีกล้องหนึ่งตัวในเวิร์กสเปซ แต่คุณสามารถเพิ่มวัตถุกล้องหลายตัวเพื่อสร้างมุมมองและมุมมองที่แตกต่างกัน ไคลเอนต์แต่ละตัวใช้การตั้งค่าเหล่านี้และสร้างมุมมองกล้องของตนเองที่เซิร์ฟเวอร์ไม่สามารถแก้ไขโดยตรง
ตัวอย่างเช่น คุณสามารถตั้งกล้องให้ติดตามการเคลื่อนไหวของผู้ใช้หรืออยู่คงที่ในตำแหน่งเฉพาะ คุณยังสามารถปรับมุมมองระยะทางและมุมเพื่อสร้างผลกระทบทางภาพที่แตกต่างกันเกี่ยวกับวิธีที่ผู้ใช้มองเห็นโลก 3D ของคุณ
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ กำหนดเองกล้อง.
ภูมิประเทศ
Terrain ให้คุณสร้างภูมิทัศน์สำหรับสถานที่ของคุณ คุณสามารถใช้วัสดุในการจำลองสภาพแวดล้อมธรรมชาติที่ต้องการ เช่น หญ้า น้ำ ทรายละเอียด หรือวัสดุที่กำหนดเอง แม้ว่าในโลก 3D ของคุณจะมีวัตถุภูมิประเทศได้เพียงชิ้นเดียวและใช้วัสดุเพียงหนึ่งชิ้นกับภูมิประเทศนั้น แต่คุณสามารถใช้ Terrain Editor เพื่อแก้ไขพื้นที่ต่างๆ ในภูมิประเทศของคุณ
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ภูมิประเทศทางสิ่งแวดล้อม.
สิ่งแวดล้อม
การตั้งค่าแสงที่กำหนดเองสามารถทำให้โลก 3D ของคุณมีความสมจริงและน่าดึงดูดมากขึ้น บริการ Lighting ประกอบด้วยวัตถุที่ควบคุมการตั้งค่าแสงทั่วโลกของสถานที่ของคุณ เช่น Atmosphere สำหรับการจำลองผลกระทบทางบรรยากาศหรือ Sky เพื่อเปลี่ยนแปลงดวงอาทิตย์ ดวงจันทร์ และดาวในสภาพแวดล้อมของคุณ นอกจากนี้ คุณสามารถใช้ แหล่งกำเนิดแสง เพื่อปล่อยแสงจากวัตถุเฉพาะ
การเพิ่ม เสียง ในเกมของคุณยังมีความสำคัญสำหรับการยกระดับเกมของคุณให้สูงขึ้น โดยการใช้เสียงตำแหน่งและเสียงไม่ตำแหน่งอย่างมีกลยุทธ์ คุณสามารถทำให้ผู้เล่นเข้าไปอยู่ในโลกของคุณ ให้ข้อเสนอแนะแก่พวกเขาสำหรับการกระทำของพวกเขา และชี้ให้เห็นว่าสิ่งที่พวกเขาต้องทำเพื่อให้ประสบความสำเร็จในวัตถุประสงค์ของพวกเขา
การทำซ้ำ
การทำซ้ำ คือกระบวนการที่เซิร์ฟเวอร์ซิงโครไนซ์สถานะของสถานที่ของคุณกับลูกค้าที่เชื่อมต่อทั้งหมด Roblox Engine สามารถทำการทำซ้ำข้อมูล ฟิสิกส์ และข้อความแชทระหว่างเซิร์ฟเวอร์และลูกค้าอัจฉริยะและอัตโนมัติในหลายกรณี แต่อย่างไรก็ตาม คุณยังสามารถระบุวัตถุบางอย่างให้ทำซ้ำได้โดยการวางไว้ในคอนเทนเนอร์เฉพาะ
ReplicatedFirst
ReplicatedFirst ประกอบด้วยวัตถุที่คุณต้องการทำซ้ำไปยังไคลเอนต์เมื่อมันเข้าร่วมสถานที่ของคุณ โดยทั่วไปจะประกอบด้วยวัตถุที่จำเป็นในการเริ่มต้นผู้เล่น เช่น วัตถุ LocalScript ฝั่งลูกค้าและวัตถุที่เกี่ยวข้องกับสคริปต์ สาระในคอนเทนเนอร์นี้จะถูกทำซ้ำจากเซิร์ฟเวอร์ไปยังไคลเอนต์เพียงครั้งเดียว
ReplicatedStorage
ReplicatedStorage ประกอบด้วยวัตถุที่มีอยู่ทั้งสำหรับเซิร์ฟเวอร์และลูกค้าที่เชื่อมต่อ การเปลี่ยนแปลงใดๆ ที่เกิดขึ้นในลูกค้าจะคงอยู่แต่จะไม่ถูกทำซ้ำไปยังเซิร์ฟเวอร์ เซิร์ฟเวอร์สามารถเขียนทับการเปลี่ยนแปลงในลูกค้าเพื่อรักษาข้อตกลงคณะกรรมการ คอนเทนเนอร์นี้มักถูกใช้สำหรับวัตถุ ModuleScript ที่ต้องใช้ร่วมกันและเข้าถึงได้จากทั้งวัตถุ Script (ฝั่งเซิร์ฟเวอร์) และ LocalScript (ฝั่งลูกค้า) นอกจากนี้ คุณยังสามารถใช้คอนเทนเนอร์นี้ในการทำซ้ำวัตถุใดๆ ที่ไม่จำเป็นต้องอยู่ในโลก 3D จนกว่าจะต้องใช้ เช่น ParticleEmitter สำหรับการสร้างและเป็นพ่อแม่ให้กับโมเดลตัวละครที่เข้ามาทั้งหมด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่การทำซ้ำทำงาน โปรดดูที่ การทำงานในไคลเอนต์-เซิร์ฟเวอร์.
เซิร์ฟเวอร์
โมเดลข้อมูลกำหนดคอนเทนเนอร์เฉพาะสำหรับวัตถุที่ใช้เฉพาะเซิร์ฟเวอร์ ซึ่งจะไม่มีการทำซ้ำไปยังไคลเอนต์ ซึ่งทำให้เซิร์ฟเวอร์สามารถส่งผลต่อพฤติกรรมและสถานะของไคลเอนต์โดยไม่เปิดเผยวัตถุและตรรกะของเซิร์ฟเวอร์ให้กับไคลเอนต์
ServerScriptService
ServerScriptService ประกอบด้วยวัตถุ Script วัตถุ ModuleScript ที่จำเป็นสำหรับสคริปต์ของเซิร์ฟเวอร์ และวัตถุที่เกี่ยวข้องกับการเขียนสคริปต์อื่น ๆ ซึ่งตั้งใจให้ใช้เฉพาะบนเซิร์ฟเวอร์ หากสคริปต์ของคุณต้องการวัตถุอื่นๆ ที่ไม่ใช่การเขียนสคริปต์ คุณต้องวางไว้ใน ServerStorage สคริปต์ในคอนเทนเนอร์นี้จะไม่มีการทำซ้ำไปยังลูกค้า ซึ่งช่วยให้คุณมีตรรกะเซิร์ฟเวอร์ที่ปลอดภัย
ServerStorage
ServerStorage ประกอบด้วยวัตถุที่ตั้งใจให้ใช้เฉพาะกับเซิร์ฟเวอร์ คุณสามารถใช้คอนเทนเนอร์นี้เพื่อจัดเก็บวัตถุที่คุณต้องการทำซ้ำและทำพ่อแม่ให้กับเวิร์กสเปซหรือคอนเทนเนอร์อื่นๆ ในระหว่างการทำงาน ตัวอย่างเช่น คุณสามารถเก็บวัตถุขนาดใหญ่ เช่น แผนที่ไว้ในคอนเทนเนอร์นี้จนกว่าจะต้องการและย้ายไปยังเวิร์กสเปซเมื่อถูกต้อง เท่านี้จะช่วยลดการจราจรในเครือข่ายของไคลเอนต์ในระหว่างการเข้าร่วมครั้งแรก
ไคลเอนต์
บริการคอนเทนเนอร์ของไคลเอนต์ตั้งใจสำหรับวัตถุที่ทำซ้ำไปยังลูกค้าที่เชื่อมต่อทุกคน หมวดหมู่นี้ของคอนเทนเนอร์จะทำซ้ำไปยังลูกค้าที่เชื่อมต่อทุกคนและโดยทั่วไปจะมีวัตถุ 3D และวัตถุ LocalScript ที่เกี่ยวข้อง วัตถุทั้งหมดที่คุณจัดเก็บในคอนเทนเนอร์เหล่านี้จะไม่ถาวรตลอดเซสชันและจะรีเซ็ตทุกครั้งที่ไคลเอนต์เข้าร่วมอีกครั้ง คุณสามารถใส่วัตถุเหล่านี้ในคอนเทนเนอร์เหล่านี้ เช่น GUI ของผู้เล่น สคริปต์ฝั่งไคลเอนต์ และวัตถุอื่น ๆ ที่เกี่ยวข้องเฉพาะกับไคลเอนต์
เมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ บริการคอนเทนเนอร์ Players จะฟังสำหรับผู้ใช้ที่เข้าร่วมสถานที่ของคุณและสร้างวัตถุ Player สำหรับไคลเอนต์ทุกๆคน เซิร์ฟเวอร์จะคัดลอกวัตถุจากคอนเทนเนอร์ของไคลเอนต์ในโมเดลข้อมูลที่แก้ไขไปยังตำแหน่งที่สัมพันธ์กันในโมเดลข้อมูลในระหว่างการทำงานภายในวัตถุ Players ตารางต่อไปนี้อธิบายคอนเทนเนอร์ต้นฉบับที่มันตั้งอยู่ในคอนเทนเนอร์และคอนเทนเนอร์ที่ถูกคัดลอกไปยังไคลเอนต์:
| แก้ไขโมเดลข้อมูล | โมเดลข้อมูลในระหว่างการทำงาน | หมายเหตุ |
|---|---|---|
| StarterPack | Player.Backpack | สคริปต์ที่ตั้งค่าคลังสินค้าของผู้เล่นและโดยทั่วไปจะเก็บวัตถุ Tool แต่บ่อยครั้งก็มีสคริปต์ภายในด้วย |
| StarterGui | Player.PlayerGui | สคริปต์ที่สามารถจัดการ GUI ของผู้เล่นได้ โดยเมื่อผู้เล่นเกิดใหม่เนื้อหาของ PlayerGui จะถูกลบออก เซิร์ฟเวอร์จะคัดลอกวัตถุภายใน StarterGui ไปยัง PlayerGui |
| StarterPlayerScripts | Player.PlayerScripts | สคริปต์ทั่วไปสำหรับไคลเอนต์ ตัวอย่างเช่น หากคุณต้องการสร้างเอฟเฟกต์พิเศษบนไคลเอนต์เมื่อเงื่อนไขบางอย่างเกิดขึ้น คุณสามารถวางสคริปต์ภายในในคอนเทนเนอร์นี้เพื่อทำเช่นนั้น เซิร์ฟเวอร์ไม่สามารถเข้าถึงคอนเทนเนอร์นี้ได้ |
| StarterCharacterScripts | Player.Character | สคริปต์ที่ถูกคัดลอกไปยังไคลเอนต์เมื่อพวกเขาเกิดใหม่ สคริปต์เหล่านี้จะไม่คงอยู่เมื่อผู้เล่นเกิดใหม่ |
| ReplicatedFirst | เนื้อหาของคอนเทนเนอร์นี้จะถูกทำซ้ำไปยังไคลเอนต์ทั้งหมด (แต่ไม่กลับไปยังเซิร์ฟเวอร์) เป็นอันดับแรก ก่อนสิ่งอื่นใด. |
การสนทนา
TextChatService
TextChatService เป็นบริการที่จัดการงานต่างๆ เกี่ยวกับการแชทข้อความในเกม เช่น การจัดการช่องการแชท การตกแต่งข้อความ การกรองข้อความ การสร้างคำสั่ง และการพัฒนาส่วนติดต่อผู้ใช้การแชทแบบกำหนดเอง
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ ภาพรวมการแชทข้อความ.
VoiceChatService
VoiceChatService เป็นฟีเจอร์การสนทนาผ่านเสียงที่ตั้งอยู่บนความใกล้ชิด ซึ่งจำลองการสื่อสารที่สอดคล้องกับระยะทางระหว่างคุณกับผู้ใช้อื่น คุณสามารถใช้บริการนี้เพื่อเปิดหรือปิดฟีเจอร์นี้
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ การแชทด้วยเสียง.
โฟลเดอร์และโมเดล
มีสองวิธีหลักในการจัดกลุ่มวัตถุในโมเดลข้อมูล: โฟลเดอร์ และ โมเดล ทั้งสองเป็นคอนเทนเนอร์สำหรับวัตถุ แต่มีวัตถุประสงค์ที่แตกต่างกัน
- โฟลเดอร์ เหมาะสำหรับการเก็บส่วนต่างๆ ของสิ่งแวดล้อม เช่น ล็อบบี้หรือสนามรบ
- โมเดล ใช้สำหรับชุดของวัตถุ เช่น ชุดโต๊ะที่รวมเก้าอี้ โต๊ะ และโคมไฟ เพื่อจัดระเบียบชุดที่ซับซ้อนมากขึ้น คุณสามารถซ้อนโมเดลภายในโมเดล
คุณควรตั้งชื่อวัตถุของคุณให้อธิบายอย่างชัดเจน ซึ่งทำให้ค้นหาและแก้ไขวัตถุในภายหลังเป็นเรื่องง่ายหากต้องการ

