Skip to content

Chạy thử và gỡ lỗi ​

KHIM Engine chạy world của bạn đúng như một game server và app của người chơi - cùng vật lý, cùng script, cùng HUD - nên phần lớn lỗi lộ ra trước khi có ai khác chơi.

Ba cách chạy thử ​

PhímChạy gì
PlayF5Một server và một người chơi: nhân vật của bạn xuất hiện ở điểm hồi sinh
Play HereNhư trên, nhưng nhân vật đứng ở chỗ camera
RunF8Chỉ server, không nhân vật: xem vật lý và Script từ camera của trình dựng
StopShift F5Dừng và trả world về như cũ
RestartCtrl Shift F5Dừng, rồi chạy lại kiểu cũ

Khi đang chạy thử, world chỉ đọc: Save, Undo và việc sửa chờ tới khi bạn dừng. Không gì bài chạy thử làm được giữ lại.

Khi chạy thử, Hierarchy cho thấy đúng những gì người chơi có: ServerService và StorageService trống và ghi "server only", Script của server bị ẩn. ClientScript khi chạy thử không với tới được thứ mà người chơi thật không với tới - nên bài thử không bao giờ "đậu nhầm".

Chọn Body của nhân vật trong Hierarchy để đổi Health, WalkSpeed và JumpPower ngay khi đang chạy: thử giá trị trước khi viết vào script.

Console ​

Ctrl J. Bắt đầu chạy thử sẽ đưa nó lên trước.

  • Output của server màu xanh lá, của người chơi (ClientScript) màu xanh dương, cảnh báo màu cam, lỗi màu đỏ.
  • Mỗi dòng ghi nó từ đâu - [Coins:12] text - bấm vào là mở script đó ở dòng đó.
  • Messages, Warnings và Errors bật tắt được, kèm số đếm; ô tìm tìm cả nội dung lẫn nguồn.
  • Lỗi script được tách thành: lỗi (link tới dòng), ý nghĩa thường gặp bằng lời dễ hiểu, và Show the calls that led here để xem chuỗi lời gọi.

Ví dụ attempt to index nil with 'parent' đi kèm giải thích: thứ đứng trước .parent là nil: đối tượng đó chưa có (hoặc chưa tới), hoặc tên viết khác. Kiểm tra tên trong Hierarchy, hoặc chờ nó bằng :waitFor("Name").

Copy và Export lấy các dòng đang hiện.

Command Line ​

Nằm dưới Console. Code Luau gõ vào chạy ngay - trên world đang dựng, hoặc trên bài chạy thử nếu đang chạy:

lua
for _, p in world:children() do if p.name == "Coin" then p.color = rgb(255, 200, 0) end end

Problems ​

Tab Problems (cạnh Console) liệt kê lỗi và cảnh báo của mọi script cùng lúc, dù mở hay không: lỗi cú pháp, lỗi mỗi script dừng lại ở lần chạy thử trước, cảnh báo lint và lỗi kiểu. Bấm một dòng để mở script ở đúng dòng. Run > Check all scripts kiểm tra tất cả.

Khi bạn gõ, trình soạn đánh dấu vấn đề ngay tại chỗ:

  • Gạch đỏ - lỗi: lỗi cú pháp, hoặc giá trị sai kiểu.
  • Vàng - cảnh báo: tên chưa định nghĩa (kèm tên bạn có lẽ định gõ: 'pirnt' is not defined; did you mean print?), gõ sai thành viên của thư viện, code không bao giờ chạy tới...
  • --!nolint ở đầu script tắt cảnh báo lint; --!strict kiểm tra mọi kiểu, --!nocheck không kiểm tra.

Trình gỡ lỗi (debugger) ​

Breakpoint, tạm dừng và chạy từng bước, cho cả Script của server lẫn ClientScript của người chơi.

  1. Bấm vào rãnh hẹp giữa số dòng và nội dung, hoặc bấm F9 trên dòng đó: một chấm đỏ.
  2. Bấm F5. Khi script chạy tới dòng đó, cả bài chạy thử đứng yên - vật lý, nhân vật, mọi script - và bảng Debugger mở ra.
  3. Đọc Call Stack và Variables (biến cục bộ, upvalue, biến toàn cục; mở bảng và đối tượng bằng mũi tên).
  4. Chạy tiếp:
Phím
Continue (tiếp tục)F5
Pause (tạm dừng)F6
Step overF10
Step intoF11
Step outShift F11

Với Stop on errors bật (mặc định), lỗi script cũng dừng bài chạy thử ở dòng lỗi, biến sẵn sàng để đọc. Chuột phải vào breakpoint để tắt mà không xoá.

Nặng tới đâu? ​

F3 hiện trên khung nhìn: số khung hình mỗi giây, mili giây xử lý mỗi khung, số part được vẽ và số lệnh vẽ. Khi chạy thử, dòng thứ hai nêu bốn script bận nhất: Scripts 0.42 ms a frame: Coins 0.30 Shop (client) 0.08.

Với game đang live, trang Live của Workshop cho thấy thời gian vòng lặp và bộ nhớ script của từng phiên, và Console của nó nêu tên script ngốn nhiều CPU.

Thử với nhiều người chơi ​

Play chỉ có một người chơi. Để xem hai người thấy gì - trao đổi, đánh nhau, chung một cánh cửa - hãy go live (game vẫn để riêng tư được) và vào từ hai thiết bị, hoặc từ app KHIM và trình duyệt.

Log ​

Nếu KHIM Engine bị tắt hoặc một shader không biên dịch được, lý do nằm trong runtime/studio/studio_log.txt ở thư mục cài đặt (%LOCALAPPDATA%\KHIM Studio trên Windows). Lần chạy trước được giữ ở studio_log.old.txt.