Game Programming

sims

The Sims merupakan game strategi yang merupakan simulasi kehidupan sehari-hari, dan merupakan salah satu game PC dengan penjualan paling laris walaupun berawal dari ide sederhana.

Saat pertama kali belajar bahasa pemrograman, mungkin Anda lebih membayangkan diri Anda di masa depan akan membuat sebuah game pesawat tempur daripada membuat sebuah aplikasi inventory! Tetapi setelah mahir dan bahkan menguasai beberapa bahasa pemrograman sekaligus, bisa jadi Anda kini berpikir: “Membuat game? Hanya buang-buang waktu saja dan nggak ada duitnya!”. Benarkah demikian?

Anggapan tersebut jelas salah, dengan maraknya game center yang menawarkan game online, adanya forum-forum, situs, bahkan majalah game terkemuka, perusahaan-perusahaan pembuat game yang saling berlomba membuat produk game paling unggul, tentulah game sangat mungkin menjadi suatu bidang bisnis penghasil uang bagi yang menekuninya.

Bermain game juga sering menjadi awal ketertarikan orang pada dunia komputer dan programming. Karakter dan nuansa game bahkan dapat mempengaruhi psikologi pemain, dan siapakah pembuat game tersebut? Programmer tentunya, tetapi dengan spesifikasi dan penekanan khusus pada pemrograman vektor, matematika, ataupun collision detection atau pendeteksian tabrakan, yang dalam implementasinya ditemukan misalnya pada game pesawat tempur.

Pada game yang profesional, membuat game bukan hanya pekerjaan programmer, tetapi juga melibatkan desainer game, manager produksi atau bahkan model artis untuk membuat suatu ide menjadi kenyataan.

Fenomena Game

Apa game pertama yang Anda mainkan? Bisa jadi bukan merupakan game yang dimainkan pada Personal Computer. Mungkin pertama kali Anda bermain game pada video game console seperti Atari atau Nintendo terlebih dahulu, apapun itu, game yang pertama kali Anda kenal tentulah sangat sederhana dibandingkan game pada masa sekarang ini.

Game pada PC dahulu dapat disimpan pada disket berkapasitas kecil (tetapi dengan ukuran besar), lama-kelamaan sebagaimana layaknya sebuah program komputer yang terus berkembang, beberapa game memerlukan beberapa disket dan harus dilakukan instalasi pada hard disk.

Sejalan dengan perkembangan hardware yang semakin cepat, dan dukungan sistem operasi maupun software pendukungnya, revolusi game mulai naik daun dan jangan heran jika ada banyak pengguna mengupgrade komputernya menjadi lebih canggih untuk keperluan bermain game!

Salah satu keunggulan bermain game pada PC adalah dukungan jaringan yang memungkinkan Anda bermain game bersama rekan-rekan Anda, bahkan bermain online melalui Internet.

Anda tentu mengenal pula game catur. Mengenai “prestasi” game catur di dunia internasional, tentu orang tidak akan pernah lupa saat pertama kalinya dalam sejarah seorang juara dunia catur pada saat itu, Garry Kasparov, dikalahkan oleh komputer super milik IBM bernama “Deep Blue” pada tahun 1997. Bukti bahwa game bisa menjadi sangat serius!

Game online merupakan salah satu jenis game yang booming, termasuk di Indonesia. Antara lain adalah Nexia, Ragnarok, Seal, dan lain-lain.

Tidak sedikit game saat ini dikembangkan untuk kebutuhan pendidikan dan bahkan mensimulasikan kehidupan nyata, sehingga muncul istilah Serious Games (SGs), diantaranya Pulse, DoomEd, Dangerous Waters dan lain sebagainya.

Beberapa kategori game yang dikenal adalah Role Playing Game (RPG), arcade, racing, First Person Shooter (FPS), simulation, board, card, puzzle, dan lain sebagainya. Masing-masing memiliki masa gemilang tersendiri, Anda tentu mengenal Need For Speed untuk kategori racing, Diablo untuk kategori RPG, Doom untuk kategori FPS, dan masih banyak lagi.

Tahap Pembuatan

Pada umumnya, sebuah game berawal dari prototipe yang memungkinkan programmer dan desainer game bereksperimen dengan berbagai algoritma dan skenario. Kemudian memasuki tahap desain game, dimana terkadang programmer dapat menyumbangkan kontribusinya berupa ide atau skenario.

