ฉันจะใช้ระบบ“ savegame” ที่ใช้รหัสผ่านแบบย้อนยุคได้อย่างไร


20

ฉันจะสร้างระบบรหัสผ่านสำหรับเกมที่มีผู้เล่นคนเดียวเหมือนกับที่ใช้ในเกมคอนโซลรุ่นเก่าได้อย่างไร

ตัวอย่างเช่นMega Man Xบันทึกงานโดยให้หมายเลขที่คุณสามารถป้อนในภายหลังเพื่อโหลดบันทึกของคุณ


3
อย่าทำในสิ่งที่ Donkey Kong (NES) ทำ - ซึ่งช่วยให้คุณบันทึกลงในตลับหมึก แต่ไม่ได้รักษาจำนวนชีวิตไว้ - ดังนั้นคุณจะต้องมีชีวิตมากมายตั้งแต่ระดับแรก (เช่น 24) ประหยัดไปนอนตื่น UP 3 - ฉันเกลียดที่
อเล็กซ์น้าน

10
บันทึกอวดความรู้: ระบบรหัสผ่านไม่ได้บันทึกรัฐเกมมันโหลดกำหนดไว้ล่วงหน้าหนึ่ง
Lilienthal

5
@ Lilienthal ไม่จำเป็นต้อง บางทีมันอาจเป็นแค่ "dump" ของตัวแปรบางตัวที่มีการสับแบบสองทางที่กำหนดไว้ล่วงหน้า
o0 '

2
@ โลฮาริสใช่ถ้าคุณมีเอนโทรปีเพียงพอในรหัสผ่านของคุณคุณสามารถพิจารณาว่ามันเป็นสถานะที่บันทึกไว้ซึ่งใกล้พอที่จะคล้ายกับ savegames ปัจจุบัน ท้ายที่สุดทั้งคู่ต้องการวิธีในการส่งออกและนำเข้าสถานะของเกม อย่างไรก็ตามเอนโทรปีที่จำเป็นสำหรับสิ่งที่คล้ายกับการบันทึกที่แท้จริง (ตำแหน่งที่แน่นอน / จุดตรวจ, ชีวิต, ศัตรูที่ถูกสังหาร, จำนวนกระสุน, .... ) จะต้องใช้รหัสผ่านที่ยาวมากและอัลกอริทึมที่ซับซ้อนมาก สำหรับกรณีที่การตัดสินใจใช้รหัสผ่านมากกว่า savegames นั้นสมเหตุสมผล (ถ้ามี) แม้แต่ maxim ควรเป็นจริง
Lilienthal

3
@AlecTeal อะไรคือสิ่งที่ว่า "โง่"? ฉันประเมินรหัสผ่านเทียบกับปริมาณข้อมูลที่จัดเก็บในเกมร่วมสมัยซึ่งไม่เหมาะสมกับคนส่วนใหญ่อย่างชัดเจน
Lilienthal

คำตอบ:


32

ก่อนอื่นให้ทำลายสถานะเกมของคุณ (หรือค่อนข้างแง่มุมของสถานะที่คุณต้องการบันทึก) ในกรณีของเกมสไตล์ร็อคแมนคุณอาจติดตามว่าบอสระดับใดที่คุณฆ่าจำนวนของการเพิ่มพลังเหมือนถังพลังงานที่คุณมีและอื่น ๆ

แพ็คข้อมูลนั้นทั้งหมดลงในฟิลด์บิตนั่นคือกำหนดจำนวนบิตที่เหมาะสมให้กับแต่ละค่า:

  • เจ้านายที่ถูกฆ่า 1 (หนึ่งบิต)
  • เจ้านายที่ถูกฆ่า 2 (หนึ่งบิต)
  • ฆ่าบอส 3 (หนึ่งบิต)
  • เจ้านายที่ถูกฆ่า 4 (หนึ่งบิต)
  • ถังพลังงาน ( x 5 รวม) (3 บิต)
  • ปลดล็อคความสำเร็จบางส่วน (หนึ่งบิต)

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

