Skip to content

Chuyển từ Roblox sang ​

Nếu bạn đã làm game trong Roblox Studio, phần lớn kiến thức dùng lại được: KHIM chạy Luau, một unit bằng một stud, trọng lực như nhau, và tên API của Roblox vẫn chạy - game:GetService, Instance.new, Vector3.new, part.Position, :Connect, FindFirstChild, RemoteEvent, leaderstats... KHIM còn có tên ngắn gọn riêng, và tài liệu này dùng chúng.

Cùng ý tưởng, tên của KHIM ​

RobloxKHIM
Roblox StudioKHIM Engine
PlaceWorld (.khim)
StudUnit (cùng độ dài)
Creator HubWorkshop (Xưởng)
PublishGo live
Shift lockCamera lock (Khoá camera)
Explorer / PropertiesHierarchy / Inspector
ToolboxBảng Assets
OutputConsole
PackagesLinked models

Service ​

RobloxKHIMTrong script
WorkspaceWorldworld (workspace vẫn chạy)
ReplicatedStorageReplicationServiceshared
ServerScriptServiceServerServicegame.ServerService
ServerStorageStorageServicegame.StorageService
StarterPlayerScripts, ReplicatedFirstClientServicegame.ClientService
StarterGuiUIplayers.me.gui (bản của người chơi)
Players-players
Lighting-lighting
DataStoreService-data
CollectionService-tags
UserInputService-input
TweenService-object:tween(...)
HttpService (JSON)-json
Teams-teams

Lớp đối tượng ​

RobloxKHIM
LocalScriptClientScript
ModuleScriptModule
SpawnLocationSpawn
HumanoidBody (character.body)
HumanoidRootPartRootPart (character.root)
ClickDetectorClickable
ProximityPromptPrompt
BillboardGuiBillboard
PointLight, SpotLight, SurfaceLightLight
HingeConstraintHinge
PrismaticConstraintSlider
BallSocketConstraintBallJoint
SpringConstraint, RopeConstraintSpring, Rope
Motor6DBone
LinearVelocity, AngularVelocity, VectorForceMover, Spinner, Thruster
ScreenGuiCanvas
Frame, ScrollingFramePanel, ScrollPanel
TextLabel, TextButton, TextBoxLabel, Button, TextInput
ImageLabel, ImageButtonImage, ImageButton
UICorner, UIStroke, UIPaddingCorner, Border, Padding
UIListLayout, UIGridLayoutListLayout, GridLayout
UIGradient, UIAspectRatioConstraintGradient, AspectRatio
UIScale, UISizeConstraint, UITextSizeConstraintScale, SizeLimit, TextSizeLimit
Folder leaderstatsplayer.stats

Cùng một đoạn code, hai cách viết ​

lua
-- Tên kiểu Roblox (vẫn chạy trong KHIM)
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
    local leaderstats = Instance.new("Folder")
    leaderstats.Name = "leaderstats"
    leaderstats.Parent = player
    local coins = Instance.new("IntValue")
    coins.Name = "Coins"
    coins.Parent = leaderstats
end)

workspace.Coin.Touched:Connect(function(hit)
    local player = Players:GetPlayerFromCharacter(hit.Parent)
    if player then
        player.leaderstats.Coins.Value += 1
    end
end)
lua
-- Tên của KHIM
players.joined:connect(function(player)
    player.stats.Coins = 0
end)

