ในเกมที่อิงแบบสองมิติ NPC และไทล์ควรอ้างอิงถึงกันอย่างไร


9

ฉันกำลังสร้างเอนจินไทล์สำหรับเกม 2D จากบนลงล่าง โดยทั่วไปโลกจะประกอบไปด้วยตารางของกระเบื้อง

ตอนนี้ฉันต้องการใส่ NPCs ที่สามารถเคลื่อนที่บนแผนที่ได้

คุณคิดว่าอะไรดีที่สุด:

  1. แต่ละไทล์มีตัวชี้ไปยัง NPC ที่อยู่บนไทล์ของมันหรือตัวชี้ NULL
  2. มีรายชื่อของ NPC และพวกเขามีพิกัดของไทล์ที่พวกเขาอยู่
  3. อื่น ๆ อีก?

ฉันคิด

  1. เร็วกว่าสำหรับการตรวจจับการชน แต่จะใช้พื้นที่หน่วยความจำมากขึ้นและช้าลงเพื่อค้นหา NPC ทั้งหมดในแผนที่
  2. ตรงข้าม

คำตอบ:


11

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

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


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

0

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

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