เพื่อลดความเป็นไปได้ของการสังเกตรหัสผ่านแบบไม่เป็นทางการคุณสามารถแปลงเค้าโครงบิตเพื่อให้คุณแนะนำบิตจำลอง (ซึ่งไม่มีผลกับสถานะเกม แต่ซึ่งทำให้รหัสผ่านนั้นดูแตกต่างเมื่อคุณตีความบิตทั้งหมดเป็นอักขระ) หรือเรียกใช้ ผ่านการทำงานแบบแฮชที่พลิกกลับได้เพื่อแย่งบิตรอบ ๆ เพื่อให้บิต "kill box X " ไม่ถูกต้องติดกับ eachother ทำให้รหัสผ่านที่สอดคล้องกันของรัฐดูแตกต่างกันมากหรือแนะนำค่าการตรวจสอบ

หากคุณขุดไปรอบ ๆ มันมีข้อมูลที่เป็นธรรมเกี่ยวกับระบบที่ใช้สำหรับเกมรหัสผ่านที่ได้รับความนิยมมากขึ้น:

คุณสามารถอ่านข้อมูลเหล่านั้นเพื่อหาแรงบันดาลใจเพิ่มเติม


4
จำไว้ว่าให้แน่ใจว่ารหัสผ่าน "บันทึกสถานะ" นั้นสามารถพิมพ์ได้อย่างง่ายดายและไม่ควรคลุมเครือ (เช่นใช้ '0' หรือ 'O' แต่ไม่ใช่ทั้งคู่)
minnmass

4
@minnmass คะแนนโบนัสหากคุณแปลงอักขระที่คล้ายกันเป็นมาตรฐานของคุณโดยปริยายดังนั้นการพิมพ์ 'O' แทน '0' จะแปลเป็น '0'

8
@ NPSF3000 เพราะในกรณีนี้ "รหัสผ่าน" ไม่ใช่การตรวจสอบสิทธิ์ "รหัสผ่าน" เป็นสื่อจัดเก็บข้อมูลของตัวเอง
Schilcote

6
@ NPSF3000 หากคำถามของคุณไม่ชัดเจนคุณต้องอ่านคำถามใหม่หรือเรียนรู้เนื้อหาพื้นหลัง
ฮอบส์

2
@ NPSF3000 OP กล่าวอย่างชัดเจนว่า "Retro Style" และอ้างอิง Megaman เพื่อยืนยันซึ่งไม่ชัดเจน เรียนรู้เกี่ยวกับหัวข้อต่างๆเข้าใจว่าสิ่งนี้ไม่เกี่ยวข้องกับความปลอดภัยและโปรดหยุดพยายามปกป้องสิ่งที่เริ่มต้นด้วยความไม่รู้และซื่อสัตย์ที่ลืมได้
MickLH

3

เกมเหล่านั้นไม่เพียงช่วยรัฐที่ฉันเชื่อ รหัสผ่านเพียงอ้างอิงระดับที่จะโหลด เพียงใช้พจนานุกรมสำหรับสิ่งนี้

หากมันซับซ้อนกว่าเล็กน้อยเช่นมีอาวุธหรือเครื่องเร่งความเร็วบางอย่างคุณสามารถเข้ารหัสสถานะให้เป็นรหัสแฮชสั้น ๆ (แต่นานพอ)

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


9
รหัสผ่านที่แพร่กระจายบนอินเทอร์เน็ตนั้นดี การโกงอาจเป็นเรื่องสนุกและในเกมผู้เล่นเดี่ยวผู้เล่นจะโกงเอง
Anko

@ Anko ใช่ฉันไม่ชอบการโกงและแทบจะไม่ได้ทำแบบนั้นดังนั้นฉันจึงลำเอียง แต่จากประสบการณ์ของตัวเองเกมของฉันจะรวบรวมฝุ่นได้เร็วและเร็วขึ้นเมื่อฉันโกงรางน้ำของฉัน
Madmenyo

"... แค่อ้างอิงระดับที่จะโหลด" ไม่เป็นความจริงในทุกกรณี รหัสผ่านบางอย่างยังอ้างอิงถึงหัวหน้าผู้ถูกฆ่าตายการเพิ่มพลังที่ได้รับและอื่น ๆ ประการที่สองการให้คำแนะนำว่ารหัสผ่านสามารถแพร่กระจายได้เป็นสิ่งหนึ่ง - ปัญหาในโลกที่เชื่อมต่อกันมากเกินไปของเรา บอกว่าควรลบตัวเลือกการโกงออกเพราะคุณไม่ชอบการโกงอีก สิ่งที่คุณชอบไม่ใช่สิ่งที่คนอื่นชอบ มันไม่ได้เกี่ยวกับสิ่งที่คุณต้องการจะเป็นผู้บริโภค การโกง / ทางลัดเป็นตัวเลือกที่สำคัญ - โดยเฉพาะอย่างยิ่งสำหรับเกมผู้เล่นเดี่ยว
WernerCD

