Đối với một công cụ trò chơi tùy chỉnh, tôi nên làm gì nếu dữ liệu cốt lõi của tôi bị sai hoặc thiếu?


27

Tôi đang viết một công cụ tùy chỉnh cho một trò chơi. Tôi đã bắt đầu trò chơi này tốt trước khi tôi hiểu tại sao tôi nên sử dụng phần mềm trung gian, thay vào đó, và nó quá xa để viết lại.

Phần lớn dữ liệu của tôi đến từ các tệp bên ngoài và tôi không chỉ đề cập đến tài sản; Tôi xác định tất cả các đối tượng trò chơi của mình thông qua .JSON. Nhưng, than ôi, tôi là con người; đôi khi các tệp dữ liệu của tôi không hợp lệ hoặc tôi thay đổi định dạng nhưng quên cập nhật tệp hoặc bản thân trình tải bị lỗi.

Nếu vì lý do nào đó, một nỗ lực tải một số dạng tài sản trong công cụ tùy chỉnh không thành công, tôi có những lựa chọn nào?

Đây không phải là một bản sao của Làm thế nào tôi nên xử lý các tài nguyên bị thiếu? , vì câu hỏi đó là về các tài sản hướng tới người dùng như mô hình hoặc kết cấu. Hoạ tiết xấu có thể được thay thế bằng bảng kiểm tra, âm thanh xấu với sự im lặng và văn bản xấu bằng "LRI". Vấn đề của tôi nằm ở dữ liệu quan trọng đối với trò chơi ngay cả khi đang chạy, chẳng hạn như cấp độ, định nghĩa đối tượng trò chơi và bố cục GUI.


7
Tôi sử dụng một cách tiếp cận tương tự cho trò chơi của tôi. Tôi thực sự đã xây dựng một ứng dụng tiện ích nhỏ để tạo các tệp dữ liệu trò chơi của mình để tránh lỗi của con người - bằng cách này tôi chỉ có thể sửa đổi các tệp nếu tôi muốn thực hiện các thay đổi mà không cần phải viết 100.000 dòng JSON theo cách thủ công.
JDSweetBeat

Bạn cũng có thể chạy dữ liệu của mình thông qua trình xác nhận trước khi tải lên.
JDSweetBeat

JSON của tôi đủ nhỏ để tự động tạo ra nó sẽ vô dụng. Ngoài ra, một trình xác nhận sẽ không giúp đỡ nếu JSON bị thiếu hoặc có lỗi trong điều đáng lẽ phải đọc nó. Cảm ơn cho những suy nghĩ, mặc dù.
JesseTG

Câu trả lời:


44

Đăng nhập một lỗi và duyên dáng thoát.

Lý tưởng nhất là hiển thị một lỗi con người có thể đọc được trên màn hình. Cần có một hệ thống cốt lõi của chức năng mã hóa cứng hoạt động mà không có các tệp dữ liệu này. Đó là cùng một đường ống tải các tệp dữ liệu ở vị trí đầu tiên. Nó phải có khả năng phát hiện khi các tệp dữ liệu cốt lõi này bị hỏng hoặc bị lỗi và kết thúc ứng dụng. Nếu người dùng có ý định sửa đổi các tệp này, sẽ không có nhiều thứ khác có thể được thực hiện. Mặt khác, bạn cần thực hiện một chiến lược thử nghiệm để đảm bảo các loại tham nhũng này không xảy ra. Sau đó, bạn có thể đảm bảo bạn chỉ phát hành các tệp dữ liệu hợp lệ.


12

Byte56 đã đề cập đến một lựa chọn. Có ít nhất một cái khác:

Giả sử giá trị mặc định và hiển thị Cảnh báo.

Tùy thuộc vào bản chất của dữ liệu của bạn, có thể hoàn toàn chấp nhận được khi giả sử một số giá trị mặc định và cảnh báo người dùng rằng "vì tệp xxx không tải được, chúng tôi đang sử dụng một đối tượng yyy chung".


6

Nó phụ thuộc vào việc điều này xảy ra trong quá trình phát triển hoặc phát hành.

Trong quá trình phát triển, bạn sẽ có tất cả các loại thiếu, lỗi và lộn xộn, liên tục, mọi lúc và thậm chí bạn có thể muốn "nóng" tải tài sản theo yêu cầu hoặc thay thế một tài sản trong khi trò chơi đang chạy. Bạn có thể chỉnh sửa các tập lệnh với trò chơi đang chạy để kiểm tra AI hoạt động tốt hơn hoặc bất cứ điều gì tương tự.

Sẽ khó chịu nhất nếu chương trình hiển thị hộp thoại báo lỗi và thoát ra mỗi lần, và bạn phải khởi động lại nó mất 2-3 phút. Mục tiêu trong phát triển là cản trở bạn (có thời gian là tài sản quý giá nhất) càng ít càng tốt.
Vì vậy, nếu ví dụ, một kết cấu bị thiếu, bạn sẽ muốn thấy một cái gì đó giống như một bàn cờ trắng đỏ, có thể với từ "mất tích" được đánh vần trên đầu nó như một kết cấu thay thế, vì vậy rõ ràng là có gì đó kỳ lạ . Nhưng bạn không muốn trò chơi thoát ra một cách duyên dáng, thậm chí không gặp sự cố. Thông tin chi tiết về những gì còn thiếu trong logfile của bạn là vô cùng hữu ích.

Mặt khác, trong một bản phát hành, bộ tệp tài sản hoàn chỉnh lý tưởng nhất là [1] đã đi qua đường dẫn tài sản tự động của bạn. Điều này cần không nhiều hơn một trình phân tích cú pháp đơn giản đọc trong tất cả các JSON của bạn và sau đó kiểm tra chéo rằng mọi mô-đun đều nhất quán và xác minh rằng mọi tài sản mà bạn tham chiếu thực sự ở đó, và sau đó nén toàn bộ tệp theo một số cách đã biết (nhưng không nhất thiết là tiêu chuẩn) mà công cụ của bạn dễ đọc, tùy ý thêm một vài tổng kiểm tra.

Bạn biết rằng không thể có thất bại vì đường ống của bạn đã kiểm tra rằng mọi thứ đã ở đó trước khi bạn phát hành gói cho người dùng cuối. Vì vậy, nếu xảy ra lỗi, hoặc đã xảy ra lỗi truyền hoặc nhiều khả năng người dùng đang cố gắng gian lận. Trong cả hai trường hợp, chương trình sẽ hiển thị một thông báo nói rằng các tệp tài sản bị hỏng và thoát.

Ngoài ra, bạn có thể cung cấp tùy chọn tải xuống bản sao nguyên bản của tài sản từ internet (nếu bạn có máy chủ tải xuống). Nhưng để tránh cơn ác mộng hỗ trợ khách hàng, hãy nhớ hỏi trước khi tải xuống hàng gigabyte dữ liệu.


[1] Thực tế có thể trông khác, thậm chí bạn có thể tìm thấy tài sản bị thiếu trên các tựa game AAA mà các nhà sản xuất "nên biết", nhưng chúng thường có thời hạn không thực tế và các đội thay đổi lớn cũng vậy. Lý tưởng nhất là mọi thứ bạn gửi đã đi qua đường ống tự động và được đảm bảo hoàn thành.

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.