ซ่อนข้อมูลเกมจากผู้เล่นหรือไม่


13

ฉันกำลังทำงานในเกมแรก (C ++) ของฉันและฉันต้องการใช้การออกแบบตามองค์ประกอบ ฉันอ่านมากเกี่ยวกับเรื่องนี้เมื่อเร็ว ๆ นี้และเมื่อวานนี้ฉันตัดสินใจว่าฉันต้องการเก็บข้อมูลวัตถุในไฟล์ JSON ภายนอกเพื่อให้มีความยืดหยุ่นและเข้าถึงได้ง่ายขึ้น

จากนั้นก็เริ่มที่ฉันที่ทิ้งไฟล์เหล่านี้ไว้ในไดเรกทอรีต้นไม้ของเกมจะอนุญาตให้ผู้เล่นแก้ไขสิ่งที่พวกเขาต้องการได้อย่างง่ายดาย

ฉันไม่ได้กังวลเกี่ยวกับการแสดงรหัสให้กับนักพัฒนาเพราะเกมจะเป็นโอเพ่นซอร์ส แต่ฉันเกรงว่านักเล่นเกมที่ไม่มีประสบการณ์อาจทำลายเกมหรืออย่างน้อยก็ทำลายความสนุก

ฉันพลาดอะไรไปรึเปล่า? นโยบายเกี่ยวกับการซ่อนข้อมูลเกม (ในเกมโอเพ่นซอร์ส) คืออะไร เป็นเรื่องปกติหรือไม่ที่จะปล่อยให้ทุกคนสามารถเข้าถึงได้โดยง่าย

ถ้าไม่เป็นวิธีที่ดีในการซ่อนข้อมูลคืออะไร?


3
โดยทั่วไปความสามารถในการปรับเปลี่ยนเกมเป็นคุณสมบัติไม่ใช่ข้อผิดพลาดโดยเฉพาะอย่างยิ่งสำหรับการเล่นเกมแบบผู้เล่นเดี่ยว
jprete

8
ฉันจะไม่รำคาญจริงๆ เวลาของคุณดีขึ้นในการสร้างเกมที่ดี =)
Jari Komppa

1
ฉันอยากจะคิดว่า (เกือบ) ทุกคนที่ดาวน์โหลดเกมโอเพ่นซอร์สรู้ดีพอที่จะเพลิดเพลินไปกับข้อมูลเกมและทำลายเกมที่กำลังดำเนินการอยู่ หากเป็นเกมที่ดีคุณจะเห็นวิกิอธิบายรูปแบบ JSON ของคุณปรากฏขึ้นในเวลาไม่นาน!
ไม่เป็นไร

คำตอบ:


33

หากผู้เล่นคนจรจัดและทำลายความสนุกฉันจะบอกว่านั่นเป็นปัญหาของพวกเขา สำหรับคนจรจัดครึ่งหนึ่งความสนุกก็คือการได้เห็นว่าอะไรจะหยุดพัก

มันเหมือนกับการเป็นกังวลว่าผู้เล่นจะใช้รหัสโกงโหมด god และกังวลว่าผู้เล่นจะไม่ถูกท้าทาย

ฉันจะไม่ทำอะไรนอกจากใส่ไฟล์ปรับแต่งเหล่านั้นในไฟล์ zip (ซึ่งคุณควรทำต่อไปเพื่อโหลดครั้ง) และทำให้แน่ใจว่ารหัสของคุณสามารถจัดการข้อมูลที่เสียหายได้อย่างสง่างาม


20

ฉันเกรงว่านักเล่นเกมที่ไม่มีประสบการณ์อาจทำลายเกมหรืออย่างน้อยก็ทำลายความสนุก

