Gamasutra: Blog Svyatoslav Cherkasov – Porting Graveyard Keeper ke konsol dan ponsel

Posting blog berikut, kecuali disebutkan, ditulis oleh anggota komunitas Gamasutra.
Pikiran dan pendapat Gamasutra atau perusahaan induknya.

Dalam artikel ini, saya ingin berbicara tentang pengalaman kami dalam porting game kami "Graveyard Keeper" ke ponsel dan konsol.

Beberapa informasi dasar: Graveyard Keeper dikembangkan oleh tim kami (Lazy Bear Games) di Unity dan kemudian dipindahkan ke XBox One / PS4 / Nintendo Switch oleh penerbit kami, tinyBuild. Port seluler (iOS dan Android) dibuat sendiri oleh kami. Juga, beberapa bulan setelah rilis game awal, kami membuat DLC "Breaking Dead" yang juga diangkut ke semua platform. Game ini terus-menerus diperbaiki dan ditingkatkan.

Seperti yang Anda lihat, pengaturan dengan dua tim dev tidak mudah. Padukan dengan proyek dalam fase pengembangan dinamis yang perlu dioptimalkan secara mendalam untuk platform dan Anda akan mendapatkan proses yang cukup menantang.

Saatnya mendapatkan teknis.

Melihat permainan Anda mungkin berpikir itu adalah permainan sederhana untuk port, karena itu adalah 2D dengan seni pixel. Dan jika konsol cukup kuat untuk memproses 4K / 60fps, piksel grafis 2D tidak akan menjadi masalah. Secara teori, itu benar. Tapi secara praktis kami menggunakan banyak solusi kompleks dan sama sekali tidak dioptimalkan untuk ponsel.

Pikirkan kecepatan HDD.

Anda mungkin pernah mendengar bahwa arsitektur konsol gen saat ini sangat mirip dengan PC. Itu benar, tetapi secara teknis perangkat kerasnya berbeda dari PC. Pertama-tama, Xbox One dan PS4 menggunakan hard drive sementara kebanyakan PC modern menggunakan SSD atau drive hybrid. Jadi, Anda harus mengingat waktu pemuatan.

Bayangkan betapa terkejutnya kami, ketika bangunan pertama dimuat selama hampir 5 menit.

Jadi, kita harus memikirkan seluruh sistem pemuatan dan penyimpanan aset. Misalnya, kami mulai menyimpan bukan seluruh objek game di TKP, tetapi hanya informasi tentangnya dalam objek sederhana (palsu). Dan setelah memuat selesai kami mulai mengganti benda-benda palsu ini dengan yang asli dengan cepat.

Pikirkan multi-core.

Juga, dalam pengalaman kami, menulis untuk konsol mengharuskan menggunakan semua core CPU secara maksimal agar kode tersebut dapat bekerja secara paralel. Secara default, game Unity sangat bergantung pada kinerja inti tunggal. Dan menjalankan game "SEBAGAIMANA ADANYA" bisa menjadi hambatan kinerja yang sangat sensitif ketika semua core lainnya menganggur sementara satu-satunya core sedang di-load.

Kita harus pindah ke utas berbeda yang berjalan secara paralel untuk membebaskan sebanyak mungkin kekuatan inti – # 1. Pada dasarnya, itu hal yang baik untuk diingat jika Anda tidak berencana menjadi konsol dan itu akan memberi Anda kinerja yang lebih baik.

Jadi, lain kali kita akan merencanakan semua yang bisa kita jalankan di utas / pekerjaan terpisah. Untungnya, Unity telah banyak meningkatkan multi-threading selama tahun lalu menerapkan sistem kerja dan ECS.

Pikirkan optimasi grafis (bahkan untuk game 2D!).

Masalah berat lainnya bagi kami adalah grafik. Kami tidak memiliki pengalaman sebelumnya mengoptimalkan apa pun untuk konsol atau ponsel. Karena itu kami OKI untuk membuat pohon gabungan dari 20 sprite terpisah hanya membuatnya lebih mudah untuk dirancang. Tidak perlu sejumlah pohon tunggal dalam permainan itu sendiri.

Tentu saja, kita perlu mengurangi jumlah layer. Anda dapat melihat jumlah geometri awal pada adegan di sini:

Gambar paling kanan menunjukkan "jumlah penarikan berlebih". Itu berarti setiap kali satu sprite digambar di atas sprite lain, warna pada gambar itu menjadi lebih cerah. Jadi, Anda dapat melihat bahwa meskipun kesederhanaan tampilannya, sebenarnya ada banyak poligon yang saling menempel.