Setelah desain game terbentuk, maka bahasa pemrograman yang digunakan harus diputuskan, dimana pemilihannya tergantung dari beberapa faktor. Misalnya latar belakang dan kemampuan team programmer, platform yang digunakan (misalkan, apakah video game console seperti PlayStation, atau Microsoft Windows?), juga engine, API (Application Programmer Interface), atau library yang digunakan.

Saat ini, bahasa pemrograman yang paling populer untuk pengembangan game adalah C++. Dengan kemampuan object oriented dan performa yang tinggi. Pilihan populer lainnya adalah Java dan C, terkadang digunakan bahasa Assembly untuk programming beberapa video game console dan beberapa rutin yang perlu dieksekusi dalam waktu secepat mungkin.

Beberapa bahasa pemrograman memiliki kelebihan dan kekurangan masing-masing untuk mengembangkan sebuah game. Sebagai contoh, bahasa Assembly merupakan bahasa dengan waktu eksekusi yang tercepat diantara semua bahasa pemrograman yang ada, tetapi merupakan bahasa yang relatif rumit dan menyebabkan proses development yang lama.

Adanya library dapat membantu proses development, terdapat banyak library yang tersedia dengan fungsi masing-masing, seperti menangani sound, input, ataupun grafik. Beberapa library bahkan menangani proses rumit seperti Artificial Intelligence (AI), salah satu implementasi AI adalah pathfinding, yaitu bertujuan untuk menemukan rute terbaik dari satu point ke point lainnya.

Grafik merupakan hal yang sangat penting untuk kebanyakan game saat ini, jika pada tahun 90-an Anda masih cukup banyak menemukan game dengan grafik 2D, maka saat ini hampir semua game memiliki grafik 3D yang halus. Pada platform Microsoft Windows, API yang populer untuk grafik 3D adalah DirectX dan OpenGL.

DirectX sendiri lebih merupakan kumpulan API untuk game, Direct3D (atau kadang disebut DirectX Graphics) merupakan API untuk grafik 3D. Sementara OpenGL merupakan API 3D yang portable, sehingga kode program dengan OpenGL dapat dengan mudah digunakan dari Windows ke Apple Macintosh ataupun Linux.

Salah satu kunci pembuatan game untuk programmer adalah game loop, yang merupakan istilah untuk menggambarkan situasi dimana sebuah game masih terus berjalan mulus walaupun mendapatkan input dari pengguna.

Anda dapat membayangkan sebuah program yang sedang berjalan dan sedang melakukan beberapa proses, apalagi pada sebuah game, proses yang dapat terjadi bisa saja memainkan suara, menggerakkan karakter, menjalankan AI, mendeteksi tabrakan, dan menggambar grafik! Ditambah lagi game harus melakukan respon terhadap input pengguna, tanpa mengganggu proses yang tengah berjalan.

Beberapa game menjalankan teknik multi-threading, walaupun kemungkinan dapat menyebabkan kelebihan beban. Bagaimanapun, hardware ikut memegang peranan penting dalam hal ini. Penggunaan multi-core processor akan meningkatkan performa game, video game console seperti Xbox dan Playstation saat ini sudah memiliki lebih dari 1 core per processor.

Mungkin Anda membayangkan programmer game merupakan satu team programmer yang memiliki latar belakang sama, kenyataannya untuk mengembangkan game yang profesional, sering kali team programmer terdiri lagi dari latar belakang dan disiplin ilmu yang berbeda! Bisa jadi Anda menemukan programmer khusus untuk menangani visual efek dan grafik 3D, sementara programmer lain menangani Artificial Intelligence, atau bahkan terdapat programmer yang khusus menangani musik dan efek suara.

Sebelum memasarkan game secara luas, sering kali perusahaan game membuat versi demo yang dikenal dengan Electronic Entertainment Expo atau E3, ketika sebuah game mendekati masa penyelesaian, peran programmer menjadi sangat vital dan harus siaga untuk menangani setiap bugs yang ditemukan.

Sebagaimana produk software lainnya, game terkadang memiliki versi beta, dimana versi beta sering sudah memiliki fitur lengkap tetapi mungkin masih memiliki beberapa bugs atau content yang belum lengkap.

Kebanyakan game modern memerlukan waktu satu hingga tiga tahun hingga mencapai tahap penyelesaian, walaupun fase development tergantung oleh banyak faktor. Hampir seluruh fase pembuatan game memerlukan kegiatan programming, kecuali tahap awal dari desain game.

Apakah Anda Seorang (Calon) Programmer Game

