Cara Merancang Pratinjau Penempatan Furnitur yang Mencegah Tabrakan dan Salah Tempat
Untuk game dekorasi, pratinjau furnitur harus menjawab tiga pertanyaan sebelum pemain mengonfirmasi: di mana barang akan mendarat, apakah posisi tersebut diizinkan, dan apa yang akan terjadi jika mereka memutar atau membatalkannya? Gunakan wujud bayangan ("ghost") langsung dari barang tersebut, validasi tapak ukurannya pada posisi dan rotasi saat ini, serta tunjukkan alasan yang jelas ketika penempatan terhalang. Buat pratinjau tetap terlihat hingga konfirmasi, dan pastikan pembatalan akan mengembalikan pemain ke ruangan tanpa menempatkan apa pun. Panduan ini berfokus pada perancangan interaksi penempatan tersebut untuk para pengembang game.
Apa yang harus dikomunikasikan oleh pratinjau?
Perlakukan pratinjau sebagai versi sementara dari furnitur akhir, bukan sekadar penanda kursor. Pratinjau harus menunjukkan ukuran barang, orientasi, titik kontak dengan lantai atau permukaan penyangga, dan status penempatan. Panduan desain ARCore dari Google menyarankan visualisasi titik tujuan dengan objek atau bayangannya serta memberikan umpan balik tepat waktu saat permukaan terdeteksi. Meskipun penempatan AR memiliki batasan yang berbeda dari game dekorasi, prinsip yang sama tetap berlaku: pemain perlu melihat ke mana suatu barang akan diletakkan sebelum mereka menyetujuinya. Panduan penempatan konten ARCore Google
Pratinjau yang berguna memiliki tiga status yang jelas: valid, tidak valid, dan belum terselesaikan (unresolved). Valid berarti usulan penempatan memenuhi aturan game. Tidak valid berarti aturan yang diketahui telah dilanggar, seperti tumpang tindih dengan barang lain atau permukaan yang tidak memiliki penopang. Belum terselesaikan berarti game belum dapat menentukan target yang valid, mungkin karena kursor berada di atas dinding saat mencoba menempatkan furnitur lantai. Jangan menampilkan status belum terselesaikan sebagai valid hanya karena pemeriksaan tabrakan tidak menemukan apa pun; “tidak ada tabrakan terdeteksi” dan “dapat ditempatkan di sini” bukanlah hasil yang sama.
Bagaimana validitas harus dibedakan dari deteksi tabrakan?
Tabrakan hanyalah satu bagian dari validitas penempatan. Sebuah sofa mungkin tidak bersinggungan dengan objek lain, tetapi masih berada di luar ruangan, melayang di atas lantai, menghadap ke arah yang tidak dapat digunakan, atau menghalangi pintu menurut aturan game. Tentukan validitas sebagai daftar periksa batasan untuk setiap kategori furnitur: permukaan penopang yang diizinkan, batas ruangan, tabrakan, batas orientasi, serta ruang bebas akses atau interaksi terencana yang diberlakukan oleh game.
Bedakan aturan mutlak (hard rules) dari preferensi. Tabrakan atau permukaan tanpa penopang dapat mencegah konfirmasi. Jalur lewat yang sempit mungkin hanya berupa peringatan ringan jika game mengizinkannya. Perbedaan ini mencegah saran dekoratif terlihat seperti kegagalan mutlak, dan memungkinkan pemain memahami kondisi mana yang dapat mereka pilih untuk diterima. Penelitian tentang sistem tata letak furnitur juga memperlakukan penataan sebagai hal yang dipandu oleh beberapa aturan tata letak, bukan sekadar geometri semata; sistem yang dipublikasikan Stanford menggabungkan panduan desain interior dan mengevaluasi saran tata letak dengan para partisipan. Hal ini mendukung pertimbangan yang lebih luas daripada sekadar tabrakan, meskipun tidak menentukan antarmuka game tertentu secara mutlak. Studi Tata Letak Furnitur Interaktif Stanford
Pemeriksaan teknis harus sesuai dengan tapak pratinjau yang telah diubah posisinya (transformed footprint). API tumpang tindih (overlap API) Unreal Engine menjelaskan pemeriksaan bentuk tabrakan yang disediakan pada posisi dan rotasi tertentu, sementara Physics.OverlapBox milik Unity 6 menerima titik tengah, setengah ukuran bentang (half extents), orientasi, layer mask, dan perilaku pemicu (trigger). API ini menggambarkan mengapa perubahan rotasi harus memicu pemeriksaan terhadap bentuk yang telah diputar. Perilaku mesin game dan detail API bervariasi menurut versi; gunakan dokumentasi untuk versi mesin dan konfigurasi tabrakan yang benar-benar digunakan dalam game yang dirilis. API tumpang tindih Unreal Engine dan Unity 6 Physics.OverlapBox
Bagaimana tampilan posisi yang valid dan tidak valid?
Padukan tampilan visual dengan petunjuk pendukung ganda (redundant cue). Misalnya, ubah corak warna dan garis luar (outline) dari bayangan objek, serta tampilkan status singkat seperti “Siap ditempatkan” atau “Menumpuk meja.” Warna saja sulit untuk dibedakan, terutama di atas berbagai jenis lantai atau pencahayaan yang berbeda-beda. Jaga agar siluet furnitur tetap terlihat di kedua kondisi tersebut sehingga pemain masih dapat menilai posisi dan rotasinya. Jika collider tertentu menjadi penyebab terhalangnya penempatan, mengidentifikasinya dapat membantu upaya perbaikan; hindari membebani pratinjau dengan terlalu banyak detail teknis ketika satu alasan dalam bahasa yang sederhana sudah cukup.
Buat status diperbarui seiring bergeraknya furnitur, bukan hanya setelah tombol konfirmasi ditekan. Saat konfirmasi, tempatkan furnitur hanya jika status saat ini valid, dan berikan pengakuan singkat bahwa tindakan tersebut berhasil. Jika tidak valid, biarkan pratinjau tetap aktif dan nyatakan alasannya sehingga pemain dapat menyesuaikannya tanpa mengulang interaksi dari awal. Ini adalah rekomendasi desain yang disimpulkan dari tujuan mencegah penempatan yang tidak disengaja dan dari panduan Google untuk mengomunikasikan kesalahan dengan jelas serta menyediakan jalur tindakan penyelesaian yang dapat dilakukan. Panduan status kesalahan Google
Hindari mengandalkan satu batas nilai (threshold) yang mengubah seluruh bayangan objek antara valid dan tidak valid secara tiba-tiba tanpa menjelaskan alasannya. Jika sebuah kursi terlalu dekat dengan dinding, misalnya, pemain harus melihat tapak sebenarnya dan menerima petunjuk spesifik seperti “Di luar ruangan” atau “Menumpuk dinding.” Jika aturan tersebut hanya berupa preferensi, beri label sebagai peringatan dan tetap sediakan opsi konfirmasi jika hal itu sesuai dengan desain game.
Umpan balik apa yang harus diberikan oleh rotasi?
Pertahankan pratinjau tetap terikat pada input pemain saat berputar, dan validasi kembali pada sudut yang baru. Luas tapak barang mungkin menyapu dan menabrak objek terdekat meskipun titik tengah barang tersebut hampir tidak bergerak. Kontrol rotasi juga harus membuat arah dan besaran perubahan dapat diprediksi: perintah visual untuk memutar, peningkatan sudut yang jelas untuk rotasi bertahap, atau indikator rotasi berkelanjutan dapat mengomunikasikan dampak dari input yang diberikan.
Setelah pemutaran, perbarui bayangan objek serta petunjuk orientasi apa pun. Panah kecil yang mengarah ke lantai, penanda depan, atau tepi depan yang terlihat dapat mempermudah melihat ke arah mana sofa atau meja akan menghadap. Jika furnitur menempel otomatis (snap) ke kisi-kisi atau pada kelipatan sudut tertentu, tunjukkan hasil yang sudah menempel tersebut dalam pratinjau, bukan hanya posisi kursor mentah yang belum menempel. Hal ini memungkinkan pemain menilai penempatan yang benar-benar akan dikonfirmasi.
Bagaimana pembatalan dan pemulihan seharusnya bekerja?
Saat sedang memindahkan barang, sediakan opsi pembatalan melalui kontrol yang konsisten dan terlihat. Pembatalan harus menghilangkan bayangan objek dan kembali ke keadaan ruangan sebelumnya tanpa menempatkan, menghapus, atau memindahkan furnitur secara diam-diam. Jika pemain memulainya dengan memindahkan barang yang sudah diletakkan sebelumnya, pembatalan harus mengembalikannya ke posisi semula; ini adalah aturan interaksi yang disarankan, bukan perilaku bawaan yang dijamin oleh API mesin game apa pun.
Tindakan konfirmasi dan pembatalan memerlukan label atau ikon yang berbeda secara jelas, dan pratinjau harus tetap ada hingga salah satunya dipilih. Saat penempatan terhalang, tampilkan langkah lanjutan kecil—pindahkan, putar, atau batalkan—alih-alih membiarkan pemain menebak-nebak. Panduan penempatan Google juga merekomendasikan umpan balik kesalahan yang jelas dan alur menuju penyelesaian, sembari mencatat bahwa pengguna mungkin memerlukan instruksi sebelum menggunakan gestur seret (drag). Untuk game, tampilkan kontrol yang relevan segera saat furnitur diangkat, tidak hanya di layar bantuan terpisah. Panduan penempatan manual Google
Contoh terapan: menempatkan rak buku
Bayangkan seorang pemain sedang memosisikan rak buku di samping dinding. Pratinjau pertama-tama menemukan target lantai dan menempelkan rak buku ke dinding. Tapaknya bertabrakan dengan meja samping, sehingga bayangan objek menampilkan status tidak valid beserta pesan “Menumpuk meja samping.” Pemain memutarnya; tapak dihitung ulang pada sudut yang baru, dan pratinjau sekarang pas tanpa tumpang tindih. Penanda yang menghadap ke depan memastikan sisi mana yang akan menghadap ke dalam ruangan. Pemain melihat “Siap ditempatkan,” mengonfirmasi, dan barang tersebut muncul pada posisi yang ditunjukkan oleh bayangan objek.
Jika rak buku tersebut justru mendarat sebagian di luar batas ruangan, game harus mengidentifikasi batasan tersebut meskipun tidak ada tabrakan objek lain. Jika permukaan target tidak dapat ditentukan, tunjukkan petunjuk belum terselesaikan yang netral seperti “Tempatkan di lantai” dan jangan izinkan konfirmasi. Pesan-pesan ini hanyalah contoh ilustratif, bukan klaim tentang fitur Metlivi atau hasil pengujian kegunaan terukur.
Daftar periksa desain praktis
Sebelum implementasi, tuliskan aturan penempatan berdasarkan jenis barang dan tentukan mana yang merupakan penghalang mutlak (blocker) versus peringatan biasa. Kemudian verifikasi bahwa pratinjau menggunakan tapak, rotasi, perataan (snapping), dan titik tumpu yang sama dengan objek yang ditempatkan. Periksa interaksi di tepi dinding, sudut, celah sempit, dan setelah pemutaran; pastikan bahwa bayangan objek tidak memvalidasi posisi yang pada akhirnya akan ditolak saat penempatan final. Terakhir, uji seluruh alur secara lengkap: mengambil, memindahkan, memutar, memulihkan dari titik yang tidak valid, menempatkan, dan membatalkan—termasuk membatalkan saat mengubah posisi furnitur yang sudah ada.
Aturan keputusannya sangat lugas: tampilkan hasil akhir yang diusulkan secara tepat, bedakan status valid dari tidak valid dan belum terselesaikan, jelaskan alasan penghalang yang paling berguna, serta pertahankan jalur yang dapat diprediksi untuk memutar, menyesuaikan, mengonfirmasi, atau membatalkan. Hal tersebut membuat pratinjau penempatan menjadi alat bantu keputusan yang praktis, alih-alih sekadar peringatan di detik-detik terakhir.