Selain itu, semua sprite permainan dinyalakan oleh peta normal, tetapi menghitung kedalaman 3D pseudo dari gambar.

Kami harus menggunakan berbagai versi pengoptimalan visual untuk platform yang berbeda. Sebagai contoh, kami telah sepenuhnya mengubah pencahayaan shader dan perilaku mereka untuk ponsel.

Pikirkan masalah spesifik platform.

Juga, ada banyak pekerjaan platform-spesifik (terutama untuk konsol). Misalnya, Anda tidak perlu mendukung gamepad, tetapi Anda harus memiliki situasi yang berbeda seperti ketika pengguna memainkan game, gamepad dimatikan, pengguna menghubungkan controller lain dan login di profil yang berbeda. Dan itu ada di tengah-tengah permainan. Ada berbagai kasus yang perlu ditangani oleh gim Anda.

Masalah lain yang harus Anda pikirkan adalah sistem tabungan. Game Anda harus bekerja dengan rutinitas penyimpanan yang tidak sinkron dan menangani segala kerusakan file yang mungkin terjadi.

Tambalan dan DLC.

Sedangkan untuk tim porting eksternal dan semua konten baru, perbaikan dan tambalan menjadi tugas yang sulit. Anda perlu merencanakan segalanya di depan. Anda tidak bisa hanya memberitahu orang-orang untuk mendorong perbaikan terakhir Anda ke Xbox jika mereka membuat port switch dan semua orang sibuk dengan itu.

Kami adalah tim kecil yang suka mengembangkan game dengan hasrat tinggi, yang tidak berjalan baik dengan perencanaan ke depan. Itulah alasan kami dapat dengan mudah memindahkan DLC "Breaking Dead" yang pertama ke Xbox. Kami tidak merencanakannya dengan baik. Suatu hari kami baru saja bangun dan memutuskan untuk membuatnya di DLC pertama. Tetapi orang-orang di LittleBuild sangat sibuk mengoptimalkan dan memindahkan game ke Nintendo Switch. Mereka tidak dapat menghentikan proses itu dan mulai melakukan port DLC ini segera. Mereka harus menyelesaikan port mereka terlebih dahulu.

Itu adalah kelemahan dari ide untuk membuat rilis simultan di PC dan Xbox. Idealnya kita harus merilis PC build, memperbaiki semua bug dan menemukannya di konsol – atau menghabiskan waktu berbulan-bulan di QA yang terisolasi sebelumnya, tanpa umpan balik pemain sungguhan. Hanya setelah port selesai, mulailah membuat DLC. Tetapi kami tidak sanggup menghabiskan begitu banyak waktu untuk itu. Kita harus segera melakukan semuanya.

Itulah alasan kami tidak dapat merilis DLC Breaking Dead pertama secara gratis di platform lain (seperti di PC). Ketika Anda mengembangkan banyak platform, biaya dan jadwal meningkat cukup cepat. Bahkan porting dan melepaskan patch sudah banyak sumber daya.

Melepaskan judul, DLC, dan pembaruan selalu membutuhkan persyaratan kepatuhan platform yang lewat, yang berarti sertifikasi oleh pemegang platform. Gim ini lebih rumit, Anda harus mengungguli. Ini berarti bahwa Anda perlu menguji konten Anda terhadap persyaratan ini sebelum mengirimkannya. Anda mungkin menemukan daftar besar masalah untuk diperbaiki dan mungkin tidak lulus (mungkin Anda baru saja menang) dalam pengiriman pertama. Pengajuan tambahan juga dapat menyebabkan biaya tambahan. Tetapi hal yang paling berisiko tentang tidak lulus adalah menunda tanggal rilis yang diumumkan.

Ini sangat sulit dengan siklus iterasi cepat yang kami miliki di PC. Tidak mungkin untuk menggabungkan konten real-time ke konsol build, seperti yang ditunjukkan pada diagram di awal artikel. Memiliki sumber daya in-house perlu dilakukan setidaknya satu programmer dan tim QA yang mahir yang dapat diuji sebelum ditemukan oleh tim sertifikasi di sisi pemegang platform. Itu membutuhkan seluruh struktur porting di dalam studio. Dan ini bukan hanya sumber daya, tetapi pengetahuan dan keterampilan khusus yang terlibat di dalamnya.

Singkatnya, sangat mudah untuk merilis DLC di PC dan tetap mengulanginya di waktu nyata, sementara meluncurkan konten yang sama di konsol menambah banyak biaya overhead dan kerumitan pada seluruh proses.

Sviatoslav Cherkasov
programmer terkemuka
di Lazy Bear Games

Leave a Comment