Một tập lệnh thường là một đoạn mã chạy bên ngoài công cụ cốt lõi của bạn. Nó thường được chứa trong các tệp văn bản bất cứ nơi nào bạn muốn giữ chúng. Sau đó, nó thường được tải bởi công cụ, phân tích cú pháp và thực thi trong thời gian chạy.
Điều thường xảy ra là bất cứ ngôn ngữ nào bạn sử dụng (ví dụ Lua, Angelscript), ngôn ngữ này thường có một số phương tiện cho phép lập trình viên động cơ thể hiện các chức năng của động cơ hoặc thậm chí toàn bộ các lớp đối với "công cụ kịch bản lệnh" hiện đang chạy .
Ví dụ: (ví dụ hoàn toàn ngu ngốc, nhưng chỉ để hiểu rõ hơn) mã trò chơi của bạn có thể có chức năng công khai sinh ra zombie ở đâu đó:
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
Ngôn ngữ kịch bản mà bạn sử dụng bây giờ cho phép bạn hiển thị chức năng này cho trình phân tích cú pháp kịch bản đang chạy. Điều này có nghĩa là bạn có thể mở tệp văn bản, viết "SpawnZombie (200.300.1337)" và khi công cụ của bạn thực thi mã, Zombie sẽ sinh ra tại vị trí đó.
Các câu trả lời khác đã liệt kê một vài ví dụ hay về cách sử dụng điển hình này, nhưng chúng bỏ qua một điểm mà tôi thấy rất quan trọng:
Các loại kịch bản này làm cho nó rất dễ dàng để gỡ lỗi hoặc kiểm tra trò chơi trong thời gian chạy.
Giả sử bạn muốn tìm ra cách hoàn hảo để đặt zombie vào bản đồ để nó có hiệu ứng sợ hãi tối đa đối với người chơi khi họ phát hiện ra nó. Nếu không có hỗ trợ kịch bản, bạn phải thoát khỏi ứng dụng, thay đổi một số số ma thuật trong mã, biên dịch lại và kiểm tra nó.
Với hỗ trợ kịch bản (cung cấp cho bạn một số phương pháp nhập văn bản trong thời gian chạy, ví dụ: bảng điều khiển gỡ lỗi), bạn chỉ cần nhập "SpawnZombie (333,444,555)" và xem nó trông như thế nào.
Theo cách tương tự, bạn có thể sinh ra vũ khí, xe cộ, tải các bản đồ khác nhau, thay đổi giá trị của một số thứ trong trò chơi, v.v., đánh bại kẻ thù vì bạn không muốn lãng phí thời gian để đến phần cần phải có thử nghiệm, vv
Điều này sẽ giúp bạn tiết kiệm hàng tấn lần trong các trò chơi phức tạp hơn.