ทุกสถานที่ถูกแทนด้วยโมเดลข้อมูล ซึ่งเป็นลำดับชั้นของวัตถุที่อธิบายทุกอย่างเกี่ยวกับสถานที่ โมเดลข้อมูลประกอบด้วยวัตถุทั้งหมดที่สร้างขึ้นในโลก 3D เช่น ส่วนประกอบ, ภูมิประเทศ, แสงสว่าง และองค์ประกอบทางสิ่งแวดล้อมอื่น ๆ นอกจากนี้ยังมีวัตถุที่สามารถควบคุมพฤติกรรมในระหว่างการทำงาน เช่น สคริปต์ที่ปรับเปลี่ยนคุณสมบัติ, เรียกใช้วิธีการและฟังก์ชัน, และตอบสนองต่อเหตุการณ์ที่ทำให้เกิดพฤติกรรมที่มีพลศาสตร์และการโต้ตอบ
Roblox Engine ใช้โมเดลข้อมูลเป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับสถานะของสถานที่ เพื่อให้สามารถจำลองและเรนเดอร์บนอุปกรณ์ของลูกค้าได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ Roblox Engine ตีความโมเดลข้อมูล โปรดดูที่ Client-Server Runtime.
วัตถุ
คุณสามารถวางและจัดระเบียบวัตถุในโมเดลข้อมูลเพื่ออธิบายสถานที่ใน Roblox ทุกวัตถุใน Roblox สืบทอดจากคลาส Instance ซึ่งกำหนดคุณสมบัติทั่วไป, วิธีการ, และเหตุการณ์ที่เป็นที่รู้จักกันทั่วไปในวัตถุทั้งหมด วัตถุยังสามารถกำหนดลักษณะเฉพาะของตนเองขึ้นอยู่กับฟังก์ชันการทำงานที่วัตถุให้บริการ มีหลายประเภทของวัตถุที่มีการใช้งานที่หลากหลาย แต่คุณจะทำงานกับวัตถุ BasePart และ LuaSourceContainer ซึ่งมักเรียกว่าส่วนประกอบและสคริปต์บ่อยครั้ง
สำหรับรายการคุณสมบัติทั้งหมดของ Roblox Engine โปรดดูที่ เอกสารอ้างอิง.
บล็อกการสร้าง 3D
BasePart เป็นคลาสหลักสำหรับบล็อกการสร้าง 3D ที่จำลองทางกายภาพในโลก มันกำหนดคุณสมบัติและวิธีการที่เป็นที่รู้จักกันทั่วไปในวัตถุทางกายภาพที่มีคุณสมบัติเช่น ตำแหน่ง, ขนาด, และการจัดแนว
| วัตถุ | คำอธิบาย |
|---|---|
| Part | ส่วนประกอบพื้นฐาน part ที่สามารถมีรูปร่างเป็นบล็อก, ลูกบอล, กระบอก, เหลี่ยม, หรือเหลี่ยมมุม |
| MeshPart | เมชที่นำเข้าจากซอฟต์แวร์การสร้างโมเดล 3D เช่น Maya หรือ Blender mesh |
| 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 สำหรับการโคลนและเป็นพ่อแม่ให้กับโมเดลตัวละครที่เข้ามาทั้งหมด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำซ้ำทำงาน โปรดดูที่ client-server runtime.
เซิร์ฟเวอร์
โมเดลข้อมูลกำหนดภาชนะเฉพาะสำหรับวัตถุที่เฉพาะเจาะจงสำหรับเซิร์ฟเวอร์ซึ่งจะไม่ถูกทำซ้ำไปยังลูกค้า สิ่งนี้ช่วยให้เซิร์ฟเวอร์สามารถส่งผลต่อพฤติกรรมและสถานะของลูกค้าโดยไม่เปิดเผยวัตถุและตรรกะของเซิร์ฟเวอร์ให้กับลูกค้า
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 แทนฟีเจอร์การแชทด้วยเสียงที่อิงจากระยะทางซึ่งจำลองการสื่อสารที่สมจริงตามระยะห่างที่คุณอยู่จากผู้ใช้คนอื่น คุณสามารถใช้บริการนี้เพื่อเปิดและปิดฟีเจอร์
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ แชทด้วยเสียง.
โฟลเดอร์และโมเดล
มีสองวิธีหลักในการจัดกลุ่มวัตถุในโมเดลข้อมูล: โฟลเดอร์ และ โมเดล ทั้งสองเป็นภาชนะสำหรับวัตถุ แต่มีวัตถุประสงค์ที่แตกต่างกัน
- โฟลเดอร์ เหมาะที่สุดสำหรับการจัดเก็บส่วนต่าง ๆ ของสภาพแวดล้อม เช่น ล็อบบี้หรือสนามรบ
- โมเดล ใช้สำหรับชุดของวัตถุ เช่น ชุดโต๊ะที่รวมถึงเก้าอี้, โต๊ะ, และโคมไฟ เพื่อจัดระเบียบชุดที่ซับซ้อนมากขึ้น ให้ซ้อนโมเดลภายในโมเดล
คุณควรตั้งชื่อวัตถุของคุณอย่างมีความหมายเสมอ สิ่งนี้ทำให้ค้นหาและปรับเปลี่ยนวัตถุในภายหลังได้ง่ายขึ้นหากจำเป็น

