Làm thế nào để các nhà sản xuất trò chơi của Wikipedia công cụ như Blitz3D tạo các tệp .exe?


8

Có một số ứng dụng như Blitz3D hoặc các loại công cụ xây dựng trò chơi khác biên dịch tập lệnh hoặc dữ liệu trò chơi khác thành một tệp thực thi duy nhất. Làm thế nào để họ làm điều đó?

Câu trả lời:


10

Các công cụ khác nhau tiếp cận theo những cách khác nhau, nhưng cách Blitz3D thực hiện là gói mã và trình thông dịch thành một gói. Sau đó, khi bạn chạy exe, nó sẽ khởi chạy trình thông dịch và chuyển vào mã được gói. Nó khá giống với cách mà Python hoạt động khi sử dụng py2exe.

Trong nhiều công cụ phát triển trò chơi, mã được gói cùng với tệp thực thi chỉ đơn giản là văn bản thô mà trình thông dịch phân tích cú pháp. Tuy nhiên, một số sử dụng cách tiếp cận mã byte như Java, trong đó mã nguồn được chuyển thành dạng trung gian mà máy ảo sử dụng. Tôi nghĩ Unity sử dụng phương pháp sau này nhưng tôi không chắc.

Ngoài đầu tôi, tất cả các công cụ phát triển trò chơi tôi có thể nghĩ rằng các gói thực thi gói đó dựa trên cách tiếp cận này của trình thông dịch lõi / máy ảo và sau đó đóng gói nó bằng mã hoặc là các thư viện mà bạn biên dịch trong Visual Studio hoặc bất cứ thứ gì.


Là cách tiếp cận thứ hai là nhanh hơn so với cách thứ nhất?
Quazi Irfan

Có những ưu và nhược điểm, nhưng điều cần lưu ý liên quan đến tốc độ là tất cả các mã quan trọng thực sự tốc độ (ví dụ: thói quen kết xuất) đều nằm trong trình thông dịch và do đó tốc độ của mã thông dịch không quan trọng. Mã thông dịch chỉ đơn giản gọi một hàm như loadMesh () và trình thông dịch thực hiện phần còn lại. Đó là tình huống chính xác giống như sử dụng ngôn ngữ kịch bản được nhúng trong công cụ trò chơi; thật vậy, có những cuộc tranh luận thường xuyên trên diễn đàn của Blitz3D về việc nó có phải là một "công cụ trò chơi" hay không.
jhocking

-1

Luồng chương trình, xử lý biến và tương tự được biên dịch thành mã máy thuần túy, trong khi các lệnh cấp cao được triển khai dưới dạng các hàm thư viện C ++ được gọi từ thư viện thời gian chạy được biên dịch thành mọi tệp thực thi do Blitz tạo. Non thuộc họ Blitz Basic được hiểu như Python.


Tôi không chắc ý của bạn là gì khi "triển khai như các hàm thư viện C ++ được gọi từ thư viện thời gian chạy", nhưng đó chỉ là một cách thú vị để nói mã người dùng được hiểu bởi công cụ cốt lõi, hoặc bạn chỉ đơn giản là nhầm. Cách đây vài năm, có một sản phẩm tồn tại trong thời gian ngắn có tên CoolBasic hoạt động bằng cách thay thế mã người dùng trong exe Blitz3D (tất nhiên nó đã bị đóng cửa vì điều này là hack tính hợp pháp đáng ngờ); sẽ không hoạt động nếu mã của người dùng được biên dịch vào thời gian chạy.
jhocking
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.