Membuat adil spawn point adil?


22

Jika semua pemain muncul pada posisi acak dengan jarak yang sama dari pemain yang berdekatan, jumlah pemain akan sebanding dengan kemungkinan posisi spawn mereka menjadi tidak adil. Semakin dekat pemain muncul di tengah peta, semakin besar kemungkinan mereka bertemu pemain lain dan semakin kecil kemungkinan mereka untuk bertahan hidup, dibandingkan dengan pemain di tepi peta. Asumsikan semua pemain dilahirkan pada saat yang sama.

Apakah ada cara untuk membentuk titik spawn, atau mengubah peta, sehingga:

  1. Semua pemain memiliki sejumlah musuh yang berdekatan.
  2. Semua pemain memiliki peluang yang sama untuk bertemu musuh yang berdekatan.
  3. Ukuran peta tidak harus meningkat sebanding dengan jumlah pemain.
  4. Batasan-batasan ini tidak ditegakkan dengan ruang-ruang yang tidak dapat dilewati secara sewenang-wenang.

Jawabannya tidak harus sempurna, hanya jelas lebih baik daripada alternatifnya. Out of the box berpikir selamat datang.


10
Menelurkan lingkaran?
Zibelas

1
@Zibelas Pendekatan tradisional, tetapi melanggar persyaratan 3, dan dengan banyak pemain ini membuat peta besar dan interior kosong.
inappropriateCode

4
Itu tergantung pada jenis gim Anda. (2D / 3D, respawn / last man standing, dll.) Spawn sempurna dalam hal ini hanya mungkin pada dunia berbentuk bola (lebih banyak pemain, lebih dekat spawn tetapi Anda dapat menjamin mereka memiliki semua jarak yang sama). Di dunia 2D dengan batas tetap, Anda selalu lebih sedikit membatasi pemain karena Anda tidak punya tempat untuk menelurkan mereka. Jika ini adalah game 3D, Anda dapat memiliki beberapa layer.
Zibelas

1
Saya pikir itu akan membantu untuk mengetahui jenis permainan apa yang Anda buat. Kedengarannya seperti semacam permainan perang, tetapi apa detailnya? Apakah itu penembak? Apakah Anda mulai dengan semua senjata Anda, atau Anda harus menjelajahi dan menemukan sesuatu? Bagaimana kondisi kemenangan? Berapa lama pertandingan diharapkan berlangsung?
RothX

3
Bukan untuk jawaban penuh, tetapi saya pikir semua orang berusaha untuk "menelurkan adil & seimbang" yang ... tidak menyenangkan. Lihatlah pemijahan PUBG yang sangat baik (dan yang lainnya Battle Royale): pemain dapat "menelurkan" (yah, melompat dan mendarat ...) hampir di mana pun mereka inginkan - jika Anda menginginkan konflik dan drama, Anda memilih tempat di mana sebagian besar pemain mendarat / bertelur. Risiko tinggi hadiah tinggi, tetapi hanya jika pemain menginginkannya. Anda dapat mendarat di suatu tempat di hutan, Anda punya waktu untuk mempersiapkan diri - risiko rendah hadiah rendah tetapi beberapa pemain mungkin lebih suka (seperti saya, misalnya;)). Ini BUKAN acak, itu oleh pilihan pemain.
Jan 'splite' K.

Jawaban:


27

Biarkan para pemain memilih lokasi awal mereka sendiri.

Di awal permainan, buat semua pemain di tengah peta, tetapi tanpa ada cara untuk melukai pemain lain. Mereka kemudian harus berkerumun dan mendapatkan sarana untuk saling terlibat (membangun pangkalan, mengambil senjata, mengumpulkan sumber daya, dll.)

Ada sedikit keberuntungan atau pengetahuan peta yang terlibat dalam menemukan lokasi awal yang baik lebih awal (tergantung pada apakah Anda menggunakan peta prosedural atau buatan tangan). Tetapi kapan dan di mana penyelesaiannya sebagian besar merupakan keputusan strategis. Menyebarkan lebih awal memberi Anda keuntungan waktu, tetapi menempatkan Anda pada posisi berbahaya. Memilih basis Anda dengan hati-hati membuat Anda tertinggal di awal permainan, tetapi bisa menjadi keuntungan yang menentukan di pertengahan dan akhir pertandingan.