Programmer game bisa jadi sangat berbeda dengan programmer dalam bidang lain. Seperti kata pepatah bijak bahwa sebuah langkah besar dimulai dari langkah kecil, adalah hal yang nyaris mustahil jika Anda baru memulai karir pada bidang game programming dan langsung ingin membuat game sekelas Diablo atau The Sims.

Membuat game kecil seperti tetris, tic-tac-toe, breakout, dan lain sebagainya sangat membantu tahap awal dan tentunya Anda akan bangga dengan game-game awal buatan Anda tersebut.

Tahap berikutnya adalah memiliki rencana atau desain game yang lebih matang, tentu saja sebuah desain tidak dapat langsung sempurna 100%, tetapi paling tidak membuat Anda memiliki gambaran yang lebih jelas mengenai game yang Anda idam-idamkan.

Menemukan grup diskusi dan saling bertukar informasi akan semakin mengembangkan diri Anda sebagai programmer game. Tentunya Anda sudah memiliki bekal programming yang cukup, pilih dan pastikan bahasa pemrograman, platform, dan tools yang Anda gunakan.

Sebuah game perlu kosmetik agar menarik, game tetris saat ini secara prinsip sama dengan game tetris yang Anda mainkan 10 tahun yang lalu, bedanya adalah tetris yang saat ini Anda mainkan memiliki efek ledakan super, grafik 3D yang halus, dan menyebabkan Anda tidak pernah lagi menyentuh game tetris jaman dulu.

Jika Anda tidak memiliki skill atau jiwa artistik, mungkin Anda perlu mencari gambar menarik atau rekan yang dapat membantu membungkus game Anda dengan kosmetik yang baik. Pada tahap ini Anda sudah serius untuk mempublikasikan game Anda.

Semakin besar ruang lingkup game yang Anda rencanakan, semakin Anda membutuhkan team developer untuk bersama-sama mewujudkannya.

Mengenal tools yang umum digunakan dalam pembuatan game tentunya dapat mempermudah pekerjaan Anda. Untuk urusan grafik, Anda dapat menggunakan Photoshop, Alias Sketchbook Pro, Genetica (texture editor), Tile Studio (grafik editor untuk game berbasis 2D), dan tools lainnya yang berbasis pixel.

Untuk tools grafik berbasis vektor, Anda dapat menggunakan Corel Draw, Moho, dan seterusnya. Untuk tools 3D, tersedia pilihan 3D Studio Max, Blender, ClayWorks, Maya, Wings 3D dan lain sebagainya.

Selanjutnya, efek suara dapat diciptakan melalui tools seperti Audacity, Audition, Coagula. Lebih lanjut jika Anda menginginkan musik pada game Anda, gunakan tools seperti Acid Music, Cakewalk, MusE, Hydrogen dan seterusnya.

Teknik Pemrograman

Jika Anda sebagai programmer aplikasi database harus menguasai teknik-teknik pengolahan data seperti statement SQL, maka sebagai programmer game juga terdapat beberapa teknik pemrograman yang sering digunakan dan perlu dikuasai.

Beberapa teknik cukup mendasar, seperti struktur data yang menyangkut array, linked list, queue, stacks, tree, hash table dan seterusnya. Menggunakan teknik yang tepat pada permasalahan yang tepat akan meningkatkan performa game Anda.

Hitungan matematika juga kerap digunakan, pada game dapat terbagi atas operasi kombinasi warna, operasi endian untuk konversi format pada transmisi jaringan, operasi vektor dan matrix.

Paradigma event driven programming turut digunakan pada game dimana game Anda memberikan reaksi terhadap event yang diberikan.

Suatu fenomena yang menarik pada dunia game, bahwa sebagaimana software lainnya, terdapat sekelompok orang yang melakukan “cracking” atau “cheating” pada game sehingga mungkin dapat melewati level tertentu atau membuat karakter tak terkalahkan.

Beberapa cara diantaranya adalah dengan memahami dan memodifikasi file yang disimpan oleh game tersebut, baik dengan proses reverse engineering atau dengan logika dan beberapa eksperimen, atau menghentikan eksekusi dari instruksi pada memory dengan menggunakan debugger (misalnya SoftICE), sehingga memungkinkan untuk melihat dan mengedit instruksi yang tengah dieksekusi.

Jika Anda tidak ingin game Anda dimanipulasi, Anda perlu menambahkan pengaman berupa otentifikasi dan validasi dengan algoritma tertentu,atau melakukan enkripsi pada string-string tertentu yang dapat menjadi celah keamanan jika string tersebut terbaca jelas pada executable file.