@WernerCD ก่อนอื่นฉันพูดเกี่ยวกับระบบที่ซับซ้อนมากขึ้นฉันเพิ่งเริ่มด้วยระบบรหัสผ่านที่เรียบง่าย ฉันไม่ได้อ้างสิทธิ์อะไร ประการที่สองฉันไม่ได้พูดอะไรเกี่ยวกับการโกงในคำตอบ ฉันแค่ให้ BIASED ตอบกลับความคิดเห็นและบอกว่าฉันลำเอียงและตระหนักถึงประเด็นของคุณว่ามันไม่ใช่สิ่งที่ฉันชอบ แต่ถ้าไม่มีใครพูดว่าเขาชอบหรือไม่ชอบคุณจะรู้ได้อย่างไรว่าคนอื่นชอบอะไร ฉันยังคงคิดว่าระบบแบบนั้นถึงกำหนดเวลาและการโกงศตวรรษที่ 21 ก็ประสบความสำเร็จแตกต่างกัน ครั้งต่อไปที่คุณควรอ่านให้ละเอียดยิ่งขึ้นก่อนที่จะเขียนความคิดเห็นแบบนั้น IMHO
Madmenyo

หากคุณมี savegames ผู้คนก็จะแชร์ savegames เช่นกัน
Dewi Morgan

1

ทีนี้คุณก็ทำได้เช่นนี้:

บอสถูกฆ่า = 7

จำนวนเหรียญ = 36

Owns Sword = 0 (ไม่)

Owns Heart = 1 (ใช่)

ระดับปัจจุบัน = 6

โลกปัจจุบัน = 9

สุขภาพ = 100

รหัส = 7V36R0A1T6O9A100

โดยทั่วไปจดหมายทุกฉบับแยกประเภท


-3

ในขณะที่โซลูชันเช่นระบบตัวละครต่อรัฐของJosh Petrie นั้นมีประโยชน์ (ขนาดเล็กประหยัดทำงานได้กับทุกสำเนาของเกม) แต่ทั้งคู่ออกแบบเกมและระบบของรัฐให้เป็นระบบรหัสผ่านที่แท้จริง การเปลี่ยนแปลงรหัสผ่านหรือสถานะหรือการออกแบบใด ๆ และทั้งระบบจะแยกออกจากกัน

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


ดูเหมือนจะมีความสับสนรอบคำตอบนี้

1) op ได้เพียงขอรหัสผ่านที่ให้พวกเขาโหลดบันทึก ... ไม่มีข้อกำหนดว่ารหัสผ่านจะถูกบันทึก

2) เกมจำนวนมากในวันนี้มีความต้องการด้านการจัดเก็บอย่างมีนัยสำคัญเราเพิ่งสร้างระบบบันทึก / โหลดอย่างรวดเร็วภายในที่ผลิตไฟล์ 10MB ... สำหรับเกมตอบคำถาม! ระบบการบันทึกของ Josh Petrieในขณะที่ถูกต้อง จำกัด มาก - ทันทีที่ระบบการจัดเก็บกลายเป็นเรื่องไม่สำคัญรหัสผ่านจะต้องมีความยาวมหาศาลเพื่อยืนยันข้อมูลที่เกี่ยวข้องทั้งหมด

ตัวอย่างเช่นจะเกิดอะไรขึ้นหากมีเจ้านาย 30 คน 20 ความสำเร็จ? เราครึ่งทางผ่านความสำเร็จหรือไม่? เขาอยู่ที่ระดับใด เรามีกันกี่ชิ้นเพื่อสุขภาพชีวิตเหรียญ xp? จะเกิดอะไรขึ้นถ้าสแน๊ปช็อตไม่ได้อยู่ในสถานะระหว่างระดับ ... แต่ครึ่งทางผ่านระดับ - ตำแหน่งของผู้เล่น, ศัตรู, ขีปนาวุธ, ภูมิประเทศที่ถูกทำลาย / เปลี่ยนแปลงนั้นจะรวมกันเป็นรัฐจำนวนมากที่ต้องเก็บไว้