3
@Shashimee Sebenarnya saya percaya saya telah melihat metode ini pertama kali di Anno 1602. Saya juga percaya bahwa beberapa game C&C awal memiliki itu sebagai opsi permainan multipemain opsional (tapi saya tidak yakin apakah saya mengingatnya dengan benar).
Philipp

3
@Philipp MULE untuk komodor 64 sekitar 15 tahun lebih tua dan membiarkan Anda memilih juga posisi Anda :)
Zibelas

Anda kemudian mengalami masalah di mana Anda diikuti ke titik bertelur Anda. Tentu saja ini bisa menjadi mekanik permainan yang diinginkan, tetapi bisa juga sangat menyebalkan dan bukan sesuatu yang Anda putuskan inginkan di dalam gim Anda. Ide yang bagus adalah membuat karakter muncul tanpa terlihat dan bebas tabrakan, dan temukan pangkalan mereka sebelum memulai permainan.
Dent7777

Itulah metode yang digunakan oleh baris "Vampirism" dan "Tree Tag" dari gamemodes khusus di Warcraft 3. Ini berfungsi paling baik karena semua pemain bersekutu (setidaknya pada awalnya) dan tim lawan dilepaskan nanti.
Kroltan

Ini juga memiliki keuntungan merasa kurang adil. Jika Anda menelurkan secara acak dan cepat mati atau menderita hukuman, itu bisa terasa tidak adil, bahkan jika itu cukup adil. Jika Anda memilih tempat bertelurnya kematian atau hukuman bisa terasa tidak adil dan menghukum karena memilih titik bertelur adalah keterampilan tersendiri dan sesuatu yang bisa Anda dapatkan dengan lebih baik. Yang mengatakan, jika memilih spawn point sangat sulit, itu juga bisa terasa tidak adil karena pemain yang lebih terampil akan melakukan jauh lebih baik.
Anubian Noob

9

Memahami persyaratan

  1. Semua pemain memiliki sejumlah musuh yang berdekatan.

Pertama, kita berbicara tentang titik-titik spawn para pemain, bukan posisi pemain saat ini pada titik tertentu dalam permainan. Hanya menyingkirkan itu.

Berdekatan didefinisikan dengan baik ketika kita berbicara tentang grafik. Kita dapat memikirkan peta yang mewakili kemampuan navigasi di peta - mulai sekarang di "grafik".

Jika simpul dapat memiliki paling banyak satu titik spawn, maka berbicara tentang mereka yang "berdekatan" masuk akal. Catatan: Saya tidak akan membatasi node untuk memiliki satu titik spawn paling banyak, untuk alasan yang akan terlihat kemudian.

Untuk membangun grafik kita perlu mempertimbangkan hal-hal seperti dinding, jembatan, tangga, titik teleportasi, atau bahkan mempertimbangkan ruang penerbangan jika ada pemain yang bisa terbang. Setiap node mewakili lokasi yang dapat dilalui; setiap koneksi mewakili gerakan yang memungkinkan.

Catatan: ketahui ukuran dan bentuk node, dan bekerja dengan node yang sebenarnya berdekatan. Jangan anggap titik sebagai titik. Jangan menganggap koneksi memiliki panjang. Juga, gunakan simpul cembung.

Grafik dapat dikompilasi sebelumnya (peta dibuat oleh seorang desainer); jika tidak, dapat dibuat dengan cepat jika peta dibuat secara acak.

  1. Semua pemain memiliki peluang yang sama untuk bertemu musuh yang berdekatan.

Saya akan menganggap musuh adalah pemain lain. Sekali lagi, baru saja menyingkir.

Dengan asumsi setiap pemain melakukan jalan acak, probabilitas menemukan pemain pada titik tertentu - di ruang datar, bebas hambatan - akan diberikan oleh fungsi (Gaussian) jarak ke titik spawn - mulai sekarang " fungsi".

Karena kami sedang mengerjakan grafik, kami akan menganotasi nilai pada grafik.

  1. Ukuran peta tidak harus meningkat sebanding dengan jumlah pemain.

