Senin, 22 Oktober 2018

Instancing - Part 2

Instancing memiliki banyak kegunaan. Sekilas, dengan instancing Anda memiliki:
  • Kemampuan membagi scene agar lebih mudah untuk dikelola.
  • Alternatif yang lebih fleksibel untuk membuat duplikasi.
  • Salah satu jalan untuk mengorganisasi dan menanamkan alur komplek sebuah game atau bahkan sebuah UI (user interface). Di Godot, elemen UI adalah merupakan node.

Sebagai alat desain

Dan yang paling "keren"-nya dari instancing ini adalah bisa digunakan sebagai patokan desain suatu project. Hal ini merupakan pembeda Godot dari mesin lain. Godot didesain menyerupai konsep instancing.

Ketika membuat game menggunakan Godot, direkomendasikan untuk tidak memperdulikan motif penyusunan struktur desain secara umum, seperti menggunakan MVC (Model View Controller) atau diagram Entity-Relationship, tetapi disarankan untuk lebih secara langsung memikirkan struktur satu scene secara natural. Dimulai dengan membayangkan elemen yang jelas di dalam game Anda, yang bisa dilakukan bukan hanya oleh seorang programmer, melainkan semua orang.

Seperti contoh, dibawah ini merupakan penggambaran yang cukup sederhana dalam sebuah konsep game tembak-tembakan.
Diagram penggambaran konsep game tembak-tembakan secara sederhana
Anda bisa membuat diagram seperti ini untuk semua jenis game. Tulis semua bagian game yang bisa Anda bayangkan, lalu kemudian tambahkan tanda panah di setiapnya agar memperlihatkan keterkaitan antar setiap bagian dengan bagian lainnya.

Saat Anda memiliki diagram seperti ini, proses selanjutnya adadalah membuat scene dari tiap elemen yang sebelumnya dibuat. Anda akan menggunakan instancing (entah dengan melalui kode skrip atau melalui editor) sebagai pengait antar tiap-tiap bagian elemennya.

Dalam pembuatan game (atau software pada umumnya) memakan banyak waktu dalam pengerjaan desain dan menyesuaikan komponen game terhadap desainnya. Mendesain sesuai scene pada Godot menghilangkan hal tersebut, dan membuat pengembangan (pembuatan) game menjadi lebih cepat dan mudah, memungkinkan Anda untuk lebih memperhatikan logika kerja game itu sendiri. Karena sebagian besar komponen game menjadi satu kesatuan terhadap scene, maka berarti lebih sedikit dibutuhkan penulisan kode. 

Mari Kita lihat satu contoh lain, sedikit lebih kompleks dari sebelumnya. Adalah sebuah game bergenre open-world dengan banyak aset dan instanced element.
Konsep game open world
Konsep game open world
Lihat pada bagian elemen ruangan (Room). Katakan Kita mulai dari sana. Kita bisa membuat beberapa scene ruangan yang berbeda, dengan susunan perabotan (ruangan) yang berbeda. Kedepannya Kita bisa membuat scene rumah, dan menghubungkan scene ruangan untuk mengatur interiornya.

Lalu, Kita bisa membuat scene benteng (Citadel), dimana terbuat dari kumpulan (instanced) scene rumah. Kemudian, Kita bisa mulai untuk membuat daratan yang luas (world map terrain), dan menambahkan scene benteng didalamnya.

Selanjutnya, Kita bisa membuat scene penjaga (guards) dan NPC (Non-Player Character) lainnya, lalu Kita tambahkan ke dalam scene benteng. Dan hasilnya, adalah sebuah satu kesatuan dunia didalam game.

Dengan Godot, yang Anda butuhkan adalah buat satu elemen dan tambahkan elemen lainnya dengan instancing. Selain itu, UI di ruang editor Godot juga didesain agar mudah digunakan oleh programmer (maupun orang yang bukan programmer). Satu tim pengembangan game biasanya membutuhkan artis 2D atau 3D, desainer level, desainer game, dan animator, semua bekerja menggunakan interface editor yang sama.

Information overload!

Hal yang Kita bahas tadi adalah merupakan hal level tinggi yang Anda baca sekaligus. Bagaimanapun, tujuan dibuatnya part dari tutorial ini adalah agar Anda sadar akan bagaimana scene dan instancing diimplementasikan dalam suatu project sesungguhnya.

Segala hal yang dibahas disini diharapkan akan menjadi kebiasaan bagi Anda agar suatu saat pada saat Anda membuat sebuah game, Anda akan mempraktekan konsep ini. Untuk saat ini, jangan terlalu khawatir apabila belum begitu paham dan lanjutkan ke tutorial berikutnya!

0 komentar:

Posting Komentar