หากพวกเขากำลังยุ่งกับข้อมูลเกมนั่นคือสิ่งที่พวกเขาคิดว่า 'สนุก' คุณไม่จำเป็นต้องปกป้องพวกเขาจากสิ่งนี้ ข้อมูลส่วนประกอบเอนทิตีเป็นสปอยเลอร์แทบจะไม่ทั้งหมด บางทีถ้าคุณมีข้อมูลการสนทนาหรือการค้นหาอยู่ที่นั่นอาจเป็นปัญหา แต่อาจไม่ใช่ นักเล่นเกมส่วนใหญ่ไม่รู้จักที่จะมองหาสิ่งเหล่านี้โดยไม่คำนึงถึงการค้นหาผ่านหรือแก้ไขมัน

คำแนะนำของฉันคือ zip มันขึ้นมาและเปลี่ยนชื่อนามสกุลไฟล์ สิ่งนี้จะป้องกันผู้มองหาที่ไม่เป็นทางการ แต่จะไม่ยากสำหรับคุณที่จะทำงานกับ คุณสามารถใช้บางอย่างเช่นPhysicsFSเพื่อทำงานกับไฟล์


5
อ๋อ ฉันจำได้ว่าเล่น Colonization กับ Amiga พารามิเตอร์ของหน่วยถูกเก็บไว้ในไฟล์ข้อความธรรมดาที่มีtxtนามสกุลมาตรฐาน หลังจากเล่นค่อนข้างมากฉันตัดสินใจว่าจะทำให้เกมยากขึ้นโดยการปรับพารามิเตอร์เหล่านั้น หลังจากนั้นฉันแบ่งปันการตั้งค่าเหล่านั้นกับเพื่อน ๆ มันสนุก ...
liori

3

คุณสามารถจัดเก็บข้อมูลที่เข้ารหัสโดยใช้รูปแบบการเข้ารหัสแบบสมมาตร (AES) แต่นี่ไม่มีจุดหมาย: ซอฟต์แวร์เป็นopensourceเพื่อให้ทุกคนสามารถอ่านคีย์และถอดรหัสข้อมูลได้ นี่เป็นเพียง "หยุด" นักเล่นเกมทั่วไปที่ไม่โกง

และมันจะไม่มีจุดหมายแม้แต่ในโครงการโอเพ่นซอร์สเนื่องจากมันค่อนข้างง่ายในการค้นหากุญแจในไบนารีของเกม

ดังนั้นคุณมีความเป็นไปได้สองอย่าง:

  1. เพียงปล่อยสิ่งที่ไม่ได้เข้ารหัส (แต่อย่างน้อยก็เก็บ md5 hash ของไฟล์ทุกไฟล์เพื่อให้คุณสามารถตรวจสอบได้ที่ runtime เพื่อป้องกันความเสียหายในการแจกจ่ายเกมของคุณ);
  2. ไปปิดแหล่งที่มาช่วงชิงข้อมูล (ด้วยอัลกอริทึมแบบย้อนกลับได้หลายขั้นตอนลับเช่นสตริงกลับ + การแลกเปลี่ยนไบต์ + xor กับสตริงคงที่ ฯลฯ .. ) แล้วเข้ารหัสทุกอย่างด้วย AES มันจะยากสำหรับทุกคนในการกู้คืนข้อมูล ยากกว่ามาก

1
แม้แต่วิธีการปิดแหล่งที่มาของคุณก็ไม่ยาก ผู้คนเดียวกันกับที่ทำลายรูปแบบที่ใช้ในการป้องกันการคัดลอกเป็นประจำอาจทำลายได้เช่นกัน ความแตกต่างที่สำคัญคือพวกเขาจะไม่รบกวน
jprete

@ jprete: แน่นอน มันเป็นเพียงเรื่องของเวลา แต่เวลามีความสำคัญสำหรับคนดังนั้นการทำให้มันยากและไม่ทำกำไรบางครั้งก็เพียงพอแล้ว
gd1

3

ฉันจะทิ้งไว้ มีชุมชน mod ขนาดใหญ่และผู้เล่นเช่นการเปลี่ยน / modding เกม หากพวกเขาทำลายบางสิ่งบางอย่างมันอยู่กับพวกเขา พวกเขาสามารถติดตั้งใหม่ได้เสมอ

นอกจากนี้ยังทำให้การทำงานกับนักพัฒนาซอฟต์แวร์รายอื่นง่ายขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.