Jika kita memiliki kendala untuk memiliki satu titik spawn per node, maka untuk menambahkan lebih banyak pemain kita akan memerlukan node yang lebih kecil. Jika kita memutuskan grafik sebelum kita tahu berapa banyak pemain yang akan kita miliki, kita mungkin harus membagi node untuk permainan tertentu.

  1. Batasan-batasan ini tidak ditegakkan dengan ruang-ruang yang tidak dapat dilewati secara sewenang-wenang.

Saya tidak bermaksud menambah kendala untuk menyelesaikan masalah. Au contraire , saya harus bekerja di sekitar rintangan. Jika tidak ada, implementasinya akan lebih sederhana.


Larutan

Kami mencoba menempatkan N spawn point sehingga peluang bertemu pemain lain sama sekali dengan spawn point.

Kita bisa mendapatkan ukuran kesalahan sebagai jumlah dari perbedaan peluang dengan rata-rata peluang. Kami mencoba untuk meminimalkan itu (sebenarnya, kami ingin membuatnya 0).

Untuk melakukannya, kita perlu mengetahui peluang bertemu pemain di setiap simpul grafik.

Untuk menghitung peluang itu, mulailah dengan nol. Karena peluang untuk menemukan pemain di sembarang simpul, ketika tidak ada pemain, adalah nol. Dan kemudian, untuk masing-masing titik spawn, berjalan grafik menambahkan ke kesempatan beranotasi nilai fungsi untuk titik spawn saat ini.

Catatan 1: Menambahkan atau memindahkan spawn point akan memengaruhi peluang bertemu pemain untuk semua peta.

Catatan 2: Melacak seberapa besar setiap titik pemijahan mempengaruhi kesempatan, akan membuat segalanya lebih mudah.

Catatan 3: Karena node memiliki ukuran, seberapa dekat Anda dengan error = nol tergantung pada ukuran node. Anda bisa lebih tepat dengan bekerja dengan rentang nilai (peluang minimun dan maksimal, tergantung pada posisi titik spawn di dalam simpul).

Tempatkan titik-titik spawn secara acak, lalu mulailah memindahkan mereka sedemikian rupa sehingga kesalahan menjadi lebih kecil (pertimbangkan gerakan yang memungkinkan, dan jika menyebabkan kesalahan berkurang pertahankan, jika tidak kembalikan). Dan terus melakukannya sampai kita tidak dapat meningkatkan lebih lanjut (terlalu banyak iterasi tanpa peningkatan, atau kesalahan adalah nol).

Catatan 4: Saat memindahkan titik bertelur, Anda dapat menggunakan peluang bertemu dengan pemain (tidak termasuk titik bertelur yang akan Anda pindahkan) untuk secara acak memilih posisi untuk titik bertelur sehingga posisi yang memiliki peluang bertemu dengan pemain yang lebih dekat dengan rata-rata lebih mungkin. Saya ingatkan Anda bahwa memindahkan spawn point akan memengaruhi mean.

Perilaku yang diharapkan adalah titik bertelur yang terlalu berdekatan bergerak terpisah dan titik bertelur yang terlalu jauh semakin dekat. Sampai mereka mencapai keseimbangan.

Jika pada suatu iterasi tertentu Anda memiliki beberapa titik spawn pada sebuah node (yang tidak mungkin, karena mereka cenderung bergerak terpisah, tetapi mungkin jika Anda memiliki node yang cukup besar), pisahkan node tersebut dan lanjutkan penyelesaiannya. Setiap pembagian node adalah valid.


Solusi di atas akan mendekati kesalahan = nol, tetapi tidak dijamin untuk mencapai nol. Yang bisa Anda lakukan adalah menjalankannya sampai mencapai minimum lokal ... Secara teori, Anda kemudian dapat membagi node untuk membuatnya benar-benar nol ... Namun, itu setara dengan mengutak-atik koordinat titik spawn!

Coba simulasikan anil untuk memindahkan titik spawn di dalam node. Meskipun, jujur, mungkin tidak ada gunanya untuk repot dengan tingkat detail seperti itu.


Saya ingin memperjelas bahwa hasil peta datar yang bebas dari rintangan tidak akan didistribusikan secara merata. Sebaliknya, jika peta memiliki tepi (yaitu, jika tidak membungkus), maka akan ada lebih banyak titik spawn lebih dekat ke tepi, ini karena titik-titik di pusat dapat dicapai dari lebih banyak arah, meningkatkan kemungkinan bertemu pemain lain di sana. Dengan demikian, poin lebih jauh terpisah di dekat pusat untuk kompensasi.


