Hãy nói rằng tôi có một trò chơi được viết bằng C ++. Nhưng tôi muốn thêm một số chức năng sửa đổi hoặc kịch bản cho nó. Làm thế nào một người đi về việc thêm một chức năng kịch bản cho trò chơi của bạn?
Hãy nói rằng tôi có một trò chơi được viết bằng C ++. Nhưng tôi muốn thêm một số chức năng sửa đổi hoặc kịch bản cho nó. Làm thế nào một người đi về việc thêm một chức năng kịch bản cho trò chơi của bạn?
Câu trả lời:
Trước hết, bạn nên quyết định phần nào trong trò chơi của bạn được viết kịch bản. Một lựa chọn là có một trò chơi theo kịch bản hoàn chỉnh theo nghĩa là trong khi các hoạt động phụ trợ thời gian quan trọng được mã hóa trong C ++, tất cả logic trò chơi đều bằng ngôn ngữ kịch bản. Các nhà thiết kế sử dụng phụ trợ như một API được gọi từ ngôn ngữ kịch bản cấp cao. Ở một thái cực khác, bạn có thể có một vài vị trí cụ thể sử dụng tập lệnh, như giao diện người dùng hoặc các đoạn mã, với phần lớn mã trò chơi vẫn ở C ++. Có những lợi thế cho mỗi cách tiếp cận (tốc độ, tính linh hoạt, thời gian biên dịch, phạm vi trò chơi, v.v.), nhưng bạn cần phải quyết định trước.
Khi bạn biết cách bạn muốn sử dụng tập lệnh, bây giờ bạn cần quyết định xem bạn sẽ sử dụng ngôn ngữ tập lệnh hiện có hay ngôn ngữ dành riêng cho tên miền của bạn . Ngày nay có nhiều ngôn ngữ kịch bản để lựa chọn với các mục tiêu thiết kế và đối tượng mục tiêu khác nhau, vì vậy tôi không chắc liệu nó có đáng để tạo ra ngôn ngữ của riêng bạn nữa hay không. Nếu bạn quyết định tự thực hiện, đây là một số tài nguyên:
Lua là một ngôn ngữ kịch bản nhẹ phổ biến và dễ dàng để nhúng. Nó sử dụng một ngăn xếp để giao tiếp giữa máy chủ và ngôn ngữ nhúng và nó đã được sử dụng thành công trong nhiều trò chơi chuyên nghiệp . Sol2 đơn giản hóa quá trình ràng buộc Lua và C ++. Nếu bạn không thích cú pháp của Lua, Moonscript là ngôn ngữ biên dịch thành Lua và thêm một bộ tính năng hay.
Các tùy chọn khác bao gồm AngelCode , cho phép bạn gọi trực tiếp các hàm C và C ++. Python và Ruby phức tạp hơn một chút để nhúng, nhưng rất dễ chịu khi lập trình. Nếu bạn muốn nhúng Python thì hãy xem Boost.Python . Một ý tưởng khác là nhúng JavaScript để tận dụng các công cụ tạo kịch bản nhanh được phát triển cho các trình duyệt (xem V8 và SpiderMonkey ).
Tôi đã viết một bài về việc nhúng tập lệnh GameMonkey vào một trò chơi bằng DragonFire SDK tại đây .
Về cơ bản, ý tưởng là đưa các hàm C \ C ++ của bạn sang ngôn ngữ kịch bản lệnh đã chọn và sử dụng chúng từ tập lệnh của bạn. Trong hướng dẫn của tôi, tôi đã trưng ra 2 chức năng từ DragonFire SDK. Khi bắt đầu trò chơi, tôi gọi hàm onStart từ tập lệnh và khi cập nhật, tôi gọi hàm onTimer từ tập lệnh.
Mong rằng sẽ giúp!