Các kịch bản có nên tương tác với một sự trừu tượng của động cơ?


10

Tôi đang sử dụng Java và Jython và sau một số nghiên cứu tôi phát hiện ra việc cho các tập lệnh truy cập trực tiếp vào giao diện công cụ có thể là một sai lầm, vì nó sẽ kết hợp chặt chẽ cả hai.

Có vẻ như hầu hết các kịch bản cho phép các mod tạo và quản lý các thực thể làm như vậy thông qua một số loại trừu tượng. Là những trừu tượng ở đó vì lý do này, hay chỉ là để cung cấp một cách trực quan hơn cho những người không lập trình để sửa đổi trò chơi?

Câu trả lời:


7

Cả hai, nói chung. Các tập lệnh của bạn nên nói chuyện với một lớp chức năng trừu tượng - hoặc ít nhất là trung gian - chứ không phải chính động cơ.

Đầu tiên, điều này cung cấp cho bạn một biện pháp kiểm soát và bảo mật bổ sung. Nó cho phép bạn dễ dàng, xác định rõ ràng giao diện mà tập lệnh được phép có với trò chơi của bạn và do đó, những gì nó có thể gây ra, cũng như cho phép bạn đặt thêm kiểm tra bảo mật trong trung gian mà sau đó không nhất thiết phải phù hợp trong lớp chức năng thực tế của chính nó.

Thứ hai, nó cho phép bạn đơn giản hóa giao diện tiếp xúc với các tập lệnh để thân thiện với người lập trình hơn hoặc dễ sử dụng hơn nói chung.

Nó cung cấp một chút cách nhiệt chống lại sự ghép nối giữa hai thứ, nhưng nó thường không phải vấn đề lớn vì các tập lệnh sẽ luôn được ghép nối với các giao diện mà chúng được phép tương tác, theo bản chất của chúng. Hai điểm khác có lợi hơn nhiều.


3

Tôi cũng nghĩ rằng nó giúp bạn trong trường hợp bạn muốn sửa đổi động cơ. Bạn có thể thực hiện chúng mà không phải lo lắng về việc phải thay đổi tất cả các tập lệnh của mình kể từ khi công cụ thay đổi. Bạn chỉ cần thay đổi lớp trừu tượng mà Josh đã đề cập.


1

Tạo một lớp giữa cốt lõi của trò chơi và các kịch bản, được sử dụng để tạo các sửa đổi, theo tôi, là cần thiết.

Bạn có được một số lợi thế bằng cách sử dụng phương pháp này:

Dễ dàng hơn cho các modder:
Một lý do tốt để làm điều này là, như bạn đã đề cập, một cách dễ dàng hơn để tạo mod. Viết ít dòng mã hơn có nghĩa là dễ đọc hơn và giảm thiểu các vấn đề hiểu biết cho người mới lập trình. Lý tưởng nhất, API này phải là một tập hợp các phương pháp để thay đổi thứ gì đó ở cấp độ cao của trò chơi . Điều này có nghĩa là ví dụ: Sinh ra một thực thể mà không biết làm thế nào nó thực sự được sinh ra hoặc hiển thị một hình ảnh với một cuộc gọi, chỉ lấy tên hình ảnh làm tham số.
Bạn, với tư cách là một lập trình viên, cũng được hưởng lợi từ nó, vì bạn có thể viết nhiều hơn trong thời gian ngắn hơn bạn cần với Java.

Bảo mật:
Ngăn chặn mọi người kiểm soát toàn bộ trò chơi là điều cần thiết. Tôi sẽ không quan tâm, nếu trò chơi là một tựa game đơn, nhưng tôi sẽ quan tâm khi trò chơi có một số hành động nhiều người chơi. Ngay cả khi nó chỉ là một bảng điểm cao.
Người khác luôn nản lòng, khi ai đó chiến thắng vì gian lận (ví dụ: thay đổi vị trí, cụ thể hơn: thay đổi vị trí và giới hạn cờ trực tiếp). Để ngăn người chơi làm như vậy là nhiệm vụ chính của bạn ở đây.
Hãy nhớ rằng, kẻ lừa đảo luôn có thể dịch ngược, thay đổi mã, biên dịch lại và chơi với ứng dụng khách này, vì vậy hãy thêm kiểm tra về phía máy chủ. Nói chung, "Bảo mật" được cung cấp chỉ là một tùy chọn khác, không phải là 100% an toàn để làm cho cuộc sống của những kẻ gian lận trở nên khó khăn hơn.

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.