6

Itu tergantung pada jenis permainan yang ingin Anda buat dan seberapa cepat itu. Distribusi spasi sempurna yang sempurna dimungkinkan pada dunia seperti bola (misalnya Penghancuran Planet). Tapi apakah itu opsi yang adil dalam gim Anda? Bahkan jika semua orang memijah pada jarak yang sama, beberapa pemijahan mungkin masih memiliki keunggulan yang lebih baik.

  • Senjata yang lebih dekat / lebih baik dalam jangkauan / lebih banyak sumber daya
  • Penutup yang lebih baik / lebih tersembunyi / ikhtisar
  • 'aliran' para pemain, beberapa tempat lebih menarik daripada yang lain (pikirkan peta hutan lengkap dengan satu rumah di satu tempat, di mana pun rumah itu berada, kemungkinan besar orang-orang memeriksanya)

Apakah peta Anda adalah peta yang diperbaiki atau yang dihasilkan secara prosedural? Dan pernah mencoba bermain Age of Empires dengan 8 orang di peta 2 orang? Tidak mungkin untuk membuat skala para pemain tanpa batas tanpa membuat penyesuaian dengan ukuran peta. Bahkan penempatan awal yang tidak adil dapat membawa banyak dinamika dalam permainan (lihat seri Worms). Tidak ada yang mengeluh jika Anda menelurkan tepat dalam kelompok besar, selama aliansi satu putaran Anda dengan pemain lain berlangsung atau Anda tidak memiliki cacing yang paling bertahan setelah putaran pertama.

(Saya akan menambahkan beberapa contoh lagi jika saya tahu lebih banyak tentang jenis permainan Anda)


5

Pergi untuk sesuatu yang tidak disarankan sejauh ini: Buatlah agar tidak ada pusat peta. Yang saya maksud dengan ini adalah bahwa tepi peta bergabung ke sisi yang berlawanan. Ini akan membutuhkan banyak pekerjaan pemrograman, tetapi dalam praktiknya hal itu dapat membuat level terulang kembali dengan sendirinya jika Anda berjalan dalam satu arah. Ini berarti bahwa tidak ada pusat, dan posisi spawn acak tidak akan memiliki kelebihan atau kekurangan.

Anda dapat melakukan ini dengan membuat peta datar yang berbentuk bujur sangkar, dan menyatukan setiap sisi ke salinan sisi yang berlawanan. Ketika seorang pemain berjalan dari sisi, mereka diteleportasi tanpa sepengetahuan pemain ke tepi yang berlawanan. Tentu saja, secara teoritis Anda tidak akan dapat melihat pemain di sisi lain batas. Untuk memperbaikinya, buat klon pemain yang tampaknya berjalan di sisi lain batas sehingga Anda bisa melihatnya, dan ketika Anda berlari ke arah itu, Anda teleport dan pemain yang sebenarnya berdiri di tempat boneka itu berada.

Atau, seluruh peta bisa ada di luar bola, namun ini membuat koordinat sulit untuk pemijahan.


2
Atau buat peta yang, baik, di tengah, Anda bisa diburu atau diburu lebih mudah, dan juga bisa menemukan menjarah lebih mudah, tetapi sekali lagi, Anda jauh lebih mungkin untuk diburu seperti ini, dan di daerah non-pusat, buat itu agar para pemain lebih kecil kemungkinannya untuk menemukan pengguna lain dan menjarah, jadi jika mereka ingin lebih banyak menjarah mereka harus pergi ke pusat, jika mereka ingin bertahan lebih lama, mereka harus tetap di tempat mereka berada. Jadi pada dasarnya membuat kerugian acak memunculkan keuntungan.
Ave

4

Berikut adalah beberapa solusi yang mungkin:

  • Menelurkan secara acak pada keliling lingkaran
  • Menelurkan secara acak pada jari-jari (tidak menelurkan untuk menutup pusat)
  • Tambahkan komponen waktu spawn acak

Diagram mekanisme pemijahan


Gambar kedua adalah pilihan yang bagus. Ini memecahkan masalah opsi pertama di mana pemain tahu persis di mana semua pemain lain berada.
Zanon

