Saat bermain game, pernahkah kita membayangkan bagaimana sebuah game dibuat? Atau, mungkin kalian sering bermain game dan berpikir, "Bagaimana cara menciptakan game seperti ini?" Jawabanya adalah, dunia Game Development atau pengembangan game. Game development, adalah proses menciptakan sebuah game dari awal hingga menjadi sebuah permainan yang bisa kita mainkan. Yang menarik, saat ini siapa saja sudah bisa membuat game, atau biasa disebut Developer Indie.
Developer Indie adalah seseorang yang mengembangkan game secara mandiri atau menjadi bagian dari tim pengembangan kecil yang memproduksi game untuk PC dan platform mobile tanpa dukungan finansial dari perusahaan besar. Kata “Indie” adalah sebuah singkatan dari kata Independent, yang artinya bebas, mandiri, berdaulat, dan otonom, atau tidak tunduk pada aturan, dan kendali pihak lain. Salah satu contohnya adalah Kajew Developer. Developer game sekaligus youtuber yang membuat game Aku si peternak lele, Aku si peternak dinosaurus, dan masih banyak lagi.
Membahas tentang game development, tentunya kita harus tahu dulu apa itu Game Engine. Game Engine, atau Mesin pembuat game, adalah software yang menyediakan alat dan lingkungan untuk merancang, mengembangkan, dan memproduksi game. Game engine menyediakan pembuatan game dengan menyediakan komponen-komponen inti seperti rendering grafik, fisika, skrip, kecerdasan buatan, input, dan banyak lagi, sehingga kita tidak perlu memulai dari nol untuk setiap elemen game yang kita buat.
Beberapa fungsi utama game engine adalah:
· Rendering Grafik: Mengubah data 2D atau 3D menjadi tampilan visual di layar.
· Fisika: Simulasi hukum fisika, seperti gravitasi dan benturan objek.
· Sistem Input: Mengelola masukan dari pemain, baik melalui keyboard, mouse, kontroler, atau bahkan dengan touch screen.
· Audio: Memutar efek suara, musik latar, dan suara ambient.
· Skrip: Memungkinkan pengembang untuk menulis logika game menggunakan bahasa pemrograman tertentu (misalnya C#, C++, JavaScript).
· Kecerdasan Buatan: Memberikan kemampuan kepada karakter atau objek di dalam game untuk bertindak secara otomatis.
· Manajemen Animasi: Mengatur gerakan animasi untuk karakter atau objek.
· Pengelolaan Memori dan Kinerja: Mengoptimalkan penggunaan sumber daya komputer agar game berjalan lancar.
Contoh populer dari game engine yang paling sering digunakan adalah Unity, Unreal Engine, dan Godot. Selain itu, masih ada banyak sekali game engine yang bisa gunakan, seperti CryEngine, RPGMaker, dll. Namun yang populer adalah ketiga game engine diatas. Contoh game populer yang dibuat dengan Unity adalah, Genshin Impact, Pokemon Unite, Fall Guys, Among Us, dan masih banyak lagi. Sedangkan, contoh game populer yang dibuat dengan Unreal Engine adalah Cyberpunk 2077, Fornite, Black Myth: Wukong, Tomb Raider, dan masih banyak lagi. Dan yang terakhir, game yang dibuat dengan Godot adalah, Rings of Saturn, Primal Light, dan Dome Keeper.
Game yang dibuat menggunakan Unity Engine, kebanyakan bergaya kartun 2D ataupun 3D. Tetapi, tetap ada yang bergaya realistis, namun kualitasnya jauh dibandingkan Unreal. Untuk Unreal, hampir semua game yang dibuat dengan Unreal Engine adalah game 3D dengan kualitas grafik yang sangat tinggi, maka dari itu game yang dibuat dengan Unreal Enggine memiliki ukuran yang sangat besar, dan juga butuh komputer dengan spesifikassi tinggi untuk memainkannya. Untuk Godot, yang aku ketahui, kebanyakan adalah game-game bergaya Pixel Art, baik 2D, ataupun 3D.
Setelah mengetahui tentang Game Engine, dalam Game Engine tak lepas dari kata Code Editor. Code Editor adalah, software atau aplikasi yang dirancang khusus untuk menulis, mengedit, dan mengelola kode pemrograman. Code editor biasanya menyediakan fitur-fitur seperti penyorotan syntax, penyelesaian kode otomatis, pemeriksa kesalahan, dan menjalankan atau menguji kode secara langsung. Contoh Code Editor adalah, Microsoft Visual Studio Code, Visual Studio Code atau VS Code, atom, dan lain-lain.
Jika kode editor adalah software untuk menulis, mengedit, dan mengelola kode pemrograman, maka, ada juga bahasa pemrograman. Dalam mendevelop game, ada beberapa bahasa pemrograman yang sering digunakan. Yaitu C++, C# (C Sharp), Java, Python, dan Java Script. C++ biasa digunakan dalam Unreal, sedangkan C#, digunakan dalam Unity.
Game Engine dan Code editor sudah aku bahas diatas, maka tahap selanjutnya adalah mulai membuat asset untuk game kita. Tetapi sebelum itu, aku akan menceritakan proses membuat game mulai dari awal.
A. Memilih Game Engine.
Tadi, aku menyebutkan bahwa Unity, Unreal Enggine, dan Godot sebagai Game Engine yang populer dan sering digunakan. Lalu, manakah yang aku pilih? Jawabanya adalah Unity. Mengapa memilih Unity sebagai Game Engine? Karena, komputerku saat ini masih dalam kateggori MidRange, atau masih kurang powerfull untuk menjalankan Unreal.
Jika diibaratkan, untuk menjalankan Unity saja, diperlukan komputer yang sanggup bermain GTA 5 dengan lancar. Sedangkan Unreal, dibutuhkan komputer yang sanggup bermain RDR2 TANPA LAG. Untuk bermain Asphalt 8, dengan setingan rata tengah dan merekam layar resolusi Full HD 30 fps saja sudah terasa lag, apalagi bermain GTA 5 dengan lancar. maka dari itu, aku memilih Unity.
Untuk Godot, saat akan memilih Game Engine, aku masih belum mengenal Game Engine Bernama Godot, lalu dipertengahan membuat game, barulah aku mengenal Godot, saat melihat orang-orang di youtube membandingkan Unreal, Unity, dan Godot. Hasilnya adalah Unreal lebih baik dari Unity, dan Unity lebih baik daripada Godot.
Disisi lain, karena saat aku bermain game mobile, di game apapun, pasti ketika pertama kali memulai game muncul logo Unity, lalu disusul teks “Made with Unity Engine”. Yang menandakan bahwa unity adalah software yang paling banyak digunakan oleh Developer Game. Oleh karena itulah aku memilih Unity. Unity dapat dijalankan secara gratis, dengan mendownloadnya melalui webssite resmi Unity.
B. Memilih dan membuat asset.
Ketika membuat game, selain membutuhkan komputer yang sudah terinstall software yang dibutuhkan, kita juga perlu menyiapkan asset untuk game kita. Cara mendapatkan asset ada banyak, untuk game 2D bisa dengan membuat asset kita sendiri di Photoshop, Corel Draw, Illustrator, dan lain-lain. Sedangkan untuk game 3D, kita bisa membuat model 3D di Blender, Skechup, dll. Akan tetapi, karena masih belajar, aku sarankan lebih baik mencari assset di internet, baru ketika sudah tidak menemukan asset yang kita inginkan, kita membuat sendiri. Pastikan mencari asset yang bebas lisensi, agar game yang kita buat, bisa kita publikasi.
C. Menyusun dan Mengatur Platform, Player, level Game.
1. Menyusun Platform.
Ketika menyusun Platform game, yang pertama kali aku lakukan adalah mengimpor semua asset ke dalam folder asset di Unity. Setelah itu, aku membuat tile pallet, lalu mengatur ukuran setiap potongan asset menjadi 128 px. Setelah itu, buat objek kosong atau empty object, beri nama ground image. atur menjadi Set Origin, Jadikan ground image barusan sebagai parent, lalu tambahkan tilemap menjadi children dari empty object. Jika sudah, gunakan tool kuas, pilih assetnya, lalu gambar sesuai keinginan pada kotak yang telah disediakan.
Jika desain map game sudah selesai, buat empty object, beri nama Ground, masukkan objek apapun kedalamnya, atur ketebalannya menjadi sampai tidak terlihat, tambahkan material box colider 2D pada objek baru tersebut. Jika sudah, susun objek ground menjadi diatas ground image, lalu atur menjadi layer 5. Tujuan menambahkan box colider adalah agar player tidak jatuh saat menginjak Ground Image. Lakukan ke semua Ground Image, dengan menduplikat Groud, lalu atur posisinya. Jika sudah, seleksi semua objek Ground, buat tag baru, beri nama tag baru tersebut menjadi tag ground. Jika sudah, berikan tag ground ke semua objek Ground.
2. Menambahkan Air.
Buat empty object, beri nama Water. Atur empty object bernama Water menjadi set origin, lalu jadikan parent. Masukkan asset Water, ke empty object bernama Water. Berikan komponen Box Colider 2D (agar dapat mendeteksi tambarakan). Jika sudah, buat tag baru, beri nama Enemy, berikan tag tersebut pada objek Water. Step terakhir, atur posisinny pada bawah map.
3. Menambahkan Player,
Buat empty object, beri nama Player. Atur empty object bernama Player menjadi set origin, lalu jadikan parent. Masukkan asset player, ke empty object bernama Player. Berikan komponen Box Colider 2D (agar dapat mendeteksi tambarakan), dan Rigid Body 2D (agar player memiliki gravitasi). Jika sudah, buat tag baru, beri nama Player, berikan tag tersebut pada objek Player. Step terakhir, atur posisinnya pada titik start.
4. Menambahkan Rintangan.
Buat empty object, beri nama Enemy. Atur empty object bernama Enemy menjadi set origin, lalu jadikan parent. Masukkan asset rintangan, ke empty object bernama Enemy. Berikan komponen Box Colider 2D (agar dapat mendeteksi tambarakan). Jika sudah, buat tag baru, beri nama Enemy, berikan tag tersebut pada objek Enemy. Step terakhir, atur posisinnya sesuai keinginan.
5. Menambahkan Reward.
Tahapan untuk menambahkan reward sama seperti menambah Rintangan. Kita hanya perlu mengganti nama dan tag-nya saja, seperti berikut. Buat empty object, beri nama Reward. Atur empty object bernama Reward menjadi set origin, lalu jadikan parent. Masukkan asset Reward, ke empty object bernama Enemy. Berikan komponen Box Colider 2D (agar dapat mendeteksi tambarakan). Jika sudah, buat tag baru, beri nama Reward, berikan tag tersebut pada objek Reward. Step terakhir, atur posisinnya sesuai keinginan.
6. Menambahkan Garis Finish.
Buat empty object, beri nama Finish Line. Atur empty object bernama Finish Line menjadi set origin, lalu jadikan parent. Masukkan asset Finish Line, ke empty object bernama Finish Line. Berikan komponen Box Colider 2D (agar dapat mendeteksi tambarakan). Jika sudah, buat tag baru, beri nama Finish Line, berikan tag tersebut pada objek Finish Line. Step terakhir, atur posisinny pada garis finish.
7. Level.
Pergi ke Scene Management, ubah nama Scene 01 menjadi Level 01. Duplikat Scene Level 01, sampai berapapun jumlah level yang diinginkan. Lalu atur ulang posisi Platform, Air, Reward, Garis finish, Rintangan.
D. Membuat Animasi.
Selesai Menyusun dan Mengatur Platform, Player, level Game, agar lebih menarik kita bisa menambahkan animasi. Caranya adalah, buka window animasi, klik new, atur lokasi penyimpanan animsi. Jika sudah, animasikan objek dengan menggunakan key frame, lalu simpan animasi tersebut.
E. Menyusun UI UX.
1. Home screen dan level.
Pergi ke Scene Management, buat Scene baru, beri nama Home Screen. Di scene Home Screen, buat kanvas, atur tombol-tombol dan tampilan Home Screen sesuai keinginan dengan UI Sprite. Ulangi hal tersebut untuk memuat scene Level. Jika sudah, jangan lupa menambahkan komponen canvas scaler (agar tidak terjadi crop saat dimainkan di tiap ukuran HP).
2. Game Over dan Finish Screen.
Untuk game over dan finish, pada scene level 01, buat kanvas, atur sesua keinginan dengan menggunakan UI sprite. Jangan lupa menambahkan komponen canvas scaler (agar tidak terjadi crop saat dimainkan di tiap ukuran HP). Jika sudah, copy canvas scene level 01, lalu paste di level-level selanjutnya.
F. Tahap pengkodean.
Untuk pengkodean, kita bisa memanfaatkan Chat-GPT.
Beberapa contoh promt seperti berikut:
1. “Berprilakulah seperti programmer C# pada unity. Buatkan saya kode, ketika terdapat objek dengan tag ‘Player’ bersentuhan dengan objek ber-tag ‘Enemy’, maka bekukan waktu, munculkan canvas Game Over, nyalakan suara Game Over, dan hapus player. Jelaskan cara mengunakan kode tersebut.”
2. “Berprilakulah seperti programmer C# pada unity. Buatkan saya kode, ketika terdapat objek dengan tag ‘Player’ bersentuhan dengan objek ber-tag ‘Finish Line’, maka bekukan waktu, munculkan canvas Finish, dan nyalakan suara Finish. Jelaskan cara menggunakan kode tersebut.”
3. “Berprilakulah seperti programmer C# pada unity. Buatkan saya kode, ketika terdapat objek dengan tag ‘Player’ bersentuhan dengan objek ber-tag ‘Reward’, maka, nyalakan suara Coin, tambahkan nilai sprite UI coin. Jelaskan cara menggunakan kode tersebut.”
4. “Berprilakulah seperti programmer C# pada unity. Buatkan saya kode, ketika tombol W ditekan, objek dengan tag ‘Player’ akan maju, dan jika saya menekan S, maka bergerak kebalikan dari menekan tombol W. Ketika saya menekan tombol Spasi, maka objek dengan tag ‘Player’ akan lompat. Ketika saya menekan A, objek dengan tag ‘Player’ akan jalan ke kiri, dan jika saya menekan tombol D, objek dengan tag ‘Player’ akan berjalan ke kanan.
Setelah membuat promt, maka Chat-GPT akan membuatkan kita kode, dan juga langkah- langkah penggunaan kode tersebut. Kita bisa meminta Chat-GPT untuk membuatkan code seperti apapun, dan serumit apapun, asalkan, promt yang kita berikan jelas.
G. Mengekspor game.
Sebelum mengekspor game, pastikan sudah tidak ada bug dalam game kiita dengan cara menjalankan pengujian game. Jika dirasa sudah tidak ada bug, maka ikuti step-step berikut.
Pertama, pergi ke build setting. Pilih platform apa game kita digunakan. Misalnya jika game tersebut untuk Android, maka pilihlah Android. jika game tersebut untuk PC, maka pilihlah PC. Jika kita diminta untuk mendownload sesuatu, maka downloadlah. Jika sudah, tekan tombol BUILD, atur lokasi penyimpanan game tersebut. Jika sudah, tekan enter. Maka game siap untuk dibagikan.
H. Mempublikasi game.
Untuk mempublikasi game, terdapat beberapa opsi. Yang paling populer adalah mengupload game ke Play Store, dan Steam.
Untuk meng-upload game atau aplikasi ke Play Store, kita perlu memiliki akun Developer. Akun Developer bisa kita dapatkan dengan cara mendaftar dengan akun google, lalu Menyetujui Perjanjian Distribusi Developer, Membayar biaya pendaftaran sebesar US$25, Memilih jenis akun developer, Memverifikasi informasi identitas developer, dan Memenuhi persyaratan pengujian dan persyaratan verifikasi perangkat (husus akun pribadi).
Sedangkan untuk mengupload game ke steam, kita perlu membuat Akun Steamworks, lalu membayar Steam Direct Fee senilai US$100 untuk setiap game yang ingin dipublikasikan (Biaya ini dapat dikembalikan jika game menghasilkan pendapatan tertentu). Membuat halaman Steam Store untuk game. Menggunakan Steamworks SDK untuk mengunggah build game. Dan menentukan tanggal rilis.
Karena game yang aku buat khusus untuk mobile, rencanaku adalah mengupload game ke Play Store. meskipun sekarang Steam juga bisa digunakan pada platform mobile, tetapi karena aplikasi untuk mendownload dan membeli game pada platform mobile yang paling terkenal adalah Playstore, maka itulah rencanaku. Namun, karena untuk membuat akun Developer perlu membayar biaya pendaftaran senilai US$25 atau sekitar 400.000,00, dan hanya bisa dibayar menggunakan kartu kredit. Akhirnya game tersebut aku publikasikan ke website ku, Yaitu di https://www.fiaidikahammadafwa.online/home/download-game.
I. Masalah.
Sudah hal yang wajar ketika melakukan sesuatu, pasti ada saja masalah yang datang. Namun, tentunya disetiap masalah akan ada jalan keluarnya sendiri. Contohnya saja dalam mengembangkan game ini. Saat melihat-lihat tutorial di youtube, lalu mempraktekkannya, pada awalnya semua berjalan lancar. Namun, ketika masuk ke tahap koding, pasti selalu muncul Console error. Padahal kode tersebut hanya sekedar kode (input WASD = (input AD, 0, input WS)) atau kode player movement. Karena setiap mengkoding dengan melihat tutorial youtube terdapat console error terus-menerus, akhirnya project ini cukup lama tidak aku sentuh.
Sekitar 1 minggu, project ini tidak tersentuh sama sekali. Lalu pada suatu hari, saat scrolling youtube, terdapat meme, programmer 1 bulan vs programmer 5 tahun. Programmer 1 bulan sangat fokus dan serius sedang mengkoding website. Sedangkan programmer 5 tahun, hanya santai, lalu meminta Chat-GPT membuatkan kode. Dari meme tersebut, akhirnya muncul ide untuk memperbaiki semua kode yang error, ke Chat-GPT. Dan saaat memasukkan kode dari Chat-GPT, ternyata kode tersebut berjaalan lancar, tanpa Console error. Akhirnya yang aku pelajari bukanlah tentang koding, akan tetapi tentang membuat promt untuk Chat-GPT.
Karena ketika meminta kode Chat-GPT aku juga meminta menjelaskan arti kodenya, akhirnya sedikit-sedikit aku mulai paham dengan bahasa C#. Terkadang, meskipun telah meminta bantuan Chat-GPT, masih saja terjadi error, dan biasanya itu terjadi karena ada step yang tertinggal, atau terdapat variabel yang tidak sesuai dengan kode yang dibuatkan oleh Chat-GPT.
Nah, penyebab mucul error saat awal-awal mengkoding adalah, dalam bahasa C#, atau dalam C family, ternyata huruf besar dan kecil itu sangat berpengaruh. Jika seharusnya ditulis huruf kecil namun ditulis huruf besar, yang terjadi adalah error, dan begitu pula sebaliknya. Waktu mengerjakan projek ini sekitar 3 minggu (belum termasuk saat berhenti selama 1 minggu).
J. Kesimpulan.
Dengan mengerjakan proyek ini, aku telah mempelajari banyak hhal. Dari pengertian dasar, hingga proses pembuatan game. Dari memilih Game Engine, hingga mempublikasikan game. Juga respon dalam menghadapi error atau bug. Dengan mengerjakan project Game Development, aku jadi mengerti, dalam setiap game yang aku mainkan, ada kreativitas dan juga kerja keras di baliknya.
Jadi, apakah kalian hanya akan bermain game terus-terusan? Cobalah membuat game kalian sendiri, maka akan ada kebanggaan tersendiri ketika memainkannya.