Seorang pemrogram game adalah orang yang mengambil visi seorang desainer dan membuatnya benar-benar bekerja dalam mesin game yang kami gunakan. Saya bekerja di tim pemrograman game mobile di Kwalee, jadi bagi kami terutama menggunakan Unity. Misalnya, jika desainer ingin dadu berguling dengan cara tertentu, saya akan menulis skrip untuk menangani logikanya. Kami juga berkolaborasi dengan seniman game untuk memastikan game kami tidak hanya tampak hebat tetapi juga mencapai kinerja yang baik di perangkat.
Dalam blog ini, saya akan menggunakan pengalaman lima tahun bekerja di Kwalee untuk berbagi wawasan penting dan saran tentang menjadi seorang pemrogram game. Saya akan memandu Anda melalui beberapa bahasa, alat, dan prinsip yang kami gunakan, saran karier saya, serta tip pemula dan lanjut.
Apa Yang Dilakukan Seorang Pemrogram Game?
Kami menulis kode dan membantu game menjadi kenyataan. Sementara desainer game menciptakan konsep dan seniman game menciptakan asset, seorang pemrogram akan menciptakan pengalaman yang fungsional dan dapat dimainkan. Kami membuat dan mengoptimalkan kinerja game serta memecahkan masalah yang teridentifikasi.
Kami memastikan bahwa game terasa hebat dan berjalan dengan kinerja yang tinggi. Untuk melakukan ini, kami harus memastikan bahwa kode itu sendiri bersih dan dapat diperluas, yang ternyata lebih sulit daripada yang Anda pikirkan. Kami menggunakan standar pengkodean untuk mempertahankan kualitas yang konsisten di semua tim kami - sebuah dokumen yang mungkin berisi standar penamaan, pemformatan, dll. Namun, terkadang hal-hal tidak selalu mudah dan sesekali Anda mungkin perlu berpikir di luar kotak untuk menyelesaikan pekerjaan tepat waktu.
Tanggung jawab kami juga mencakup memastikan bahwa game berjalan baik pada perangkat keras pengguna akhir. Misalnya, dalam game mobile kami, kami perlu menghindari perangkat lama menjadi terlalu panas, jadi kami bekerja dengan seniman untuk mengoptimalkan jumlah draw call. Draw call adalah perintah yang dikirim dari CPU ke GPU untuk merender sebuah objek di layar - ini memerintahkan GPU untuk menggambar elemen grafis seperti tekstur, mesh, atau shader. Kami perlu meminimalkan jumlah draw call ini dalam game kami karena terlalu banyak dapat menyebabkan masalah seperti penurunan frame rate atau stuttering. Ada banyak cara untuk menyelesaikan ini, tetapi hal-hal seperti melakukan batching pada beberapa objek menjadi satu draw call atau mengurangi jumlah tekstur dan material unik bisa sangat membantu. Ini sangat penting untuk mobile, karena ada begitu banyak perangkat berbeda di pasar, semuanya dengan spesifikasi teknis yang bervariasi.
Apa Bahasa Pemrograman Game Utama?
Sebagian besar waktu kami sehari-hari sebagai pemrogram game dihabiskan untuk scripting dalam salah satu dari berbagai bahasa pemrograman - kami adalah pengembang perangkat lunak dari jenis yang berbeda. Ada banyak bahasa untuk dipilih. Beberapa tampak lebih mudah daripada yang lain, tetapi begitu Anda telah mempelajari dan menguasai satu, Anda pasti dapat belajar yang lain - tantangan utamanya adalah mendapatkan akses masuk.
Berikut adalah pengantar beberapa bahasa pemrograman game yang paling populer:
- C# - bahasa pemrograman serbaguna dan populer yang digunakan secara luas dalam pengembangan game. Ini salah satu yang termudah untuk dikuasai jika Anda seorang pemula. Salah satu fitur terbaiknya adalah pengumpulan sampah otomatis - jadi ini mengelola alokasi memori untuk Anda - sangat berguna untuk pemrogram yang sibuk seperti kami.
- C++ - sebagai perbandingan, ini adalah bahasa yang tidak terkelola, jadi Anda harus mengalokasikan dan mendekalokasi memori secara manual, yang menjadikannya langkah yang lebih besar dalam hal kompleksitas dan kesulitan. Namun, ini memungkinkan kecepatan, kontrol, dan kinerja yang lebih besar.
- Java - seperti C#, Java memiliki manajemen memori dan pengumpulan sampah sendiri, membuatnya lebih mudah bagi pengembang untuk menangani memori tanpa terlalu terjebak dalam detail. Ini banyak digunakan dalam pengembangan web dan aplikasi perusahaan, dan meskipun mungkin bukan pilihan utama untuk pengembangan game, ini tetap menjadi pilihan yang solid untuk membuat aplikasi yang skalabel dan efisien.
- Swift - ini adalah bahasa asli Apple untuk membangun aplikasi dan game untuk iOS dan macOS. Namun, ini berarti kurang berguna untuk pengembangan lintas platform - karena kami bertujuan untuk selalu menerbitkan game mobile kami di Android dan iOS.
Bagaimana Cara Menjadi Pemrogram Game?
Ada berbagai cara untuk menjadi pemrogram game. Rute saya cukup konvensional - saya belajar Desain dan Pemrograman Game di University of Staffordshire. Awalnya, saya pikir saya akan memasuki seni game - saya selalu sangat tertarik pada seni sewaktu kecil, ditambah lagi saya sangat menikmati modul seni di universitas, tetapi saat di sana saya menemukan bahwa saya sangat menikmati menciptakan gameplay. Bisa memakan waktu beberapa hari bagi saya untuk membuat model high poly tunggal, tetapi saya bisa membuat bebek terbang dan meledak dalam separuh waktu. Prototyping memungkinkan saya melihat hasilnya dengan cepat tepat di depan saya.
Namun, keindahan dari pemrograman games adalah dapat diakses oleh kebanyakan orang meskipun Anda tidak melalui jalur tradisional. Saya memiliki teman di universitas yang berusia 50+ - tidak pernah terlalu terlambat untuk mengalami sesuatu yang baru. Di Kwalee, kami bahkan telah mempekerjakan seseorang yang belajar terutama melalui video YouTube dan membuat permainan untuk bersenang-senang. Ada banyak peluang bagi talenta baru dan antusias hari ini. Melihat portofolio dari mahasiswa baru, mereka memiliki begitu banyak hal yang lebih pada. Kami melihat bakat fantastis muncul dan ini adalah waktu yang menyenangkan dalam industri ini.
Pertanyaan yang mungkin ingin Anda tanyakan - apakah AI akan mempengaruhi pemrograman sebagai karier? Ini bisa sangat berguna, dan semakin baik. Sempurna jika Anda membutuhkan sesuatu dijelaskan atau Anda terjebak dalam suatu masalah. Anda bisa menggunakannya untuk memecahkan bug, atau merombak (membersihkan') kode Anda dengan menempelkannya dalam ChatGPT terbaru. Namun, ketika kami melihat portofolio, kami ingin melihat pekerjaan yang telah Anda lakukan dan banggakan, AI baik digunakan, tetapi cobalah untuk tidak menggunakannya sebagai pengganti keterampilan Anda sendiri.
Bagaimana Rutinitas Harian Seorang Pemrogram Game?
Izinkan saya memberikan contoh berdasarkan kehidupan saya. Saya adalah Lead Programmer (Saya menyebutnya pekerjaan impian saya) jadi ini adalah kombinasi hebat antara hands-on dan mengelola pemrogram lainnya!
Hari yang khas dalam dunia saya adalah masuk, mendapatkan latte, kemudian memeriksa ulang bug atau blocker untuk tim QA. Memeriksa dengan tim untuk melihat apakah ada yang perlu saya lakukan untuk membuka blokir pekerjaan mereka. Lalu musik dimainkan dan daftar tugas ditampilkan. Kami berbagi video kemajuan melalui Slack untuk mendapatkan umpan balik cepat, sambil juga bolak-balik antara 2-3 proyek untuk mendukung anggota tim saya. Kami juga menghabiskan banyak waktu untuk berinvestasi dalam sistem bersama agar pemrograman kami lebih efisien - semuanya perlu dipelihara, diperbarui, dan diperbaiki secara berkala agar semua berjalan lancar.
Tips Pemrograman Game Bagi Pemula
Jika Anda memulai dan bercita-cita menjadi pemrogram sejati, berikut adalah tip pemula saya!
- Ada begitu banyak yang bisa dipelajari secara online, di YouTube dan ada begitu banyak contoh permainan yang Anda tidak memiliki alasan untuk tidak belajar! Mesin-mesin populer gratis dan menyenangkan untuk digunakan!
- Di ujung spektrum yang berlawanan, mungkin sudah 30 tahun, tetapi Anda harus mencoba membaca buku berpengaruh "Design Patterns: Elements of Reusable Object-Oriented Software" oleh penulis Gang of Four, yang memperkenalkan beberapa fondasi pola permainan yang kita gunakan sehari-hari dalam pemrograman.
- Anda mungkin memiliki gagasan Anda sendiri, tetapi pastikan Anda memulai sederhana sehingga Anda menguasai dasar-dasarnya.
- Ketika Anda tidak terikat pada proyek komersial, Anda dapat menulis kode sebanyak yang Anda suka, jadi bersenang-senanglah menciptakan hal-hal gila.
- Membangun portofolio sangat penting (dan begitulah cara saya mendapatkan pekerjaan saya). Tetapi berhati-hatilah untuk tidak hanya mengunggah karya universitas yang standar saja, karena kami akan melihat banyak aplikasi seperti itu. Bahkan dengan menghabiskan satu hari ekstra untuk mengganti kulit dan menambahkan lebih banyak fitur akan membantu Anda menonjol.
- Membuat game dunia nyata Anda sendiri juga ide cerdas - sangat murah untuk mengeluarkan game di Google Play, jadi buatlah sesuatu yang dapat Anda tunjukkan kepada perekrut/penerbit/keluarga/hewan peliharaan di ponsel Anda. Anda mungkin bahkan menghasilkan beberapa ribu dolar setahun sampai Anda ditempatkan dengan pekerjaan penuh waktu eksklusif, itu adalah bonus! Atau mungkin terinspirasi membuat game Anda sendiri dan bekerja sama dengan penerbit.
- Jangan hanya belajar tentang pemrograman - pelajari tentang seni, desain, QA, dan disiplin lainnya yang akan Anda temui. Misalnya, melihat metode QA berguna karena Anda dapat terjebak dalam perangkap menganggap sesuatu bekerja, tetapi Anda perlu memainkannya sebagai pengguna, bukan sebagai orang yang menulis kode yang memiliki pandangan tetap tentang bagaimana seharusnya dimainkan'. Jadilah destruktif, cobalah hal-hal acak yang mungkin dilakukan orang, menekan tombol acak dan perilaku aneh lainnya.
Tips Pemrogram Lebih Lanjut
Berikut beberapa tips yang membantu saya dari junior, menjadi pemrogram, menjadi senior hingga pimpinan.
- Anda selalu dapat manfaat dari belajar lebih banyak, dan ingat bahwa tanpa kesalahan kita tidak dapat belajar!
- Jika Anda sangat menyukai sesuatu - Anda bisa menjadi lebih spesialisasi. Misalnya, jika Anda suka bermain dengan shader dan render pipelines, pelajari lebih lanjut cara menggunakan shader grafis untuk memperluas kemampuan Anda untuk membuat efek visual yang kompleks dan menggunakan render pipelines untuk mengoptimalkan kinerja atau membuat beberapa efek yang menakjubkan.
- Anda bisa membuat sesuatu yang sangat keren, seperti sistem yang kompleks, mengunggahnya ke toko asset untuk memamerkannya jika kontrak Anda mengizinkan dan menunjukkan karya Anda yang lebih lanjut. Anda bisa mengembangkan niche sebagai tipe pemrogram tertentu, seperti pemrogram gameplay, pemrogram server, pemrogram grafis, atau pemrogram multiplayer.
- Alternatifnya, Anda bisa menempuh jalur manajemen seperti saya, dan mendidik orang lain. Taktik saya untuk memajukan karier saya adalah dengan menyerap tanggung jawab baru. Pertama, saya mulai meningkatkan hal-hal kecil, yaitu perubahan alur kerja kecil. Kemudian saya membuat proses lebih mudah dengan menggunakan templat untuk menghemat waktu saat membuat proyek baru. Kemudian saya mendapatkan rasa untuk mentorship dan manajemen, yang membantu saya mendapatkan lebih banyak kepercayaan diri dan sekarang ikut serta dalam peninjauan sejawat, ulasan kode, mengadakan lokakarya dan memimpin tim dalam proyek.
Apakah Anda bekerja sebagai bagian dari tim atau sebagai manajer, sama pentingnya untuk memberikan pujian seperti memberikan kritik yang membangun. Saat meninjau kode, bagus untuk menyemangati orang lain!
Apa Prinsip Utama Pemrograman Game?
Ada beberapa topik utama yang harus dimasukkan ke dalam blog yang membahas pemrograman game. Ini adalah beberapa hal terpenting yang kami pertimbangkan.
Kontrol Sumber/Kontrol Versi
Seperti halnya Anda memiliki titik simpan dalam game, ada titik simpan dalam pengembangan proyek. Mereka bertindak sebagai penyimpanan umum untuk proyek dan berarti bahwa tiga atau empat pemrogram dapat bekerja pada sistem secara bersamaan, membuat perubahan dan mengirimkannya ke server. Ini memungkinkan kami melacak perubahan tersebut dan dengan mudah membatalkan jika ada yang rusak. Jika dua pengembang bekerja pada file yang sama, file itu akan menjadi bagian dari merger, jika ada konflik, kami dapat menyelesaikannya secara manual atau memilih perubahan individu untuk diterapkan. Ini sering terjadi saat menggunakan Prefab atau Scena dalam Unity.
Istilah-istilah ini kadang-kadang tumpang tindih, tetapi umumnya, kontrol sumber berfokus pada kode dan kontrol versi mencakup semua file proyek, asset, dan dokumentasi.
Saat pertama kali mulai menggunakan Kontrol Sumber, ini bisa terasa sedikit menakutkan untuk memulai, ini bisa tampak sangat membingungkan dan ketika datang ke konflik, Anda mungkin menemukan diri Anda tidak tahu apa yang harus dilakukan. Namun sifat dari kontrol versi membantu Anda menyimpan momen dalam waktu, jadi jika Anda sering memperbarui dan menggunakan pesan commit yang detail, ini sangat berguna dan aman. Anda dapat membalikkan ke banyak titik, memiliki banyak cabang, dll. Pikirkan ini sebagai jaring pengaman pengembang, jadi kami dapat menghindari cerita Pixar's Toy Story 2 - dihapus secara tidak sengaja dan kemudian dipulihkan dari hard drive di rumah Direktur Teknik mereka, melainkan semuanya aman di server.
Pemrograman Berbasis Objek
Ini adalah jenis pemrograman yang terutama kami gunakan di Kwalee. Ini menggunakan objek untuk mewakili hal-hal nyata, atau konsep abstrak, dan bertujuan untuk mengatur basis kode menggunakan prinsip-prinsip yang mencerminkan bagaimana kita melihat dan berinteraksi dengan objek dalam dunia nyata. Ini membantu mempertahankan sistem kompleks dengan mengatur kode menjadi kelas-kelas yang dapat digunakan kembali, diskalakan, dan dipelihara lebih mudah.
Tentu saja, ada perdebatan tentang apakah ini baik atau tidak. Meskipun ini bukan yang berkinerja tertinggi, ini bekerja dengan baik. Seperti halnya bahasa, masing-masing memiliki pro dan kontra sendiri dan Anda harus mempelajari satu untuk memulai dan memahami cara kerja bahasa dan compiler (penerjemah kode manusia menjadi kode mesin). Anda juga dapat mempertimbangkan jenis lain, seperti pemrograman fungsional yang memperlakukannya lebih seperti matematika, pemrograman logika yang menggunakan fakta dan aturan, atau pemrograman prosedural yang menggunakan data langkah-langkah.
Pola Pemrograman
Ini adalah hal yang sangat berguna - solusi yang dapat digunakan kembali yang dapat membantu dengan masalah umum yang akan Anda hadapi dalam desain perangkat lunak Anda. Mereka memberi Anda template untuk memperbaiki masalah, jadi Anda tidak harus menemukan cara baru setiap kali dan dapat mengikuti solusi yang sudah terbukti.
Misalnya, pola desain Singleton membantu Anda memastikan hanya ada satu instance dari suatu kelas seperti manajer pengaturan game sepanjang permainan- dan memberi Anda titik akses global kepadanya. Kode untuk pola ini berarti hanya ada satu instance dari kelas SettingsManager sehingga Anda tidak perlu membuat ulang atau menduplikatnya setiap kali Anda membutuhkannya.
Ada juga Pola Pabrik yang dapat membantu Anda membuat objek dengan cara yang lebih terorganisir dan fleksibel. Anda dapat mendefinisikan metode untuk menghasilkan jenis objek tertentu, seperti karakter atau item, berdasarkan parameter input, memungkinkan Anda dengan mudah membuat lebih banyak objek dari jenis serupa tanpa harus memulainya dari awal setiap kali.
Saya harap blog ini telah memberi Anda gambaran tentang pemrograman game, apakah Anda baru dalam bidang ini atau pemrogram berpengalaman! Jika Anda orang yang bekerja keras tetapi menyenangkan, Anda akan cocok dengan tim kami jadi cari tahu lebih lanjut tentang karier di Kwalee. Selain itu, Anda bisa belajar tentang game mobile kami atau publikasi dan mengenal lebih jauh apa yang kami rilis sebagai pengembang dan penerbit.