Pada tahun 2007, seiring dengan perkembangan teknologi yang semakin pesat, salah satunya adalah dengan diluncurkannya Windows Vista, tentunya membawa angin yang lebih baik pada dunia game. Kualitas visual game PC akan meningkat dengan fitur DirectX 10 yang tentunya lebih baik dibandingkan DirectX versi sebelumnya.

Berawal Dari Sebuah Ide

Imajinasi manusia tidak terbatas, sebuah ide sederhana dapat menjadi salah satu game paling laris. Bukankah game The Sims merupakan kenyataan dan aktivitas yang kita alami dan lihat sehari-hari?

Tokoh-tokoh imajiner dengan senjata, item, dan kemampuan bervariasi juga merupakan sumber kreatifitas yang tidak ada habisnya jika Anda berniat menciptakan game petualangan. Menambahkan unsur budaya atau sejarah sebagai latar belakang juga menambah daya tarik tersendiri.

Game yang telah sukses dipasaran, dipastikan tidak akan kekurangan ide untuk terus dikembangkan, contohnya di tahun ini Anda dapat menantikan game Command & Conquer 3, Alone In The Dark 3 yang telah dikenal luas oleh game mania.

Tidak dapat dipungkiri, game programming juga harus melibatkan seni/art dan mengandung banyak trik pemrograman dalam pembuatannya, sering Anda harus membuat input dan output yang real-time sebagai interaksi antara pengguna dengan program game tersebut.

Sekali lagi, membuat game sederhana sebagai langkah awal adalah sangat penting, walaupun mungkin keinginan Anda adalah membuat game jenis First Person Shooter seperti Duke Nukem 3D, ataupun Quake. Anda harus menyelesaikan setiap game yang Anda mulai, karena itu jangan langsung memaksakan membuat game super yang bisa jadi justru tidak pernah Anda selesaikan jika dimulai tanpa pengalaman yang cukup.

Seperti juga membuat program lainnya, memberikan timeline untuk masing-masing tahap pembuatan game dapat membuat pekerjaan Anda lebih terstruktur dan terarah. Walaupun mungkin dalam kenyataannya jadwal yang dibuat sering meleset, tetapi penting untuk memiliki patokan waktu dan membandingkannya dengan progress Anda, kemudian melakukan koreksi jadwal bilamana diperlukan.

Sebagai contoh Anda ingin membuat game pesawat tempur, Anda dapat menentukan jadwal 1-10 jam pertama untuk membuat arsitektur dasar dan menentukan komponen-komponen utama, 11-20 jam berikutnya untuk membuat interaksi pemain seperti pergerakan object dan serangan.

Selanjutnya 21-30 jam berikutnya, fokuskan untuk membuat dunia game Anda lebih hidup, misalkan dengan membuat tekstur, visual efek maupun efek suara. Pada 31–40 jam berikutnya, tentukan peraturan dan mekanisme permainan seperti perhitungan level.

Setelah itu Anda dapat melakukan test dan memantau game Anda untuk perbaikan bugs dan dokumentasi, Anda tidak perlu melakukan penambahan fitur sebelum game Anda stabil. Tentu saja patokan membuat game dalam 40 jam bukanlah harga mati, yang terpenting adalah proses belajar dan menyelesaikan game yang Anda mulai.

Akhir kata, motivasi dan waktu merupakan kunci Anda memulai membuat game, dan tentu saja latihan untuk mengembangkan bakat yang Anda miliki. Semoga artikel singkat ini memberikan gambaran dasar bagi Anda untuk menekuni lebih serius dunia game. Siapa tahu ide Anda akan dapat direalisasikan menjadi game yang menarik?

(jn) – dulunya (pernah kepikiran pengen jadi) programmer game
PC Media

(Visited 143 times, 1 visits today)

6 thoughts on “Game Programming

  1. susah dikatakan nan, gimanapun juga game termasuk software, tapi secara umum di game programming lebih menantang logika (kasian ya si logika ditantang), tapi kalo buat cari duit, untuk programer game musti perlu bener-bener dedicated. sedangkan programer database, umumnya ga perlu sakti2 banget sudah bisa dapat 1-2 proyek.

  2. Iya…saya juga mikir game itu termasuk software juga. tapi saya ga nemuin istilah yang pas….jadi itu saja. Yang penting mas joko paham maksudnya.

    Programer game sama database itu berlawanan sekali ya mas…Membuat game harus belajar lumayan lama dan harus serius, sementara hasil kerjanya(game) untuk mainan orang. sementara programer database usahanya tidak sekeras programmer game, tapi hasil kerjanya digunakan secara serius.

Leave a Reply