Saya bertanya-tanya bagaimana cara kerjanya.
Apakah Anda memuat peta lengkap saat permainan dimulai, atau apakah Anda memuat bagian peta saat runtime?
Dan bagaimana Anda menyimpan peta? Apakah itu dalam format XML atau biner?
Terima kasih!
Saya setuju dengan eBusiness. Itu tergantung pada ukuran dan bagaimana Anda ingin mengeditnya.
Perkirakan ukuran byte peta Anda dalam representasi yang cukup kompak. Tentukan juga bagian peta mana yang dapat berubah saat game dimainkan. Bagian-bagian yang tidak berubah dapat dimuat dan tidak harus disimpan. Jika perkiraan ukurannya kecil, simpan saja semuanya dalam memori. Ini tidak sebanding dengan kompleksitas tambahan memuat bagian-bagian peta dan melacak apa yang telah Anda muat atau tidak, kecuali jika datanya sangat besar sehingga diperlukan.
Misalnya jika Anda menulis Civilization II , ukuran peta Anda mungkin 100x100 petak.
Itu di bawah 30k untuk representasi biner kompak objek peta II Civ, sehingga Anda dapat menyimpan semuanya dalam memori, bahkan jika Anda menggunakan format verbose yang jauh lebih besar. Saya mendapatkan angka-angka di atas dari seseorang yang melakukan rekayasa terbalik pada struktur peta Civ II .
Daggerfall , yang dianggap oleh beberapa orang memiliki peta yang sangat besar, tampaknya 5000x2500 dan sekitar 25 megabita, tetapi juga memiliki sejumlah besar NPC (750.000 adalah apa yang saya baca tetapi tampaknya sangat tinggi). Pada komputer desktop / laptop saat ini, ini juga dapat masuk ke dalam memori, tetapi pada perangkat seluler atau browser yang mungkin agak terlalu besar. Ada wiki yang menjelaskan format peta Daggerfall .
Anda dapat mengurangi ukuran dengan mengidentifikasi dan memperhitungkan redundansi . Misalnya, alih-alih menyimpan masing-masing 100.000 pohon atau pedang identik dalam format XML, simpan satu pohon dan satu pedang dan 100.000 referensi untuknya. Dalam format biner referensi itu mungkin hanya 1 atau 2 byte, dan dalam format yang lebih verbose referensi masih bisa cukup kecil.
Lakukan hal paling sederhana yang bekerja untuk gim Anda. Jika peta ini kecil, tidak masalah jika Anda menggunakan format yang ringkas atau bertele-tele. Jika format ringkas akan masuk ke dalam memori tetapi format verbose tidak, Anda harus memutuskan apakah kerja ekstra format biner lebih atau kurang dari kerja ekstra memuat bagian peta. Itu akan tergantung pada gimnya. Dalam gim yang mirip Civ di mana Anda membutuhkan semua data untuk mensimulasikan putaran, format biner mungkin merupakan pilihan yang lebih baik. Dalam gim yang mirip Daggerfall di mana Anda tidak perlu memuat area kecuali yang dekat dengan pemain, memuat sebagian peta mungkin merupakan pilihan yang lebih baik. Jika peta itu benar besar yang bahkan format ringkasnya tidak akan muat dalam memori, maka tanyakan pada diri Anda apakah itu benar-benar layak semua pekerjaan ekstra untuk menghadapinya, dan jika demikian, desain format biner yang Anda dapat memuat sebagian.
Untuk proyek (hobi) saya saat ini, peta dan semua objek di dalamnya masuk ke dalam 50 MB, jadi menyimpannya dalam memori akan baik-baik saja. Namun, saya ingin itu berjalan di browser, dan 50 MB lebih dari yang saya ingin transfer melalui jaringan, jadi saya menyimpan semuanya di dalam memori di server dan kemudian memuat hanya bagian dunia di klien. Ubin peta saya adalah 1 byte per ubin, 2048x2048 ubin (4 MB). Objek (pohon, kursi, orc, dll.) Dikodekan JSON untuk kesederhanaan. Di klien saya hanya memuat area peta (termasuk objek mereka) yang berada di dekat pemain.
Berapa banyak memuat tergantung setidaknya pada seberapa besar peta, jika data cukup masuk dalam memori maka benar-benar tidak ada alasan untuk repot dengan pembebanan progresif.
Hal yang paling penting dari XML adalah mengambil banyak penyimpanan / memori / ruang jaringan / lalu lintas tambahan. Jika Anda berpikir menggunakan XML itu menyenangkan, pastikan untuk melakukannya hanya untuk jumlah data yang relatif kecil.
Saat Anda mendesain format data, Anda harus memikirkan bagaimana Anda ingin mengedit data ini. Anda dapat menggunakan editor teks sederhana untuk menulis data Anda sebagai file teks biasa, Anda dapat menggunakan file-file ini secara langsung atau Anda dapat mengonversinya menjadi format biner untuk menghemat ruang. Anda dapat menggunakan editor gambar untuk menjadikan level Anda sebagai bitmap, sekali lagi, Anda mungkin ingin mengonversi ke file yang lebih kecil.
Atau Anda bisa membuat editor sendiri, dalam hal ini ada sedikit alasan untuk tidak menggunakan format biner yang ringkas.
sumber
Tidak ada satu jawaban untuk pertanyaan ini. Ini semua secara inheren terserah Anda.
Anda tetap dapat menyimpan peta yang Anda suka dan menampilkan / merendernya kapan saja.
sumber