Dalam game berbasis ubin 2D, bagaimana seharusnya NPC dan ubin merujuk satu sama lain?


9

Saya membuat mesin ubin untuk game 2D top-down. Pada dasarnya dunia tersusun atas kisi-kisi ubin.

Sekarang saya ingin menempatkan misalnya NPC yang dapat bergerak di peta.

Menurut Anda apa yang terbaik:

  1. setiap ubin memiliki pointer ke NPC yang ada di ubinnya, atau pointer NULL
  2. memiliki daftar NPC, dan mereka memiliki koordinat petak tempat mereka berada.
  3. sesuatu yang lain?

kupikir

  1. lebih cepat untuk deteksi tabrakan tetapi akan menggunakan lebih banyak ruang memori dan lebih lambat untuk menemukan semua NPC di peta.
  2. adalah kebalikannya.

Jawaban:


11

Mengapa tidak keduanya? Ada saat-saat ketika Anda ingin melihat apakah ada NPC di ubin tertentu (seperti untuk deteksi tabrakan, seperti yang Anda sebutkan), dan kadang-kadang ketika Anda ingin mengulangi semua NPC di dunia ( seperti untuk menjalankan metode AI mereka setiap frame).

Sebuah pointer per ubin tidak banyak memori kecuali Anda bekerja pada platform memori terbatas atau Anda memiliki benar-benar peta besar.


5
+1 Saya cenderung setuju dengan ini, namun @lezebulon, saya sarankan Anda merangkum semua logika yang perlu memperbarui keduanya bersama, sedini mungkin. Artinya, ketika pemain meninggalkan ubin, harus ada satu operasi atom (panggilan fungsi) untuk menghapus kedua pointer, pemain-ke-ubin dan ubin-ke-pemain, pada saat yang sama. Dan hal yang sama ketika seorang pemain tiba di ubin, lakukan dua tugas penunjuk secara bersamaan. Ini akan menyelamatkan Anda dari beberapa kekacauan potensial di mana referensi tidak setuju satu sama lain, yaitu satu ada sementara yang lain tidak.
Insinyur

0

Bagaimana Anda menangani tabrakan dengan peta? Jika Anda memiliki layer collision, cara yang sangat mudah adalah dengan membuat daftar NPC dengan koordinat yang menunjukkan di mana mereka berada dan kemudian mengulangi daftar itu dan menandai tile layer collision di bawah NPC sebagai collision tile. Dengan begitu, tabrakan terhadap NPC akan ditangani bersamaan dengan sisa peta. Itu, tentu saja, jika NPC tidak bergerak ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.