ADS

Membuat Instance

 

Membuat instance

Pada bagian sebelumnya, kita melihat bahwa sebuah adegan adalah kumpulan simpul yang disusun dalam struktur pohon, dengan satu simpul sebagai akarnya. Anda dapat membagi proyek Anda ke dalam sejumlah adegan. Fitur ini membantu Anda memecah dan mengatur berbagai komponen permainan Anda.

Anda dapat membuat adegan sebanyak yang Anda inginkan dan menyimpannya sebagai file dengan .tscnekstensi, yang merupakan singkatan dari "text scene". label.tscnFile dari pelajaran sebelumnya adalah contohnya. Kami menyebut file tersebut "Packed Scenes" karena file tersebut mengemas informasi tentang konten adegan Anda.

Berikut ini contoh bola. Bola tersebut terdiri dari simpul RigidBody2D sebagai akarnya yang diberi nama Ball, yang memungkinkan bola jatuh dan memantul di dinding, simpul Sprite2D , dan CollisionShape2D .

../../_images/instancing_ball_scene.webp

Setelah Anda menyimpan sebuah adegan, adegan tersebut berfungsi sebagai cetak biru: Anda dapat mereproduksi adegan tersebut di adegan lain sebanyak yang Anda inginkan. Mereplikasi objek dari templat seperti ini disebut instancing .

../../_images/instancing_ball_instances_example.webp

Seperti yang telah kami sebutkan di bagian sebelumnya, adegan yang diinstansiasi berperilaku seperti sebuah node: editor menyembunyikan kontennya secara default. Saat Anda menginstansiasi Bola, Anda hanya melihat node Bola. Perhatikan juga bagaimana setiap duplikat memiliki nama yang unik.

Setiap contoh adegan Bola dimulai dengan struktur dan properti yang sama seperti ball.tscn. Namun, Anda dapat memodifikasi masing-masing secara independen, seperti mengubah cara bola memantul, seberapa berat bola, atau properti apa pun yang diekspos oleh adegan sumber.

Dalam praktiknya

Mari kita gunakan instancing dalam praktik untuk melihat cara kerjanya di Godot. Kami mengundang Anda untuk mengunduh contoh proyek bola yang telah kami siapkan untuk Anda: instancing_starter.zip .

Ekstrak arsip di komputer Anda. Untuk mengimpornya, Anda memerlukan Manajer Proyek. Manajer Proyek dapat diakses dengan membuka Godot, atau jika Anda sudah membuka Godot, klik Proyek -> Keluar ke Daftar Proyek ( di macOS)Ctrl + Shift + QCtrl + Option + Cmd + Q

Di Manajer Proyek, klik tombol Impor untuk mengimpor proyek.

../../_images/instancing_import_button.webp

Pada jendela pop-up yang muncul, navigasikan ke folder yang telah Anda ekstrak. Klik dua kali project.godotfile tersebut untuk membukanya.

../../_images/instancing_import_project_file.webp

Terakhir, klik tombol Impor & Edit.

../../_images/instancing_import_and_edit_button.webp

Jendela yang memberitahukan Anda bahwa proyek terakhir dibuka dalam versi Godot yang lama mungkin muncul, tetapi itu bukan masalah. Klik Oke untuk membuka proyek.

Proyek ini berisi dua adegan yang dikemas: main.tscn, yang berisi dinding tempat bola bertabrakan, dan ball.tscn. Adegan Utama akan terbuka secara otomatis. Jika Anda melihat adegan 3D kosong alih-alih adegan utama, klik tombol 2D di bagian atas layar.

../../_images/instancing_2d_scene_select.webp ../../_images/instancing_main_scene.webp

Mari tambahkan bola sebagai anak dari simpul Utama. Di dock Adegan, pilih simpul Utama. Lalu, klik ikon tautan di bagian atas dock adegan. Tombol ini memungkinkan Anda untuk menambahkan contoh adegan sebagai anak dari simpul yang saat ini dipilih.

../../_images/instancing_scene_link_button.webp

Klik dua kali pada adegan bola untuk membuat contohnya.

../../_images/instancing_instance_child_window.webp

Bola muncul di sudut kiri atas area pandang.

../../_images/instancing_ball_instanced.webp

Klik dan seret ke arah tengah tampilan.

../../_images/instancing_ball_moved.webp

Mainkan game dengan menekan F5di macOS). Anda akan melihatnya jatuh.Cmd + B

Sekarang, kita ingin membuat lebih banyak contoh simpul Bola. Dengan bola yang masih dipilih, tekan pada macOS) untuk memanggil perintah duplikat. Klik dan seret untuk memindahkan bola baru ke lokasi lain.Ctrl + DCmd + D

../../_images/instancing_ball_duplicationd.webp

Anda dapat mengulang proses ini hingga Anda memiliki beberapa di dalam adegan.

../../_images/instancing_main_scene_with_balls.webp

Mainkan permainan lagi. Anda sekarang akan melihat setiap bola jatuh secara independen satu sama lain. Inilah yang terjadi pada instance. Setiap instance merupakan reproduksi independen dari adegan template.

Mengedit adegan dan contoh

Masih banyak lagi contohnya. Dengan fitur ini, Anda dapat:

  1. Ubah properti satu bola tanpa memengaruhi bola lainnya menggunakan Inspektur.

  2. Ubah properti default setiap Bola dengan membuka ball.tscnadegan dan membuat perubahan pada simpul Bola di sana. Setelah menyimpan, semua contoh Bola dalam proyek akan melihat nilai-nilainya diperbarui.

Catatan

Mengubah properti pada suatu instans selalu mengganti nilai dari adegan yang dikemas terkait.

Mari kita coba. Klik dua kali ball.tscnpada FileSystem untuk membukanya.

../../_images/instancing_ball_scene_open.webp

