Mỗi địa điểm được đại diện bởi một mô hình dữ liệu, một cấu trúc phân cấp của các đối tượng mô tả mọi thứ về địa điểm đó. Mô hình dữ liệu chứa tất cả các đối tượng tạo nên thế giới 3D, chẳng hạn như các phần, địa hình, ánh sáng và các yếu tố môi trường khác. Nó cũng chứa các đối tượng có thể điều khiển hành vi trong thời gian chạy, chẳng hạn như các kịch bản sửa đổi thuộc tính, gọi các phương thức và hàm, và phản hồi các sự kiện cho phép hành vi động và tương tác.
Roblox Engine sử dụng mô hình dữ liệu như một nguồn sự thật cho trạng thái của một địa điểm, để nó có thể mô phỏng và hiển thị trên các thiết bị của khách hàng. Để biết thêm thông tin về cách Roblox Engine diễn giải mô hình dữ liệu, hãy xem Thời gian chạy Client-Server.
Đối tượng
Bạn đặt và tổ chức các đối tượng trong mô hình dữ liệu để mô tả một địa điểm trong Roblox. Mỗi đối tượng trong Roblox kế thừa từ lớp Instance, định nghĩa các thuộc tính, phương thức và sự kiện chung cho tất cả các đối tượng. Các đối tượng cũng định nghĩa các đặc điểm riêng của chúng tùy thuộc vào chức năng mà đối tượng cung cấp. Có nhiều loại đối tượng với nhiều công dụng khác nhau, nhưng bạn sẽ thường xuyên làm việc với các đối tượng BasePart và LuaSourceContainer, thường được gọi là các phần và kịch bản.
Để có danh sách đầy đủ tất cả các tính năng của Roblox Engine, hãy xem tài liệu tham khảo.
Các khối xây dựng 3D
BasePart là lớp cốt lõi cho các khối xây dựng 3D được mô phỏng vật lý trong thế giới. Nó định nghĩa các thuộc tính và phương thức chung cho tất cả các đối tượng vật lý với các thuộc tính như vị trí, kích thước và hướng.
| Đối tượng | Mô tả |
|---|---|
| Part | Một phần nguyên thủy có thể có hình dạng của một khối, quả bóng, hình trụ, hình chóp hoặc hình chóp góc. |
| MeshPart | Một mesh được nhập từ phần mềm mô hình 3D như Maya hoặc Blender. |
| TrussPart | Một dầm giàn mà các nhân vật có thể leo lên như một cái thang. |
Mặc dù bạn có thể lý thuyết tạo ra một trò chơi Roblox hoàn chỉnh chỉ bằng các phần đơn giản, nhưng bạn sẽ rất có thể nhập meshes và kết hợp các phần nguyên thủy thành các đối tượng và cấu trúc phức tạp hơn thông qua mô hình rắn.
Kịch bản
Bạn có thể thêm tính tương tác và hành vi vào thế giới 3D của địa điểm và định nghĩa logic với các kịch bản. Bạn viết các kịch bản bằng ngôn ngữ lập trình Luau để thực hiện các việc như di chuyển các phần, gọi các kịch bản khác và phản hồi các sự kiện. Bởi vì Roblox hoạt động theo mô hình client-server, bạn có thể chạy các kịch bản trên máy chủ, máy khách, hoặc để chúng giao tiếp qua ranh giới mạng.
- Một đối tượng Script đại diện cho một kịch bản chỉ có thể chạy trên máy chủ.
- Một đối tượng LocalScript đại diện cho một kịch bản chỉ có thể chạy trên máy khách.
- Một đối tượng ModuleScript đại diện cho một kịch bản có thể tái sử dụng mà bạn có thể require() từ cả kịch bản máy chủ và máy khách.
Để các kịch bản hoạt động đúng, bạn phải đặt chúng vào các container đúng trong mô hình dữ liệu. Để biết thêm thông tin, hãy xem các phần Máy chủ và Máy khách.
Tổ chức đối tượng
Mặc dù bạn có rất nhiều sự linh hoạt trong cách tổ chức mô hình dữ liệu của mình, nhưng Roblox Engine mong đợi một số đối tượng phải ở trong các dịch vụ container nhất định, là các đối tượng có hành vi cụ thể và có thể ảnh hưởng đến hành vi của các đối tượng mà chúng chứa. Các loại dịch vụ container chính bao gồm:
- Workspace — Workspace lưu trữ tất cả các đối tượng được hiển thị trong thế giới 3D.
- Môi trường — Các container như Lighting và SoundService chứa các đối tượng cho các cài đặt và yếu tố môi trường.
- Sao chép — Các container cho nội dung và logic được sao chép giữa máy chủ và máy khách, chẳng hạn như ReplicatedStorage và ReplicatedFirst.
- Máy chủ — Các container cho nội dung và logic chỉ dành cho máy chủ, chẳng hạn như ServerScriptService và ServerStorage.
- Máy khách — Các container cho nội dung và logic chỉ dành cho máy khách, chẳng hạn như StarterPlayer và StarterGui.
- Chat — Các container cho các đối tượng cho phép các tính năng chat, chẳng hạn như VoiceChatService và TextChatService.
Ngoài ra, bạn có thể tổ chức thêm các đối tượng của mình với các đối tượng sau:
- Thư mục — Một Folder dùng cho mục đích tổ chức và không định nghĩa bất kỳ hành vi nào. Ví dụ, bạn có thể sử dụng thư mục để nhóm các đối tượng tương tự như một bộ kịch bản trong bộ nhớ máy chủ.
- Mô hình — Một Model chủ yếu được sử dụng cho các nhóm hình học của các phần, chẳng hạn như nhóm một bộ bàn làm việc bao gồm một ghế, bàn và một chiếc đèn. Để tổ chức các bộ phức tạp hơn, bạn thậm chí có thể lồng các mô hình trong các mô hình.
Workspace
Workspace chứa tất cả các đối tượng tạo nên thế giới 3D của một địa điểm. Bạn có thể thêm các đối tượng vào workspace để tùy chỉnh thế giới 3D của mình, chẳng hạn như các phần cơ bản, các phần mesh và các mô hình. Các máy khách hiển thị mọi thứ xuất hiện trong container này và không có gì bên ngoài nó, vì vậy bạn có thể kiểm soát những gì người dùng thấy và tương tác trong địa điểm của bạn. Mặc dù không thực sự được hiển thị, bạn cũng có thể thêm các kịch bản được gán cho các phần và mô hình mà chúng liên kết. Theo mặc định, workspace được tự động điền với một đối tượng Terrain và Camera.
Camera
Camera xác định cách mà máy khách nhìn vào thế giới 3D. Theo mặc định, có một camera trong workspace, nhưng bạn có thể thêm nhiều đối tượng camera để tạo ra các góc nhìn và quan điểm khác nhau. Mỗi máy khách lấy các cài đặt này và tạo ra góc nhìn camera riêng mà máy chủ không thể trực tiếp sửa đổi.
Ví dụ, bạn có thể đặt một camera để theo dõi chuyển động của người dùng hoặc giữ cố định ở một vị trí cụ thể. Bạn cũng có thể điều chỉnh góc nhìn, khoảng cách và góc để tạo ra các hiệu ứng hình ảnh khác nhau về cách người dùng nhìn vào thế giới 3D của bạn.
Để biết thêm thông tin, hãy xem tùy chỉnh camera.
Terrain
Terrain cho phép bạn tạo ra các cảnh quan cho địa điểm của bạn. Bạn có thể áp dụng một vật liệu cho địa hình để mô phỏng các môi trường tự nhiên mong muốn, chẳng hạn như cỏ, nước, cát hoặc một vật liệu tùy chỉnh. Mặc dù bạn chỉ có thể có một đối tượng địa hình cho thế giới 3D của mình và áp dụng một vật liệu cho địa hình đó, bạn có thể sử dụng Trình chỉnh sửa Địa hình để chỉnh sửa các vùng của địa hình của bạn.
Để biết thêm thông tin, hãy xem địa hình môi trường.
Môi trường
Ánh sáng tùy chỉnh có thể làm cho thế giới 3D của bạn trở nên sống động và thực tế hơn. Dịch vụ Lighting chứa các đối tượng điều khiển các cài đặt ánh sáng toàn cầu của địa điểm của bạn, chẳng hạn như Atmosphere để mô phỏng các hiệu ứng khí quyển hoặc Sky để thay đổi mặt trời, mặt trăng và các vì sao trong môi trường của bạn. Ngoài ra, bạn có thể sử dụng nguồn sáng để phát ra ánh sáng từ các đối tượng cụ thể.
Thêm âm thanh vào trò chơi của bạn cũng rất quan trọng để nâng cao trò chơi của bạn lên một tầm cao mới. Bằng cách sử dụng chiến lược âm thanh vị trí và không vị trí, bạn có thể đưa người chơi vào thế giới của bạn, cung cấp cho họ phản hồi hữu ích cho các hành động của họ và hướng sự chú ý của họ đến những gì họ cần làm để thành công trong các mục tiêu của mình.
Sao chép
Sao chép là quá trình máy chủ đồng bộ hóa trạng thái của địa điểm của bạn với tất cả các máy khách kết nối. Roblox Engine thông minh và tự động sao chép dữ liệu, vật lý và tin nhắn chat giữa máy chủ và máy khách trong nhiều trường hợp, nhưng bạn cũng có thể chỉ định một số đối tượng nhất định để sao chép bằng cách đặt chúng vào các container cụ thể.
ReplicatedFirst
ReplicatedFirst chứa các đối tượng mà bạn muốn sao chép đến một máy khách khi nó tham gia địa điểm của bạn. Nó thường chứa các đối tượng thiết yếu để khởi tạo một người chơi, chẳng hạn như các đối tượng LocalScript phía máy khách và các đối tượng liên quan đến các kịch bản. Tất cả nội dung trong container này được sao chép từ máy chủ đến máy khách chỉ một lần.
ReplicatedStorage
ReplicatedStorage chứa các đối tượng có sẵn cho cả máy chủ và các máy khách kết nối. Bất kỳ thay đổi nào xảy ra trên máy khách sẽ tồn tại nhưng sẽ không được sao chép về máy chủ. Máy chủ có thể ghi đè các thay đổi trên máy khách để duy trì tính nhất quán. Container này thường được sử dụng cho các đối tượng ModuleScript cần được chia sẻ và truy cập bởi cả các đối tượng Script (phía máy chủ) và LocalScript (phía máy khách). Ngoài ra, bạn có thể sử dụng container này để sao chép bất kỳ đối tượng nào không cần tồn tại trong thế giới 3D cho đến khi cần, chẳng hạn như một ParticleEmitter để sao chép và gán cho tất cả các mô hình nhân vật đến.
Để biết thêm thông tin về cách sao chép hoạt động, hãy xem thời gian chạy client-server.
Máy chủ
Mô hình dữ liệu định nghĩa các container dành riêng cho các đối tượng chỉ dành cho máy chủ mà không bao giờ được sao chép đến máy khách. Điều này cho phép máy chủ ảnh hưởng đến hành vi và trạng thái của máy khách mà không tiết lộ các đối tượng và logic của máy chủ cho máy khách.
ServerScriptService
ServerScriptService chứa các đối tượng Script, các đối tượng ModuleScript mà các kịch bản máy chủ yêu cầu, và các đối tượng liên quan đến lập trình khác chỉ dành cho sử dụng trên máy chủ. Nếu các kịch bản của bạn yêu cầu các đối tượng không phải lập trình khác, bạn phải đặt chúng vào ServerStorage. Các kịch bản trong container này không bao giờ được sao chép đến các máy khách, điều này cho phép bạn có logic an toàn, phía máy chủ.
ServerStorage
ServerStorage chứa các đối tượng chỉ dành cho sử dụng trên máy chủ. Bạn có thể sử dụng container này để lưu trữ các đối tượng mà bạn muốn sao chép và gán cho workspace hoặc các container khác trong thời gian chạy. Ví dụ, bạn có thể lưu trữ các đối tượng lớn như bản đồ trong container này cho đến khi chúng cần thiết và di chuyển chúng vào workspace chỉ khi cần. Điều này cho phép bạn giảm lưu lượng mạng của máy khách khi tham gia ban đầu.
Máy khách
Các dịch vụ container máy khách được thiết kế cho các đối tượng được sao chép đến mọi máy khách kết nối. Loại container này sao chép đến mọi máy khách kết nối và thường chứa các đối tượng 3D và các đối tượng LocalScript liên quan. Tất cả các đối tượng bạn lưu trữ trong các container này không tồn tại qua các phiên và được đặt lại mỗi khi một máy khách tham gia lại. Bạn có thể đặt các đối tượng trong các container này như GUI của người chơi, các kịch bản phía máy khách và các đối tượng khác chỉ liên quan đến máy khách.
Khi một máy khách kết nối với một máy chủ, dịch vụ container Players lắng nghe người dùng tham gia địa điểm của bạn và tạo một đối tượng Player cho mỗi máy khách. Máy chủ sao chép các đối tượng từ các container máy khách trong mô hình dữ liệu chỉnh sửa đến vị trí tương ứng trong mô hình dữ liệu thời gian chạy bên trong đối tượng Players. Bảng sau mô tả container gốc mà nó nằm trong container và container kết quả mà chúng được sao chép đến trên máy khách:
| Mô hình dữ liệu chỉnh sửa | Mô hình dữ liệu thời gian chạy | Ghi chú |
|---|---|---|
| StarterPack | Player.Backpack | Các kịch bản thiết lập kho đồ của người chơi và thường chứa các đối tượng Tool nhưng thường cũng chứa các kịch bản cục bộ. |
| StarterGui | Player.PlayerGui | Các kịch bản có thể quản lý GUI cục bộ của người chơi. Khi một người chơi hồi sinh, nội dung của PlayerGui sẽ bị xóa. Máy chủ sao chép các đối tượng bên trong StarterGui vào PlayerGui. |
| StarterPlayerScripts | Player.PlayerScripts | Các kịch bản đa năng cho máy khách. Ví dụ, nếu bạn muốn tạo hiệu ứng đặc biệt trên máy khách khi một số điều kiện được đáp ứng, bạn có thể đặt một kịch bản cục bộ trong container này để thực hiện điều đó. Máy chủ không thể truy cập container này. |
| StarterCharacterScripts | Player.Character | Các kịch bản được sao chép đến máy khách khi họ xuất hiện. Những kịch bản này không tồn tại khi người chơi hồi sinh. |
| ReplicatedFirst | Nội dung của container này được sao chép đến tất cả các máy khách (nhưng không quay lại máy chủ) trước tiên, trước bất kỳ điều gì khác. |
Chat
TextChatService
TextChatService đại diện cho dịch vụ xử lý các tác vụ chat văn bản trong trò chơi khác nhau, chẳng hạn như quản lý các kênh, trang trí tin nhắn, lọc văn bản, tạo lệnh và phát triển các giao diện chat tùy chỉnh.
Để biết thêm thông tin, hãy xem tổng quan về chat văn bản.
VoiceChatService
VoiceChatService đại diện cho tính năng chat giọng nói dựa trên khoảng cách mô phỏng giao tiếp thực tế dựa trên mức độ gần gũi của bạn với những người dùng khác. Bạn có thể sử dụng dịch vụ này để bật và tắt tính năng.
Để biết thêm thông tin, hãy xem chat giọng nói.
Thư mục và mô hình
Có hai phương pháp chính để nhóm các đối tượng trong mô hình dữ liệu: thư mục và mô hình. Cả hai đều là các container cho các đối tượng, nhưng chúng có các mục đích khác nhau.
- Thư mục tốt nhất để lưu trữ các phần của một môi trường, chẳng hạn như sảnh hoặc một đấu trường chiến đấu.
- Mô hình được sử dụng cho các bộ đối tượng, chẳng hạn như một bộ bàn làm việc bao gồm một ghế, bàn và một chiếc đèn. Để tổ chức các bộ phức tạp hơn, hãy lồng các mô hình bên trong các mô hình.
Bạn nên luôn đặt tên cho các đối tượng của mình một cách mô tả. Điều này giúp dễ dàng tìm và sửa đổi các đối tượng sau này nếu cần.

