การสร้างขั้นตอนของระดับไม่มีที่สิ้นสุด


16

อะไรคือแนวทางที่ดีในการสร้างระดับ 2d แบบไม่สิ้นสุดระดับอาจถูก จำกัด ในมิติใดมิติหนึ่ง แต่ไม่จำเป็นเสมอไป

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

เพื่อประโยชน์ของการสนทนาคุณสามารถคิดว่าระดับเป็นฟิลด์ดาวเคราะห์น้อยจากบนลงล่างที่มีการเพิ่มพลัง ฯลฯ กระจัดกระจายไปทั่ว


2
ดูเหมือนว่าจะเกี่ยวข้องกัน: gamedev.stackexchange.com/questions/2230/…
jacmoe

^ และอยู่ในคอลัมน์ "ที่เกี่ยวข้อง" ทางด้านขวา ไม่จำเป็นต้องเชื่อมโยง
Ricket

7
และจากนั้นมันก็กลายเป็น "เชื่อมโยง" เช่นเดียวกับ "ที่เกี่ยวข้อง" - เรียบร้อยเหรอ? :)
jacmoe

คำตอบ:


6

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

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


4
ปัญหานี้สามารถหลีกเลี่ยงได้โดยศูนย์กลางโลกเป็นครั้งคราว
Jonathan Fischoff

นอกจากนี้ยังต้องระวังไม่เพียง แต่จำนวนเต็มล้อมรอบ แต่ไม่ถูกต้องของจุดลอยตัวเล็ก ๆ ที่เปลี่ยนแปลงเมื่อจำนวนจุดลอยตัวสูง ลองทำสิ่งนี้: float pos = 1000000000.0f; float nextPos = pos + 0.001f; float diff = nextPos - pos; บนเครื่องของฉัน diff คือ 0
tenpn

นี่เป็นจุดที่ดีทั้งหมด ฉันคิดว่ามันเหมาะสมที่จะรับพิกัดอีกครั้งทุกครั้งที่มีการสร้างชุดสี่เหลี่ยมใหม่ขึ้นมาตราบใดที่มันมีประสิทธิภาพเพียงพอ
โคลิน Gislason

อนึ่งนี่เป็นวิธีแก้ปัญหาเดียวกับในเวอร์ชั่น PC ของ Minecraft :) +1 สำหรับจำนวนเต็มคงที่ + float ซึ่งอยู่ในความคิดของฉันทางออกที่ดีที่สุด
GameDeveloper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.