Pilih simpul Ball. Di Inspektur di sebelah kanan, klik properti PhysicsMaterial untuk mengembangkannya.

../../_images/instancing_physics_material_expand.webp

Atur properti Bounce menjadi 0.5dengan mengklik bidang angka, mengetik 0.5, dan menekan Enter.

../../_images/instancing_property_bounce_updated.webp

Mainkan permainan dengan menekan F5di macOS) dan perhatikan bagaimana semua bola sekarang memantul lebih banyak. Karena adegan Bola adalah templat untuk semua contoh, memodifikasinya dan menyimpannya menyebabkan semua contoh diperbarui sebagaimana mestinya.Cmd + B

Sekarang mari kita sesuaikan satu contoh. Kembali ke adegan utama dengan mengklik tab yang sesuai di atas viewport.

../../_images/instancing_scene_tabs.webp

Pilih salah satu node Bola yang diinstansi dan, di Inspektur, atur nilai Skala Gravitasi ke 10.

../../_images/instancing_property_gravity_scale.png

Tombol "kembalikan" berwarna abu-abu muncul di samping properti yang disesuaikan.

../../_images/instancing_property_revert_icon.png

Ikon ini menunjukkan bahwa Anda mengganti nilai dari adegan sumber yang dikemas. Bahkan jika Anda mengubah properti dalam adegan asli, penggantian nilai akan dipertahankan dalam contoh tersebut. Mengklik ikon pengembalian akan mengembalikan properti ke nilai dalam adegan yang disimpan.

Jalankan kembali permainan dan perhatikan bagaimana bola ini sekarang jatuh lebih cepat daripada bola lainnya.

Catatan

Anda mungkin melihat bahwa Anda tidak dapat mengubah nilai PhysicsMaterial bola. Hal ini karena PhysicsMaterial adalah sumber daya , dan perlu dibuat unik sebelum Anda dapat mengeditnya dalam adegan yang menautkan ke adegan aslinya. Untuk membuat sumber daya unik untuk satu contoh, klik kanan pada properti Physics Material di Inspector dan klik Make Unique di menu konteks.

Sumber daya merupakan komponen penting lain dalam permainan Godot yang akan kita bahas pada pelajaran berikutnya.

Contoh adegan sebagai bahasa desain

Instance dan scene dalam Godot menawarkan bahasa desain yang sangat baik, yang membedakan mesin ini dari yang lain. Kami merancang Godot berdasarkan konsep ini dari awal.

Kami sarankan untuk mengabaikan pola kode arsitektur saat membuat game dengan Godot, seperti diagram Model-View-Controller (MVC) atau Entity-Relationship. Sebagai gantinya, Anda dapat mulai dengan membayangkan elemen yang akan dilihat pemain dalam game Anda dan menyusun kode berdasarkan elemen tersebut.

Misalnya, Anda dapat menjabarkan game tembak-menembak seperti ini:

../../_images/instancing_diagram_shooter.png

Anda dapat membuat diagram seperti ini untuk hampir semua jenis permainan. Setiap persegi panjang mewakili entitas yang terlihat dalam permainan dari sudut pandang pemain. Panah memberi tahu Anda adegan mana yang memiliki yang mana.

Setelah Anda memiliki diagram, kami sarankan untuk membuat adegan untuk setiap elemen yang tercantum di dalamnya guna mengembangkan game Anda. Anda akan menggunakan instancing, baik melalui kode atau langsung di editor, untuk membangun pohon adegan Anda.

Programmer cenderung menghabiskan banyak waktu merancang arsitektur abstrak dan mencoba memasukkan komponen ke dalamnya. Mendesain berdasarkan adegan membuat pengembangan lebih cepat dan lebih mudah, sehingga Anda dapat fokus pada logika permainan itu sendiri. Karena sebagian besar komponen permainan dipetakan langsung ke sebuah adegan, menggunakan desain berdasarkan instansiasi adegan berarti Anda hanya memerlukan sedikit kode arsitektur lainnya.

Berikut contoh diagram adegan untuk permainan dunia terbuka dengan banyak aset dan elemen bersarang:

../../_images/instancing_diagram_open_world.png

Bayangkan kita mulai dengan membuat ruangan. Kita dapat membuat beberapa adegan ruangan yang berbeda, dengan susunan furnitur yang unik di dalamnya. Kemudian, kita dapat membuat adegan rumah yang menggunakan beberapa contoh ruangan untuk interiornya. Kita akan membuat benteng dari banyak contoh rumah dan medan luas tempat kita akan menempatkan benteng tersebut. Masing-masing akan menjadi adegan yang mengambil contoh dari satu atau lebih sub-adegan.

Nantinya, kita bisa membuat adegan yang menggambarkan penjaga dan menambahkannya ke benteng. Mereka akan secara tidak langsung ditambahkan ke dunia permainan secara keseluruhan.

Dengan Godot, mudah untuk mengulang permainan seperti ini, karena yang perlu Anda lakukan hanyalah membuat dan membuat contoh lebih banyak adegan. Kami merancang editor agar dapat diakses oleh programmer, desainer, dan seniman. Proses pengembangan tim yang umum dapat melibatkan seniman 2D atau 3D, desainer level, desainer permainan, dan animator, semuanya bekerja dengan editor Godot.

Ringkasan

Instancing, proses pembuatan objek dari cetak biru, memiliki banyak kegunaan praktis. Dengan scene, Anda akan mendapatkan:

  • Kemampuan untuk membagi permainan Anda menjadi komponen-komponen yang dapat digunakan kembali.

  • Alat untuk menyusun dan merangkum sistem yang kompleks.

  • Bahasa untuk memikirkan struktur proyek permainan Anda dengan cara yang alami.

Tidak ada komentar:

Posting Komentar