world.Coin.touched:connect(function(hit)
    local player = players.fromPart(hit)
    if player then
        player.stats.Coins += 1
    end
end)
RobloxKHIM
Instance.new("Part", parent)new("Part", parent)
Vector3.new(1, 2, 3)vec3(1, 2, 3)
Color3.fromRGB(255, 0, 0)rgb(255, 0, 0)
CFrame.new(pos), CFrame.lookAt(a, b)transform(pos), transform.lookAt(a, b)
UDim2.new(0.5, 0, 0, 40)dim(0.5, 0, 0, 40)
part.Position, part.CFramepart.position, part.transform
:Connect, :Wait, :Disconnect:connect, :wait, :disconnect
FindFirstChild, WaitForChildfind, waitFor
GetChildren, IsA, Destroy, Clonechildren, isA, destroy, clone
TweenService:Create(part, TweenInfo.new(1), goals):Play()part:tween(goals, 1)
RemoteEvent:FireServer(...) / .OnServerEventnet.send(name, ...) / net.on(name, fn)
RemoteEvent:FireClient(player, ...) / FireAllClientsnet.send(player, name, ...) / net.sendAll(name, ...)
RemoteFunction:InvokeServer / OnServerInvokenet.call / net.handle
DataStoreService:GetDataStore(n):GetAsync(k)data.store(n):get(k)
UserInputService.InputBeganinput.began, hoặc input.onKey(key, fn)
workspace.CurrentCameracamera
workspace:Raycast(origin, dir)world:raycast(origin, dir)
Players:GetPlayerFromCharacter(hit.Parent)players.fromPart(hit)
humanoid:TakeDamage(10)player:damage(10)
game:BindToClose(fn)game.closing:connect(fn)
wait(1), tick()task.wait(1), time()

Gợi ý của KHIM Engine theo cách script được viết: script dùng tên Roblox thì được gợi ý tên Roblox.

Những điểm khác ​

  • Part không có núm (stud). Plastic là khối có cạnh bo mềm. SmoothPlastic phẳng của Roblox là Smooth của KHIM.
  • Part nặng theo vật liệu: part Metal nặng, Wood nhẹ. applyImpulse chia cho khối lượng thật.
  • Camera không phải một đối tượng: nó là biến camera trong ClientScript.
  • Không có Attachment. Khớp nối, Beam và lực đẩy nhận một anchor (một vec3 trong không gian part của nó).
  • Gameplay không cần code: Teleporter, Hazard, Checkpoint, Pickup, Boost, Motion, Spawner, Seat - xem Chạm, Prompt và Zone.
  • Animation là keyframe nằm trong world, làm bằng trình sửa animation của KHIM Engine; ID animation tải lên Roblox không phát được.
  • Âm thanh và hình ảnh là của KHIM có sẵn hoặc bạn tải lên (có kiểm duyệt), gọi bằng "coin" hoặc "asset:123" - asset ID của Roblox không có nghĩa ở đây.
  • Không gọi web: HttpService:GetAsync và các hàm tương tự báo lỗi.
  • Script trên server đổi Decal, Light hay Highlight thì người chơi không thấy: hãy đổi chúng từ ClientScript (Âm thanh, ánh sáng và hiệu ứng).
  • Chưa có trong KHIM: Terrain, SurfaceGui, ViewportFrame, MarketplaceService.

Nhập world Roblox ​

KHIM Engine mở được world .rbxl / .rbxlx (và model .rbxm / .rbxmx) do bạn làm: bật trình nhập trong bảng Plugins, rồi File > Import .rbxl / .rbxlx.... Cửa sổ Imported cho biết thứ gì đã sang và thứ gì bị bỏ lại.

Những gì sang được: part cùng CFrame, kích thước, màu, vật liệu; Model và Folder; script (giữ nguyên - tên Roblox vẫn chạy); weld; âm thanh, value, ClickDetector, đèn, ProximityPrompt, hạt, decal, highlight, beam và trail; UI; constraint và mover; tag và attribute; Lighting; Teams. Bị bỏ: Humanoid, Motor6D, Attachment, mesh của MeshPart (thành khối hộp), Terrain, BillboardGui và SurfaceGui, ID âm thanh và hình ảnh của Roblox.

Chỉ game của chính bạn

Chỉ xuất bản world do bạn làm hoặc bạn có quyền xuất bản. Go live một world đã nhập sẽ yêu cầu bạn xác nhận, và world bị đánh dấu là đã nhập. KHIM không liên kết với Roblox Corporation.