Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Unity
Gamedevelopment

Menggunakan Tekstur Atlas untuk mengoptimasi game kamu

by
Length:ShortLanguages:

Indonesian (Bahasa Indonesia) translation by Aditia Dwiperdana (you can also view the original English article)

Waktu. Bulanan. Mungkin tahunan. Kamu sudah menghabiskan banyak waktu untuk membuat game kamu. Kecil atau besar, tidak masalah. Itu adalah game kamu, dan sekarang kamu ingin membagikannya ke seluruh dunia, dan mungkin menjadi kaya dan terkenal*. Gamenya sempurnya, artnya bagus, dan kamu sangat bangga dengan ide di dalam gamenya. Game milikmu.

Tapi ada satu masalah terakhir yang harus kamu selesaikan sebelum rilis game. Bukan, bukan masalah kecil. Masalahnya: frame rate game kamu rendah. Sangat rendah. Dan berarti hanya satu hal: kamu perlu cari cara untuk memperbaikinya. Kamu harus. Dan kamu tidak tahu bagaimana.

Jangan panik: ada trik sederhana yang bisa membantu kamu. Trik ini disebut "Texture Atlas".

*Jika kamu mejadi kaya karena artikel ini, tolong ingat saya. Terima kasih banyak!

Apa itu Texture Atlas?

Jika kamu memulai pengembangan video game 3D untuk pertama kali, kamu mulai menemukan bahwa grafis 3D terdiri dari beberapa bagian: 3D mesh, texture, sistem partikel, dan banyak elemen lain yang biasanya digambarkan ke layar 30 kali tiap detik (istilah lain: 30 fps) selama proses rendering, membuat dunia game bervariasi dan hidup.

Percaya atau tidak, video game 3D yang pertama saya lihat tidak memiliki elemen-elemen tersebut. Mereka hanya terdiri dari garis yang membentuk objek atau elemen daalam wireframe 3D.

Elite - Masterpiece by David Braben and Ian Bell

Menulis ini membuat saya merasa tua.

Kembali ke masalah kita (kamu) dan ke hal yang penting, hari ini, kita akan membahas tentang tekstur antarmuka pemain (disebut UI) dan juga teksur untuk keseluruhan game.

Dalam game 3D, UI biasanya terdiri dari elemen 3D (seperti bidang atau kubus) dengan tekstur.

Sebelumnya kita menyebutkan tentang proses rendering: operasi di mana elemen dalam memori digambarkan secara fisik di layar. Itu adalah salah satu proses paling rumit dan m ahal yang terjadi dalam game 3D real-time. Jadi, semua usaha untuk mengurangi waktu yang dibutuhkan proses ini akan dibutuhkan; lebih sedikit waktu di tahap rendering berarti frame rate lebih tinggi (dengan kata lain jika kamu mencapai 60 fps, kamu bisa merender gambar dua kali, dan bisa dikembangkan untuk VR), atau lebih banyak elemen di layar (untuk membuat game lebih kaya, lebih beranimasi, lebih cantik).

Satu cara yang digunakan untuk mengurangi waktu proses rendering adalah Texture Atlas: sebuah gambar yang berisi banyak tekstur.

A Texture Atlas with some UI elements

Bagaimana Texture Atlas bekerja

Catatan: Seperti disebutkan di paragraf sebelumnya, artikel ini akan membahas Texture Atlas yang diterapkan untuk UI. Tapi, banyak konsep yang dijelaskan di sini juga berlaku untuk model 3D dan teksturnya.

Sebuah Texture Atlas, seperti yang sudah disebutkan, adalah kumpulan tekstur di dalam sebuah gambar.

Sebuah Atlas biasanya diasosiasikan dengan file descriptor, yang mengindikasikan di mana sebuah texture berada (dalam koordinat x dan y), untuk bisa mengambilnya.

Tergantung pada sistem yang akan kamu gunakan untuk menangani Atlas, kamu akan memiliki lebih banyak atau sedikit opsi, seperti jarak antar gambar yang menyusunnya (mengurangi artefak di ujung tekstur, disebabkan karena tumpang tindih dua elemen), atau kemampuan untuk memutar elemen untuk mengoptimasi ruang pada Atlas (semakin teroptimasi ruang, semakin banyak gambar dalam sebuah Atlas).

Beberapa cara untuk membuat Texture Atlas

