Ẩn dữ liệu trò chơi từ người chơi?


13

Tôi đang làm việc trên trò chơi (C ++) đầu tiên của mình và tôi muốn sử dụng một thiết kế dựa trên thành phần. Gần đây tôi đã đọc rất nhiều về điều này và hôm qua tôi quyết định tôi muốn lưu trữ dữ liệu đối tượng trong các tệp JSON bên ngoài, để cho phép linh hoạt hơn và dễ truy cập hơn.

Sau đó, tôi nhận ra rằng việc để các tệp này trong cây thư mục của trò chơi sẽ cho phép người chơi sửa đổi bất cứ điều gì họ muốn rất dễ dàng.

Tôi không lo lắng về việc hiển thị mã cho các nhà phát triển, vì trò chơi sẽ là nguồn mở, nhưng tôi sợ một game thủ thiếu kinh nghiệm có thể phá vỡ trò chơi hoặc ít nhất là phá hỏng cuộc vui.

Tui bỏ lỡ điều gì vậy? Chính sách nào về việc ẩn dữ liệu trò chơi (trong các trò chơi nguồn mở)? Có phải là bình thường để mọi thứ dễ dàng truy cập cho bất cứ ai?

Nếu không, một cách tốt để ẩn dữ liệu là gì?


3
Thông thường khả năng sửa đổi trò chơi là một tính năng, không phải là lỗi, đặc biệt là khi chơi trò chơi một người chơi.
jprete

8
Tôi sẽ không làm phiền, thực sự. Thời gian của bạn tốt hơn dành cho việc tạo ra một trò chơi tốt. =)
Jari Komppa

1
Tôi có xu hướng nghĩ rằng (hầu hết) bất kỳ ai tải xuống một trò chơi nguồn mở đều biết đủ để thực sự thích mày mò dữ liệu trò chơi và phá vỡ trò chơi trong quá trình này. Nếu đó là một trò chơi hay, bạn sẽ thấy một wiki giải thích định dạng JSON của bạn sẽ bật lên ngay lập tức!
Nevermind

Câu trả lời:


33

Nếu người chơi mày mò và phá hỏng cuộc vui, tôi sẽ nói đó là vấn đề của họ. Đối với tinkerers một nửa niềm vui là nhìn thấy những gì phá vỡ.

Nó giống như lo lắng rằng người chơi sẽ sử dụng mã cheat chế độ thần và lo lắng rằng người chơi không bị thách thức.

Tôi sẽ không làm gì hơn là đặt các tệp cấu hình đó vào một tệp zip (điều mà bạn có lẽ nên làm dù sao để tải thời gian) và đảm bảo mã của bạn có thể xử lý dữ liệu bị hỏng một cách duyên dáng.


20

Tôi sợ một game thủ thiếu kinh nghiệm có thể phá vỡ trò chơi hoặc ít nhất là phá hỏng cuộc vui.

Nếu họ đang hòa nhập với dữ liệu trò chơi, thì đó là điều họ cho là 'vui vẻ'. Bạn không cần phải bảo vệ họ khỏi điều này. Rốt cuộc, dữ liệu thành phần thực thể hầu như không phải là một spoiler. Có thể nếu bạn có dữ liệu đối thoại hoặc nhiệm vụ trong đó, nó sẽ là một vấn đề, nhưng có lẽ là không. Hầu hết các game thủ thậm chí không biết tìm kiếm thứ này ở đâu, không bao giờ cố tình tìm kiếm thông qua nó hoặc chỉnh sửa nó.

Lời khuyên của tôi là nén nó và đổi tên phần mở rộng tập tin. Điều này sẽ giúp người tìm kiếm bình thường nhưng sẽ không khó để bạn làm việc cùng. Bạn có thể sử dụng một cái gì đó như Vật lý học để làm việc với các tệp.


5
Vâng. Tôi nhớ chơi Thuộc địa trên Amiga. Các thông số của các đơn vị được lưu trữ trong một tệp văn bản đơn giản với txtphần mở rộng tiêu chuẩn . Sau khi chơi khá nhiều, tôi quyết định rằng tôi sẽ làm cho trò chơi khó hơn bằng cách điều chỉnh các tham số đó. Sau đó tôi đã chia sẻ những cài đặt đó với bạn bè. Thật là vui ...
liori

3

Bạn có thể lưu trữ dữ liệu được mã hóa , sử dụng sơ đồ mã hóa đối xứng (AES), nhưng điều này là vô nghĩa: phần mềm là mã nguồn mở , vì vậy mọi người đều có thể đọc khóa và do đó giải mã dữ liệu. Điều này sẽ chỉ "ngăn chặn" các game thủ bình thường gian lận.

Và nó sẽ là vô nghĩa ngay cả trong các dự án nguồn đóng, vì khá dễ dàng để tìm khóa vào nhị phân trò chơi.

Vì vậy, bạn có hai khả năng:

  1. chỉ để lại những thứ không được mã hóa (nhưng ít nhất là thu thập băm md5 của mỗi tệp, để bạn có thể kiểm tra nó trong thời gian chạy chống lại bất kỳ thiệt hại nào trong việc phân phối trò chơi của bạn);
  2. đi đến nguồn đóng , xáo trộn dữ liệu (với thuật toán nhiều bước có thể đảo ngược bí mật như đảo ngược chuỗi + hoán đổi byte + xor với một chuỗi không đổi, v.v ...) và sau đó mã hóa mọi thứ bằng AES. Sẽ khó hơn cho bất cứ ai để phục hồi dữ liệu. Khó hơn rất nhiều.

1
Ngay cả phương pháp nguồn đóng của bạn cũng không khó lắm. Những người thường xuyên phá vỡ các chương trình được sử dụng để chống sao chép cũng có thể phá vỡ điều đó. Sự khác biệt chính là họ sẽ không làm phiền.
jprete

@jprete: chắc chắn rồi Đó chỉ là vấn đề thời gian, nhưng thời gian là rất quan trọng đối với mọi người, vì vậy làm cho nó trở nên khó khăn và không mang lại lợi nhuận, đôi khi, là vừa đủ.
gd1

3

Tôi sẽ để nó. Có một cộng đồng mod rất lớn và người chơi thích thay đổi / mod trò chơi. Nếu họ phá vỡ một cái gì đó, đó là vào họ. Họ luôn có thể cài đặt lại.

Cũng làm cho nó dễ dàng hơn cho các nhà phát triển khác để làm việc với.

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.