สำหรับมุมมองสมมติว่าตัวอักษร 30 ตัวและรหัสผ่านสิบตัวอักษรเรามีข้อมูลประมาณ 50 บิตเพื่อจัดเก็บ ไม่ใช่เรื่องแปลกที่จะเห็นเกม / เครื่องมือใช้มากถึง 320 บิตเพื่อเก็บตำแหน่งการหมุนและการปรับขนาดของวัตถุเดียว แน่นอนว่าคุณสามารถใช้เทคนิคการเพิ่มประสิทธิภาพทุกชนิดทำได้มากขึ้นโดยใช้เวลาน้อยลง ... แต่ในที่สุดคุณก็ใช้เวลาในการทำให้เกมสนุก - หนึ่งในสิ่งที่ดีที่สุดที่คุณสามารถทำได้


3
ฉันคิดว่าปัญหาที่นี่และด้วยความคิดเห็นของคุณข้างต้นคือความปลอดภัยการเข้ารหัสลับไม่ใช่เป้าหมายของการบันทึกสถานะของเกมเป็นบิตภายในรหัสผ่าน รหัสผ่านที่แต่งขึ้นในลักษณะนี้สามารถย้อนกลับได้ง่าย แต่ยากที่จะคาดเดาแฮชและไม่มีอะไรเพิ่มเติม และด้วยเหตุผลเดียวกันนี้มันไม่ได้ทำให้เกิดการมีเพศสัมพันธ์ที่ไม่เหมาะสมในแบบที่คุณจินตนาการ ถ้าสถานะของเกมซับซ้อนขึ้นหรือลงน้อยลงแฮช (ซึ่งทำให้แฮชก่อนหน้านี้ไม่ถูกต้อง) แต่ระบบทำงานได้ดีเท่ากันทั้งก่อนและหลัง
เซท Battin

@ เซ็ทแบททิน "มันไม่ได้ทำให้เกิดการมีเพศสัมพันธ์ที่ไม่เหมาะสมในแบบที่คุณจินตนาการ" โอ้ยอดเยี่ยม! ดังนั้นเกมที่ฉันกำลังทำงานอยู่ตอนนี้มีไฟล์บันทึกที่วัดเป็นเมกะไบต์ ... สิ่งที่ฉันต้องทำก็คือทำสิ่งที่น่ารำคาญพื้นฐานและแสดงมันบนหน้าจอและ voila! ตอนนี้เรามีระบบรหัสผ่านที่ดีอย่างสมบูรณ์?
NPSF3000

3
ดูเหมือนว่าเกมของคุณไม่เหมาะกับวิธีนี้
เซท Battin

@ NPSF3000 ประเด็นของรหัสผ่านในกรณีนี้คืออะไร หากเป็นการป้องกันไม่ให้ผู้อื่นใช้เครื่องเดียวกันไม่ให้ใช้ savegames โดยไม่ได้รับอนุญาตทำไมไม่เพียงแค่ลงชื่อเข้าใช้ครั้งเดียวต่อเกมด้วยชื่อผู้ใช้ / รหัสผ่าน หากต้องการระบุว่าบันทึกใดที่พวกเขาต้องการนั่นคือ "savegame id" ไม่ใช่รหัสผ่านและน่าจะเป็นมิตรกว่า ตามที่เป็นถ้าฉันอ่านถูกต้องคุณจะต้องใช้รหัสผ่านที่แตกต่างและไม่ระบุผู้ใช้ทุกครั้งที่พวกเขาโหลดบันทึกใหม่? ทำไม? มีประโยชน์อะไรที่เป็นประโยชน์กับทุกคน?
Dewi Morgan

1
@DewiMorgan ฉันไม่ต้องการอะไรฉันจะตอบคำถามของ op โดยละเอียด: "ฉันจะสร้างระบบรหัสผ่านสำหรับเกมที่มีผู้เล่นคนเดียวได้อย่างไรตัวอย่างเช่น Mega Man X ช่วยงานให้คุณได้ คุณสามารถป้อนในภายหลังเพื่อโหลดบันทึกของคุณ " โซลูชันของฉันทำอย่างนั้นโดยไม่ต้องเชื่อมต่อระบบบันทึกและระบบรหัสผ่านเข้าด้วยกัน คำตอบที่ได้รับการโหวตสูงสุดมีข้อเสียเดียวกับของฉันด้วยการเพิ่มว่าต้องการให้เกมทั้งหมดได้รับการออกแบบให้เหมาะสมกับวิธี
NPSF3000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.