@Zanon meskipun dengan pemain gambar pertama dapat (dan kemungkinan akan) pindah sebelum seseorang datang ke sana. Yang kedua akan menyebabkan melahirkan tidak adil, beberapa dekat dengan yang lain. Mungkin sesuatu seperti ini di mana ada 2 lingkaran dan perbedaan antara yang lebih kecil dan lebih besar adalah tempat mereka muncul, jadi seperti gambar kedua, tetapi kurang ke tengah.
Ave

1

Pada dasarnya saya percaya ini adalah masalah distribusi grafik. Dengan asumsi situasi deathmatch (setiap pemain lain adalah musuh), Anda perlu memodelkan peta Anda sebagai grafik yang saling berhubungan, dan melacak simpul mana pada grafik yang paling dekat dengan setiap pemain. Tidak setiap node perlu menjadi titik spawn, tetapi Anda membutuhkan grafik kompleks untuk memodelkan jarak antara titik spawn. Pada waktu spawn, Anda kemudian iterasi grafik dan mencetak setiap node spawnable berdasarkan apakah node terdekat memiliki pemain.

Simpul ideal kemudian memiliki:

  • Tidak ada pemain saat ini di dalamnya
  • Lebih dari nol pemain di node terdekat (beberapa tautan jauhnya)

Bayangkan bahwa grafik Anda telah diatur, dan Anda menggambar zona konsentris di sekitar setiap node. Anda menghukum simpul jika zona batin sudah memiliki pemain di dalamnya, dan hadiah node yang memiliki pemain pada jarak yang tepat. Anda ingin mendorong pemijahan cukup dekat ke pemain lain sehingga mereka dapat menemukan minat dengan cepat, tetapi tidak begitu dekat sehingga mereka bisa melompat sebelum mereka memiliki kesempatan untuk mendapatkan posisi mereka.

Anda akan perlu untuk meningkatkan ukuran peta dengan jumlah pemain tumbuh, tetapi kkebutuhan tidak 1 atau lebih besar. Kasing terburuk Anda adalah bahwa setiap simpul pada grafik memiliki setidaknya satu pemain - dalam hal ini tidak ada simpul bagus untuk digunakan, dan Anda harus menderita kasing itu dan menelurkan pemain mengetahui bahwa mereka akan mendarat tepat di atas yang lain. Algoritma skoring harus tetap membobot node sehingga Anda menelurkan di node dengan paling sedikit pemain lain.

Ingatlah bahwa grafik peta Anda harus dibangun dengan hati-hati, dengan pengetahuan tentang peta, rutenya, chokepoints, dan jarak efektif antara titik-titik node, bukan jarak yang sebenarnya . Seperti dalam, gunakan sesuatu seperti waktu yang diukur untuk melintasi antar node daripada jarak, untuk memperhitungkan medan yang lebih sulit. Anda juga perlu memperhitungkan keterbukaan vs perlindungan; dua node mungkin secara fisik berjauhan, tetapi karena mereka sangat terbuka, memunculkan pemain di setiap node mungkin berarti mereka sama-sama rentan seperti jika Anda melahirkan mereka tepat di sebelah satu sama lain.

Perbaikan:

  • Tambahkan penalti sementara untuk mencetak skor jika seorang pemain telah melahirkan simpul baru-baru ini, untuk menghentikan chokepoint dari pembentukan (aliran pemain tanpa akhir yang datang dari arah yang sama dan dipilih)
  • Tambahkan keacakan dalam rentang (misalnya memilih 3 node terbaik dan kemudian secara acak memilih di antara mereka dengan probabilitas yang sama) untuk mendapatkan lebih banyak variasi.
  • Tambahkan bobot awal ke tengah peta (atau titik paling menarik) ketika belum ada yang muncul, sehingga Anda menelurkan di tempat-tempat yang diketahui, bahkan ketika setiap node memiliki skor nol karena tidak ada pemain lain yang hadir.

0

Beberapa orang lain telah membahas keterbatasan persyaratan Anda (peta perlu skala pada titik tertentu untuk mencegah kepadatan berlebih, dll.), Dan pada akhirnya menghindari fakta bahwa kemungkinan tidak ada algoritma penempatan yang "sempurna". Ketika kemungkinan tidak ada algoritma "sempurna", saya selalu melihat kearah heuristik. Anda memiliki beberapa kriteria yang secara langsung atau tidak langsung bertentangan dengan satu sama lain, bersama dengan ruang pencarian yang sangat rumit. Menemukan solusi optimal mungkin tidak dapat dilakukan atau praktis, tetapi dengan sedikit penyesuaian, pendekatan statistik dapat bekerja dengan sangat baik sebagian besar waktu.

