Bagaimana saya bisa membersihkan puing-puing pemain yang berlebihan?

92

Dalam gim terbaru yang saya buat, Anda dapat mengiris objek 2D secara sewenang-wenang, ditunjukkan dalam gif ini:

masukkan deskripsi gambar di sini

Anda dapat terus memotongnya menjadi ratusan atau ribuan keping. Ini tidak membuat banyak lag, karena mereka selalu dalam keadaan fisika tidur, tetapi ada masalah ketika Anda menyebabkan mereka bergerak.

Saya tidak begitu yakin bagaimana cara membuatnya sehingga tidak ada banyak puing-puing dari memotong sesuatu. Saya benar-benar tidak ingin menghapusnya setelah jangka waktu tertentu; Saya tidak suka bagaimana, jika Anda kembali ke sesuatu yang Anda potong setelah beberapa saat, itu secara acak menghilang.

Bagaimana saya bisa membersihkan puing-puing pemain yang berlebihan?

Ducktor
sumber
17
Tidak terlalu jelas dari pertanyaan Anda apa yang sebenarnya Anda inginkan. Anda mengatakan Anda ingin "membersihkan puing-puing", tetapi pada saat yang sama Anda mengatakan Anda tidak ingin puing-puing menghilang setelah beberapa saat.
Philipp
10
Tiny & Big akan menghancurkan potongan yang lebih kecil. Cukup yakin potongan yang lebih besar tetap ada untuk level, tapi aku tidak sepenuhnya mengingatnya. Berikut ini contohnya: youtu.be/236ly0ApPqg?t=177
TyCobb
2
Barang-barang yang di luar jangkauan dapat dihapus dan diganti ketika Anda kembali ke sana.
Loren Pechtel
3
Hanya sedikit pendapat saya, tetapi atur ukuran objek minimum yang akan dipengaruhi oleh aksi cut. Jika sulit untuk memilih potongan yang Anda potong, maka Anda tidak dapat memotongnya. (Selain itu, dinamika permainan yang bagus, yang ini pasti punya kaki!)
AJFaraday
12
Saya ingin menyatakan saya tidak mengambil kredit untuk membuat mekanik pemotongan karena ini adalah aset gratis yang saya temukan di github . Telah menggunakan contoh itu memberi Anda ide tentang bagaimana menggunakannya untuk memotong objek. (Pemain diberi kode oleh saya dan begitu juga segala sesuatu yang lain dalam permainan.
Ducktor

Jawaban:

71

Pertama-tama, mekanik permainan itu terlihat sangat menyenangkan, jadi selamat memikirkannya! Berikut adalah dua solusi sederhana yang dapat digunakan secara mandiri atau bersama-sama untuk menyelesaikan masalah khusus ini:

Hapus Potongan Sangat Kecil

Tidak ada banyak titik untuk menjaga sekitar tabrakan kecil yang benar-benar tidak akan menghalangi pemain atau memiliki efek nyata pada lingkungan. Menghitung logika tabrakan tambahan sama sekali tidak layak, jadi hapus bagian-bagian ini atau hapus tabrakan.

Batasi Pemotongan Pemain

Memiliki potongan tak terbatas berpotensi membuat banyak teka-teki Anda sangat sederhana jika Anda bisa mengiris setiap benda yang menghalangi menjadi tumpukan bubur. Berikan pemain hanya beberapa potongan untuk bermain (atau membuatnya perlahan terisi kembali dari waktu ke waktu) dan Anda mungkin akan menemukan bahwa itu membuat teka-teki Anda lebih menantang selain menghilangkan rasa sakit berurusan dengan tabrakan pada ribuan fragmen.

Chase Sandmann
sumber
1
Saya pikir saya akan melakukan yang pertama karena saya tidak berencana membuat permainan puzzle apa pun.
Ducktor
36
Micheal Bay it up ketika potongan-potongan kecil menghilang juga. Itu bukan log, itu serbuk gergaji. Atau meledak serbuk kayu. kenapa tidak?!
corsiKa
26
@corsiKa Jika Anda menambahkan beberapa efek menyala pada gerakan memotong, Anda dapat membuat luka tersebut meninggalkan bekas hangus pada titik kontak, dengan lebar tertentu. Jika objeknya sangat kecil sehingga sepenuhnya "hangus", itu bisa meledak dalam api dan terbakar dalam beberapa saat.
T. Sar - Reinstate Monica
155

Cari tahu kemacetan Anda

Beberapa ratus benda bergerak seharusnya tidak menjadi masalah. Namun, beberapa ratus benda bertabrakan mungkin. Ini akan membutuhkan beberapa pengujian, namun saya percaya hambatan yang Anda miliki adalah tabrakan.

Ngomong-ngomong, berapa banyak benda yang kita bicarakan? Apa platformnya? Seratus objek untuk game mobile tidak sama dengan seratus untuk game web atau seratus objek untuk game desktop.

Uji permainan yang sama tetapi dengan tabrakan antara objek yang dipotong dinonaktifkan, dan lihat apakah Anda membuatnya ketinggalan pada jumlah objek yang sama. Jika itu masalahnya, itu berarti jumlah benda yang banyak adalah penyebab masalah; jika tidak, tabrakan adalah masalahnya.

Ini akan menginformasikan keputusan Anda tentang apa yang akan Anda lakukan untuk meningkatkan kinerja. Tidak semua gagasan di bawah ini akan berlaku, dan Anda tetap akan perlu pengujian.


Saya tidak akan berbicara tentang mengoptimalkan sejumlah besar objek yang jauh dari pemain, karena masalah tampaknya datang ketika berinteraksi dengan objek.

ada masalah saat Anda menyebabkan mereka bergerak.

Jika masalah terjadi ketika berinteraksi dengan objek, tidak jelas bagaimana menghapus objek yang tidak terlihat akan menyelesaikannya ... namun, saya akan menganggap itu mungkin membantu.

Saya hanya akan mengatakan bahwa jika objek yang jauh dari pemain adalah masalah, Anda bisa mulai dengan memiliki level yang lebih kecil, atau melihat ke dalam membagi permainan dalam potongan-potongan yang dapat Anda muat dan lepas tergantung pada ke mana pemain pergi.


Di luar batas

Saya percaya bahwa ketika datang untuk membersihkan puing-puing, hal pertama yang harus dimiliki adalah menghilangkan benda-benda yang berada di luar batas. Misalnya, potongan yang jatuh ke lubang. Jika tidak ada cara agar pemain bisa sampai di sana untuk melihatnya, tidak ada alasan untuk tetap melakukannya.

Saya akan kembali ke sini.


Jadikan lebih realistis (bagian 1)

Ketika Anda memotong kayu dengan gergaji, kapak atau alat serupa, akan ada material yang hilang (untuk serbuk gergaji, serutan, dll). Bahkan jika Anda memotong dengan laser, laser akan membakar kayu. Selain itu, untuk benda yang bukan kayu biasanya akan ada deformasi di sekitar potongan, remuk, dll.

Apa yang saya katakan adalah bahwa potongannya tidak sempurna, dan beberapa materi akan hilang. Anda bisa memodelkan itu dalam game Anda. Benda ajaib memotong merah itu memiliki ketebalan. Hapus ketebalan itu dari objek (tambahkan efek partikel jika Anda merasa terlalu bersalah).

Ini berarti bahwa Anda tidak akan dapat memotong apa pun yang lebih kecil dari ketebalan itu, pada kenyataannya, mencoba melakukannya akan menghapusnya dari permainan. Itu bagus! Ini berarti bahwa ada batas atas jumlah puing yang akan ada, dan ada cara yang sehat secara mekanis untuk membersihkannya dalam game.


Ubah persneling untuk benda kecil

Ini akan bekerja lebih baik jika tabrakan adalah masalahnya.

Setelah sebuah objek terlalu kecil, detail sudut yang berbeda itu kurang relevan. Anda bisa berubah menjadi mekanik tabrakan yang kurang akurat. Misalnya, Anda bisa menggunakan collider lingkaran.

Anda dapat merawat objek yang lebih kecil tanpa bertabrakan; hanya mempertimbangkan tabrakan antara mereka dan benda-benda agen (seperti avatar pemain atau karakter yang dikendalikan AI).

Akhirnya, benda yang sangat kecil bisa berubah menjadi debu (efek partikel).


Jadikan lebih realistis (bagian 2)

Ini akan bekerja lebih baik jika tabrakan adalah masalahnya.

Bahan berubah bentuk dan pecah di bawah tekanan. Jika Anda berakhir dengan benda panjang dengan ketebalan sangat sedikit, pilah menjadi benda-benda yang lebih kecil sehingga mereka dapat mengambil keuntungan dari solusi di atas.

Kita dapat berpura-pura bahwa ketebalannya terlalu sedikit sehingga hancur dan pecah ketika Anda menabraknya.


Gabungkan objek

Ini akan bekerja lebih baik jika jumlah objek adalah masalahnya.

Trik umum yang digunakan banyak gim untuk menangani sejumlah besar drop yang dapat merusak kinerja adalah dengan menggabungkan drop bersama.

Anda dapat mencoba sesuatu yang serupa untuk benda kecil yang berdekatan satu sama lain. Biarkan mereka menjadi objek tunggal. Namun, saya tidak bermaksud menyatukan potongan-potongan itu. Maksud saya membuat objek tunggal untuk menangani fisika mereka; Anda masih bisa mewakili potongan individual yang membentuk objek, mungkin menggunakan teknik yang mirip dengan efek partikel.


Buat lebih realistis (bagian 3)

Pernahkah Anda mendengar tentang angin? Ada angin di dunia nyata.

Gunakan angin untuk mendorong benda kecil menjauh.

Saya tahu itu bisa terdengar kontra intuitif, karena itu berarti benda kecil tidak bisa beristirahat, setidaknya tidak segera. Baca di bawah sebelum Anda membuat keputusan.

Anda dapat menggunakan angin untuk mendorong benda kecil sebelum - atau segera - mereka mulai menumpuk. Yang akan bekerja lebih baik jika Anda menggunakan optimasi untuk objek kecil (seperti menggabungkannya atau menghapus tabrakan di antara mereka).

Selanjutnya, jika Anda dapat menggunakan angin untuk mendorong item ke lubang atau keluar batas, Anda dapat menggunakan sebagai alasan untuk menghapus item. Sudah kubilang aku akan kembali ke sana. Bahkan jika Anda tidak, itu bisa berfungsi sebagai alasan untuk menghapus benda-benda kecil yang terlalu jauh dari pemain, hanya berpura-pura angin menyingkirkan mereka saat pemain tidak melihat.

Anda dapat menghapus beberapa objek saat pemain tidak melihat, Anda mendapat restu.

Selain itu, Anda sekarang memiliki alasan untuk menambahkan angin, yang dapat Anda tambahkan angin sebagai bagian dari mekanika lain atau hambatan dalam permainan. Anda bahkan dapat menambahkan ke dalam narasi semangat angin yang mencoba menjaga kebersihan, jika Anda memang cenderung.

Catatan : Anda tidak perlu harus memicu angin ketika ada puing-puing untuk dibersihkan (meskipun itu akan berhasil), Anda mungkin dapat memiliki angin terjadi secara berkala.


Berang-berang!

Beberapa berang-berang yang mengganggu datang dan mencuri kayu Anda!

Sekarang Anda memiliki tipe musuh!

Selain itu, tentu saja, mereka menghilangkan kayu saat Anda tidak melihat. Anda bahkan dapat mendesainnya sehingga Anda kembali melihat satu berang-berang melarikan diri dengan sepotong kayu yang dulunya adalah tumpukan. Itu akan membuat momen yang mengesankan, akan menjelaskan mengapa kayu menghilang dan akan menyelesaikan beberapa masalah kinerja yang Anda hadapi, sekaligus.


Itu semua adalah kompromi

Ada batasan platform atau alat yang telah Anda pilih, bahkan waktu dan anggaran yang Anda miliki untuk mengembangkan game adalah batasan. Anda tidak dapat membuat simulasi sempurna dari realitas, namun . Tidak ada yang bisa .

Setiap pengembang bekerja dalam batasan yang platform target mereka dan alat yang mereka miliki pada waktu yang dikenakan pada mereka, dan permainan terbaik harus melakukan pertukaran untuk membuat permainan menyenangkan dan menarik ... bahkan jika itu berarti kurang realisme, pada kenyataannya, sering kali mereka menyenangkan dan menarik karena mereka tidak realistis.

Biarkan kreativitas datang dari keterbatasan itu.

Meskipun, Anda juga dapat membuat game Anda lebih realistis , dengan memilih bagian-bagian realitas yang nyaman untuk pengembangan Anda. Pertimbangkan bahwa kadang-kadang menghilangkan benda yang jauh dari pemain adalah bagian dari biaya membuat permainan yang menyenangkan.

Theraot
sumber
36
Posting ini adalah jawaban pasti untuk masalah reruntuhan puing. Anda telah memberikan ringkasan teknik yang lengkap, sementara juga menunjukkan dengan jelas kebutuhan untuk menjadi kreatif dan memilih solusi yang sesuai dengan keadaan Anda, sementara juga menunjukkan bagaimana mekanika dan narasi dapat mengalir bersama. Saya hanya ingin mengatakan bahwa saya kesulitan mengungkapkan betapa saya terkesan.
Dragomok
12
Mencoba untuk memotong objek yang lebih kecil dari lebar balok tidak perlu menyebabkan objek menghilang sama sekali tetapi mungkin menghasilkan satu objek yang lebih kecil. Yang penting adalah bahwa jumlah objek hanya dapat ditingkatkan jika objek yang dipotong melebihi lebar balok.
supercat
1

Dunia ini terpisah. Anda tidak dapat membuat objek yang lebih kecil dari piksel, jadi jangan biarkan objek tersebut ada. (Ini mirip dengan beberapa poin realisme yang dibuat oleh Theraot .)

Memang, Anda mungkin mendapatkan ini secara gratis: pemain menentukan garis potong mereka sebagai garis yang pada dasarnya diskrit di layar. Efek dari pemotongan adalah untuk membagi setiap objek menjadi sub-objek yang terdiri, masing-masing, dari piksel pada atau di bawah garis itu, dan piksel secara ketat di atasnya. Objek satu piksel tidak mungkin berada di atas dan di bawah garis, sehingga tidak dapat dipotong oleh algoritma ini.

Jika memotong semua potongan ke dalam piksel individual masih akan meninggalkan Anda dengan terlalu banyak objek untuk dilacak, ukuran minimum yang lebih besar mungkin masih berfungsi.

Atau jangan khawatir tentang itu. Jika pemain siap untuk menghabiskan waktu yang lama memotong benda menjadi debu, mereka jelas tidak terburu-buru sehingga mereka dapat menangani lag yang disebabkannya. ;-)

David Richerby
sumber