Ada beberapa cara berbeda untuk membuat sebuah Atlas. Lingkungan pengembangan yang lengkap biasanya bisa mengelola Atlas; ada banyak sekali alat yang menyediakan opsi tambahan.

Pilihan sistem untuk digunakan tentu saja tergantung pada preferensi personalmu. Berikut kita jelaskan dua diantaranya: Sprite Packer, bawaan Unity, dan TexturePacker (alat yang berdiri sendiri, berbayar).

Sprite Packer

Untuk membuka Sprite Packer, pilih dari menu Window > Sprite Packer.

Pengelolaannya cukup mudah, tombol Pack digunakan untuk membuat satu atau lebih Atlas (tergantung dari jumlah gambarmu dan dimensi Atlas yang akan digunakan).

Sekarang kamu bisa memilih gambar untuk melihat di mana posisinya pada Atlas. Jika kamu menambah atau mengurangi gambar dari proyek, kamu perlu menggunakan tombol Repack, untuk mengupdate Atlas.

Untuk mengatur Sprite Packer, kamu bisa pilih dari menu Edit > Project Settings > Editor; di sini kamu bisa menonaktifkan Atlas, mengaktifkannya saat game di build, atau selalu menyala.

Untuk informasi lebih lanjut tentang Sprite Packer, kamu bisa melihat panduan resmi.

Sprite Packer - Unity

Texture Packer

Texture Packer adalah perangkat independen yang digunakan untuk mengelola Atlas.

Kamu bisa menambahkan satu atau lebih folder dari proyek dan Texture Packer akan membuat Atlasnya.

Setelah itu, kamu bisa memilih format data untuk diekspor. Seperti yang kamu lihat, ada juga opsi "JSON for Unity". Ini artinya kamu bisa mengekspor Atlas untuk proyek Unitymu. Tapi untuk menggunakannya bersama, kamu harus menginstall ekstensi editor gratis dari asset store.

Untuk informasi lebih lanjut tentang Texture Packer, kamu bisa lihat panduan resminya.

Texture Packer - Mac version

Kenapa penting untuk menggunakan Texture Atlas?

Tapi kenapa penting untuk mengumpulkan banyak gambar menjadi satu gambar besar?

Kita kembali ke proses rendering: jika semua elemen UI memiliki tekstur yang berbeda, mereka akan digambar dengan "draw call" yang berbeda. Ini berarti jika dalam UI kita memiliki banyak icon hati (energi pemain) dan icon koin yang dikumpulkan, kita memiliki dua draw call.

Setiap draw call memakan waktu untuk selesai, membuat proses rendering makin lama dan lama. Jika ada lima elemen UI, draw call menjadi lima, bukan dua seperti contoh di atas.

Apakah kamu bisa melihat tujuannya?

Semakin banyak draw call -> butuh waktu semakin banyak dalam tahap rendering -> lebih kecil fps -> game akan berjalan dengan frame rate rendah (atau dengan frame drop) atau lebih sedikit elemen di layar (dengan kualitas buruk).

Menghabiskan draw cal seperti ini, kecuali ada alasan khusus, tidak masuk akal, terutama untuk UI.

Faktanya, semua takstur dalam Atlas akan dirender berama, dalam satu kali proses.

In Unity you can check your draw calls by the Stats button in Play Mode

Kesimpulan

Kesimpulannya, terutama jika kamu mengembangkan game pada platform di mana performa game sangat penting (misalnya mobile platform):

  • Kamu perlu memperhatikan jumlah draw call: semakin banyak draw call artinya semakin lama waktu rendering (dan beresiko membuat frame rate rendah).
  • Umumnya, setiap objek dengan tekstur yang berbeda bisa menghasilkan satu draw call (secara umum, walau ada beberapa pengecualian, terutama pada objek 3D).
  • Satu cara untuk mengurangi draw call adalah dengan menggunan Texture Atlas.
  • Sebuah Texture Atlas pada dasarnya adalah tekstur besar yang mengelompokkan beberapa tekstur berbeda.
  • Semua objek yang menggunakan Texture Atlas yang sama menghasilkan satu draw call.
  • Terutama untuk tekstur UIm penggunaan Texture Atlas adalah wajib untuk meningkatkan performa proyek.

Dan, semoga kekuatan bersamamu. Dan kodemu. Selalu.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.