Mengatasi kriteria ketiga dan keempat Anda: "Peta tidak harus diperluas."

Saya akan memastikan pada awalnya Anda memiliki node yang terlalu banyak (yaitu: sama padatnya dengan mesh navigasi untuk pencarian jalur). Ini membuat menghitung jarak ke pemain lain lebih mahal (tidak secara langsung bertetangga dengan node), tetapi ini bukan proses yang akan terjadi lebih dari satu kali per putaran (saya berasumsi). Bonus dari ini adalah Anda dapat menggunakan perpustakaan nav pra-lintir untuk sebagian besar operasi Anda. Selain itu ini akan menghormati traversal di sekitar rintangan dengan cara yang adil di mana jarak euclidean mungkin tidak (pemain dalam labirin mungkin ditempatkan lebih dekat bersama daripada di lapangan terbuka)

Hitung heuristik untuk karakteristik bibit yang Anda inginkan:

Setelah secara acak menempatkan semua pemain, hitung kinerja simpul-simpul di sekitarnya berdasarkan kriteria Anda (jarak dari pemain lain, jarak untuk memijah, dll.) Bobot nilai Anda dapat diubah, dan dimanipulasi menjadi nonlinear untuk menyetel persis kinerja Anda ingin dalam kasus ideal yang telah dibersihkan (kotak persegi panjang tanpa penghalang), dan kinerjanya harus sama ketika Anda menambahkan dunia kembali. Dari sana Anda dapat memutuskan berapa banyak node untuk dicari, berapa ambang batas untuk memindahkan titik awal , dan berapa banyak iterasi yang ingin Anda lakukan sebelum menyelesaikan spawn dan memulai permainan.


0

Jika lapangan bermain adalah torus topologis (yaitu persegi panjang di mana "keluar batas" berarti masuk di sisi yang berlawanan), ini kemungkinan merupakan jawaban yang baik: pemain jmemunculkan x = (pjW/N) mod W, y = (qjH/N) mod H, di mana W,Hdimensi persegi panjang, Nadalah jumlah pemain, dan p,qbilangan bulat yang harus ditentukan; mereka berbeda, (mungkin) relatif prima, dan tidak terlalu jauh dari sqrt(N). Poin spawn membentuk pola 'wallpaper' miring.

Itu seandainya para pemain hanya muncul di awal permainan. Jika mereka muncul nanti, saya kira Anda ingin menempatkan mereka sejauh mungkin dari posisi pemain mana pun saat ini - pada titik puncak diagram Voronoi yang ditentukan oleh pemain lain.


0

Bagaimana tentang:

Setiap pemain dikelilingi oleh kotak non-pemijahan (atau lingkaran).

Seperti halnya, ada kotak dengan ukuran tertentu yang muncul di sekitar setiap pemain dan mengikuti pemain itu di sekitarnya - tidak ada pemain lain yang bisa muncul di dalam kotak itu.

Kotak ini hanya memengaruhi pemijahan dan tidak ada gerakan lain selama pertandingan.

Ini bekerja dengan baik pemijahan hanya awal atau pemijahan terus menerus.

(Titik menunjukkan pemain dan hijau menunjukkan area spawn untuk pemain baru)

Ukuran peta tidak harus meningkat sebanding dengan jumlah pemain

Untuk mengatasinya, Anda dapat melakukan salah satu dari dua hal: (atau keduanya)

  • Kurangi ukuran kotak non-pemijahan berdasarkan jumlah pemain.
  • Izinkan hingga pemain musuh X menelurkan di setiap kotak.
    • Angka ini dapat meningkat saat Anda pergi (mulai dari 0).
    • Varian 1: memiliki kotak tanpa-spawn yang lebih kecil dan kotak spawn terbatas yang lebih besar.
    • Varian 2: probabilitas berat menurut seberapa dekat bibit baru dengan pemain ini (jika di dalam kotak) - mungkin sulit untuk diterapkan secara efisien.
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.