Tôi đã vật lộn với cách triển khai kịch bản trong công cụ trò chơi của mình. Tôi chỉ có một vài yêu cầu: Nó phải trực quan, tôi không muốn viết một ngôn ngữ tùy chỉnh, trình phân tích cú pháp và trình thông dịch, và tôi không muốn sử dụng luồng. (Tôi chắc chắn có một giải pháp đơn giản hơn; tôi không cần rắc rối của nhiều luồng logic trò chơi.) Đây là một kịch bản ví dụ, trong Python (còn gọi là mã giả):
def dramatic_scene(actors):
alice = actors["alice"]
bob = actors["bob"]
alice.walk_to(bob)
if bob.can_see(alice):
bob.say("Hello again!")
else:
alice.say("Excuse me, Bob?")
Đó là đoạn sử thi kể chuyện đặt ra vấn đề thực hiện. Tôi không thể đánh giá toàn bộ phương pháp cùng một lúc, vì walk_to
mất thời gian trò chơi. Nếu nó trở lại ngay lập tức, Alice sẽ bắt đầu đi đến chỗ Bob và (trong cùng một khung) nói xin chào (hoặc được chào đón). Nhưng nếu walk_to
một cuộc gọi chặn trở lại khi cô ấy gặp Bob, thì trò chơi của tôi bị kẹt, bởi vì nó chặn cùng một chuỗi hành quyết sẽ khiến Alice bước đi.
Tôi đã cân nhắc việc biến mỗi chức năng thành một hành động - alice.walk_to(bob)
sẽ đẩy một vật thể lên hàng đợi, thứ sẽ bật ra sau khi Alice đến Bob, bất cứ nơi nào anh ta ở. Điều đó bị phá vỡ một cách tinh tế hơn: if
chi nhánh được đánh giá ngay lập tức, vì vậy Bob có thể chào Alice ngay cả khi lưng anh quay về phía cô.
Làm thế nào để các công cụ / người khác xử lý kịch bản mà không tạo chủ đề? Tôi đang bắt đầu tìm kiếm ở các khu vực không phải là nhà phát triển trò chơi, như chuỗi hoạt hình jQuery, để tìm ý tưởng. Có vẻ như nên có một số mô hình tốt cho loại vấn đề này.