UTAMA Noprianto
Pengembangan Game B
erbagai teknologi yang berjalan di atas Linux memungkinkan untuk memainkan bahkan mengembangkan game , yang mana akan menjadi pembahasan kita di edisi ini.
Ketika kali pertama dikembangkan sebagai sistem operasi UNIX-like, Linus dan developer kernel mungkin tidak akan menyangka bahwa Linux akan berkembang sampai seperti saat ini. Bisa kita lihat sudah mulai banyak pengguna komputer yang menggunakan Linux untuk kebutuhan desktop (selain untuk server). Baik untuk bekerja, bersenang-senang, ataupun keduanya. Berbagai perusahaan besar pun mulai menyatakan dukungannya untuk Linux, dan akan menggunakan Linux sebagai sistem operasi, untuk server sampai perangkat mobile. Agar dapat digunakan secara meluas dan menjangkau lebih banyak kalangan, tentunya, Linux harus dapat memenuhi kebutuhan berbagai kalangan tersebut. Saat ini, kalangan server sudah relatif cukup (dan semakin) terpuaskan. Kalangan pengguna desktop untuk keperluan pekerjaan juga sudah mulai terpuaskan. Dan, beberapa tahun terakhir ini, dukungan Linux untuk kalangan penikmat multimedia dan game juga semakin ditingkatkan.
30
08/2006 INFOLINUX
Bidang multimedia dan game memang didukung cukup terlambat oleh Linux, tentu saja apabila dibandingkan dengan Windows, yang sudah sejak awal memfokuskan diri di desktop. Namun, Linux yang terus memperkokoh fundamentalnya terbukti mampu untuk semakin mendukung multimedia dan game. Setidaknya, sampai saat ini, bisa kita lihat semakin banyak game yang bermunculan di dunia Linux. Hal ini tentu tidak terlepas dari semakin banyaknya pustaka atau SDK (Software Development Kit) untuk game yang tersedia. Dengan semakin matangnya SDK atau pustaka tersebut, mengembangkan game akan semakin mantap di Linux. Cukup banyak dari SDK tersebut yang bahkan juga mendukung pengembangan game multiplatform. Sebagai hasilnya, game yang dikembangkan tidak hanya dapat berjalan di Linux, namun juga dapat berjalan di Windows dan beberapa platform lainnya. Di tulisan kali ini, pembahasan memang sebisa mungkin kita fokuskan untuk pustaka yang multiplatform.
Di “Utama” kali ini, kita akan membahas berbagai pustaka, SDK, serta utiliti yang dapat digunakan untuk membangun game. Kita akan membahas pula satu contoh game yang kita buat sendiri menggunakan berbagai pustaka tersebut. Pembahasan akan kita mulai dari game editor, yang memungkinkan kita untuk membangun game tanpa harus repot-repot memeras otak dan melakukan coding sampai ribuan baris atau lebih. Setelah itu, pembahasan akan kita lanjutkan pada berbagai SDK dan pustaka yang telah disediakan untuk keperluan pembuatan game. Tak lupa, kita juga akan membahas berbagai bahasa scripting yang dapat di-embed ke dalam game, dan menjadikan game lebih bisa dikembangkan. Kita juga akan membahas sekilas contoh kasus berbagai game yang cukup populer di Linux, sebelum kita memasuki pembahasan singkat tentang game yang akan kita buat. Terakhir, beberapa website yang menyediakan informasi game di Linux juga akan
www.infolinux.web.id
UTAMA
di Linux
secara manual, walaupun telah memanfaatkan pustaka semacam OpenGL). Hebatnya, beberapa dari mereka juga dapat berjalan pada berbagai platform. Kekurangan dari tool-tool tersebut umumnya adalah masalah biaya lisensi. Sedikit sekali dari mereka yang bebas untuk digunakan. Hampir semua yang berkualitas menarik lisensi yang lumayan. Bahkan, ada yang mengharuskan kita untuk membayar royalti setiap kita membuat dan mendistribusikan game yang dibangun dengan tool tersebut. Di tulisan ini, kita akan membahas dua dari tool-tool tersebut, yaitu Antiryad GX dan Game Editor. Keduanya sama-sama dapat berjalan pada berbagai platform.
Antiryad GX
kita bahas, khusus bagi penikmat game di Linux. Selamat membaca!
GAME EDITOR/GAME CREATOR Belakangan ini, pengembangan software cenderung semakin memudahkan programer. Jauh sekali apabila kita bandingkan dengan situasi 10 tahun yang lalu. Saat ini, cukup banyak tersedia development tool yang memungkinkan kita membangun aplikasi dengan memfokuskan diri pada logika bisnis. Begitupun dengan pengembangan game. Saat ini, tersedia cukup banyak development tool yang memungkinkan kita membangun game dengan lebih mudah. Pengembangan difokuskan secara visual, tanpa mengharuskan kita untuk mengetikkan ratusan kode hanya untuk membangun window utama sebuah game, dengan beberapa objek kecil di layar yang dapat bergerak (atau digerakkan). Beberapa tool bahkan memungkinkan kita untuk membangun game 3D (tiga dimensi) dengan sangat mudah (tentunya apabila dibandingkan dengan melakukan coding
www.infolinux.web.id
Antiryad GX secara singkat dapat dideskripsikan sebagai game creator 3D yang dapat berjalan pada berbagai platform. Antiryad GX dikembangkan oleh Antoine Guillon dari Arkham Development (http://www. arkham-development.com), sebuah perusahaan yang berbasis di Paris. Saat tulisan ini dibuat, Antiryad GX telah mencapai versi 1.5.00.2006.05.21. Game creator yang satu ini boleh dikatakan cukup matang dan telah dikembangkan dalam kurun waktu yang sudah cukup lama, untuk sebuah produk software. Antiryad GX telah dikembangkan selama 13 tahun (sejak tahun 1993). Apa saja fitur yang dimiliki oleh Antiryad GX? Berikut ini adalah beberapa di antaranya: Datang bersama engine 3D yang komplit. Dilengkapi dengan game engine. Untuk pengembangan lebih lanjut, Antiryad GX juga datang dengan bahasa BASIC yang dapat di-embed. Berbagai Integration tool yang mudah untuk digunakan. Sistem yang sangat modular, di mana middleware seperti engine 3D atau pustaka jaringan dapat diaktifkan dengan mudah. API (Application Programming Interface) yang sederhana dan tidak bergantung pada platform tertentu. Kita cukup sekali menulis kode dan dapat berjalan pada berbagai platform. Dokumentasi yang sangat lengkap (terdapat lebih dari 2700 fungsi yang didokumentasikan dengan baik yang dapat diakses untuk C/C++ ataupun embedded BASIC).
Selain memiliki cukup banyak fitur, Antiryad GX juga dapat berjalan pada berbagai platform. Berikut ini adalah platform di mana Antiryad GX dapat berjalan: AmigaOS DOS dengan VGA Linux x86 dengan OpenGL, DGA dan X11 Linux PPC dengan OpenGL, DGA dan X11 Apple MacOS X G3-G5 dengan OpenGL dan Carbon Microsoft Windows 32 bit dengan Direct3d5, Direct3d8, Direct3d9, OpenGl, Direct Draw 5 dan GDI Sony Playstation 2 Sony PSP Microsoft Xbox Sampai saat ini, terdapat cukup banyak project yang telah dikembangkan dengan Antirayd GX. Berikut ini adalah beberapa di antaranya: Isla Dragon Northern Breeze 360 Dracula/Dracula 2 Louvre Amazonia Jack the Ripper Terror Island Dark Area Untuk menjalankan game creator ini, berikut ini adalah spesifikasi sistem yang disarankan: RAM: 512 MB CPU: 1 GHz untuk IA32 Kartu grafik yang mendukung hardware TnL dan vertexs shaders Sound card Ruang kosong harddisk sebesar 1 GB Compiler C/C++ Dalam menjalankan game creator ini, Anda mungkin akan membutuhkan software tambahan seperti: The GIMP (atau image editor lain yang mendukung format TGA) Blender Tertarik dengan game creator yang satu ini? Versi freeware game ini dapat di-download untuk dicoba. Ukurannya memang cukup besar. Untuk core-nya saja, yang didis-
INFOLINUX 08/2006
31
UTAMA tribusikan dalam format Zip, ukurannya mencapai 85 MB (setelah diinstal mencapai 203 MB). Untuk extensionnya, juga dalam format Zip, ukurannya mencapai 75 MB. Di masa depan, apabila Anda berminat untuk mengembangkan game dengan Antiryad GX, ada baiknya Anda memperhatikan lisensinya mulai saat ini. Berikut ini adalah overview lisensi Antiryad dan konsekuensinya dalam tabel 1.
Game Editor Game editor, seperti namanya adalah program pembuat game multiplatform yang dikembangkan oleh perusahaan game-editor. com yang berbasis di Brazil, yang telah mulai mengembangkan software sejak tahun 1987 (walaupun, menurut changelog, beta pertama game editor baru dirilis pada tahun 2003). Saat tulisan ini dibuat, game editor telah mencapai versi 1.3.4. Game editor bisa didapatkan di http://www.game-editor.com. Apa saja fitur yang dimiliki oleh Game Editor? Berikut ini adalah beberapa di antaranya: Multiplatform. Dapat digunakan untuk mengembangkan game 2D. Saat ini, game editor belum mendukung pembuatan game 3D. User interface yang mudah dimengerti. Memiliki dukungan yang luas akan format suara. Memiliki dukungan yang sangat baik untuk penampilan gambar. Mendukung scripting yang kompatibel dengan bahasa C. Mampu menghasilkan game standalone. Game yang dihasilkan dapat tampil secara fullscreen.
Pengembangan game dilakukan berbasis event driven. Mendukung sangat banyak aksi pada objek game. Sudah sangat mencukupi untuk pengembangan game 2D. Dokumentasi yang sangat baik, disertai dengan berbagai tutorial. Selain fitur di atas, game creator multiplatform ini memiliki satu kelebihan, yaitu game yang dihasilkan dapat berjalan pada berbagai platform, seperti: Windows (95, 98, Me, NT, 2000, 2003, XP) Pocket PC berbasis Windows Mobile Smartphone berbasis Windows mobile Linux Berikut ini adalah beberapa game yang telah dihasilkan oleh Game Editor: Respok. Tire Tossin’ Game (http://www.pocketgear.com/software_detail.asp?id=20920). GloBall (http://www.clickgamer.com/ moreinfo.htm?pid=4952§ion=PPC). 3D StarRacer (http://www.clickgamer. com/moreinfo.htm?pid=3843§ion=PP C). A Bloody Mess (http://www.geeksofchaos.com/gamesite/forum/index. php?forum=11&topic=0). Psi-Check (http://www.geeksofchaos.com/gamesite/forum/index. php?forum=4&topic=1). Crimson: Onslaught (http://onslaught. parkinglotgames.com/gameplay.html). Untuk menjalankan game creator ini, berikut ini adalah spesifikasi sistem yang disarankan:
Tabel 1. Lisensi Antiryad GX.
32
Detil
Freeware
Personal
Professional
Enterprise
Harga lisensi Platform
Free Win32, Linux x86, Dos, AmigaOs 68k , MacOsX
Belum tersedia Win32, Linux x86, Dos, AmigaOs 68k , MacOsX
Belum tersedia Win32, Linux x86, Dos, AmigaOs 68k , MacOsX
CDROM disediakan Pustaka C/C++ Source code modul dasar Dukungan teknis
TIDAK Sebagian TIDAK Forum
TIDAK Sebagian YA Forum
Distribusi tak terbatas untuk produk freeware Distribusi untuk produk komersial Menampilkan splash Antiryad GX
Konfirmasi terlebih dahulu YA
YA YA YA Forum dan 4 bulan dukungan privat YA
Belum tersedia Win32, Linux x86, Dos, AmigaOs 68k , MacOsX dan game console YA YA YA Forum dan 1 tahun dukungan privat YA
TIDAK
1 untuk 1 lisensi
1 untuk 1 lisensi
Tidak terbatas
YA
YA
TIDAK
TIDAK
08/2006 INFOLINUX
RAM: 512 MB (minimal 32 MB) CPU: x86 2 GHz (minimal 200 MHz) Apabila membangun game untuk Pocket PC atau smartphone, berikut ini adalah kebutuhan sistemnya: Windows CE OS 3.0 (Pocket PC 2002, Windows Mobile 2003, 2005) atau yang lebih baru. RAM 10 MB. Processor ARM (ARM, StrongARM, XScale, OMAP, PXA dan lainnya) 200 MHz Disarankan untuk memiliki MMC/SD card. Game editor adalah program proprietary sehingga Anda perlu membayar biaya lisensi untuk dapat menggunakannya secara penuh. Namun, bagi Anda yang tertarik, Anda bisa men-download versi trial 30 hari yang tersedia. Bagi Anda yang serius mengembangkan game dengan game editor, pembuatnya telah merancang skema lisensi yang sangatsangat menarik: Biaya lisensi termurah (pada saat tulisan ini dibuat) adalah US$14.95 sampai US$94.95. Apa yang membedakan dari biaya lisensi adalah waktu update gratis, bukan fitur atau pembatasan dari sisi program. Membayar US$14.95 ataupun US$94.95, Anda akan mendapatkan fitur yang sama. Perincian: Basic Package: US$14.95, full version, tanpa update. Silver Package: US$54.95, full version, gratis update selama 6 bulan. Gold Package: US$94.95, full version, gratis update selama 1 tahun. Tanpa royalti. Anda dapat membuat dan menjual game yang telah dibuat tanpa harus membayar royalti kepada pembuat game editor.
GAME SDK/GAME LIB/GAME ENGINE Membangun game dengan game editor/ game creator mungkin jauh lebih mudah dibandingkan dengan membangun game dengan pustaka atau SDK yang akan kita bahas berikut ini. Namun, menurut penulis, membangun game dengan pustaka atau SDK yang dibahas berikut ini memiliki ketergantungan yang lebih kecil dibandingkan dengan membangun game memanfaatkan
www.infolinux.web.id
UTAMA
Website Antiryad GX.
Website Game Editor.
game editor/game creator. Selain itu, semua pustaka/SDK yang akan kita bahas berikut ini bisa digunakan tanpa harus membayar biasa lisensi. Semuanya juga open source, dan beberapa datang dengan lisensi yang sangat fleksibel, memungkinkan kita untuk membangun game open source ataupun close source.
Akses yang mudah untuk mouse, keyboard, joystick Mendukung GUI. Fasilitas yang satu ini cukup menarik. Apabila di dalam game Anda ingin menampilkan dialog kepada pemain, maka berbagai widget telah disediakan Dukungan karakter unicode
Allegro
Allegro dapat berjalan pada platformplatform berikut: DOS Windows Linux Unix BeOS Mac OS QNX
Allegro adalah pustaka cross platform yang dapat digunakan untuk pembuatan game ataupun aplikasi multimedia lainnya. Allegro kali pertama dikembangkan pada platform Atari ST. Pustaka game ini dikembangkan oleh Shawn Hargreaves dan tim. Saat tulisan ini dibuat, Allegro telah mencapai versi 4.2.0. Allegro bisa didownload di http://alleg.sourceforge.net/index.html. Berikut ini adalah fitur yang datang bersama Allegro: Multiplatform Memiliki fungsi penggambaran yang sangat luas Memiliki dukungan driver grafik yang luas: DOS: VGA (Int 13h) dan SVGA Windows: DirectX UNIX: X, DGA2, fbcon, SVGAlib, VBE/AF, dan VGA standar BeOS: BwindowScreen dan BdirectWindow MacOS X: CGDirectDisplay dan QuickDraw Mendukung animasi FLI/FLC Mampu memutar MIDI Mendukung sampai 64 efek suara simultan
www.infolinux.web.id
Lisensi allegro sendiri sangatlah lunak. Allegro sendiri mendeskripsikan dirinya sebagai gift-ware. Kita bisa menggunakan, mendistribusikan ataupun mengubah source code Allegro. Kita juga bisa membangun aplikasi proprietary. Di dalam distribusi allegro, kita bisa mendapatkan puluhan contoh yang menggambarkan kemampuan allegro. Beberapa di antaranya sangatlah menarik dan dapat dipergunakan sebagai dasar untuk pembuatan game. Semua source code tersebut merupakan source code dalam bahasa C. Kebutuhan pustaka sebuah game yang dihasilkan dengan bantuan allegro juga sangatlah sederhana. Allegro hanya membutuhkan sedikit sekali pustaka sistem. Berikut ini adalah contoh kebutuhan pustaka untuk sebuah contoh yang datang bersama allegro:
$ ldd exzbuf liballeg.so.4.2 => /usr/ lib/liballeg.so.4.2 (0x40018000) libm.so.6 => /lib/tls/ libm.so.6 (0x400f3000) libc.so.6 => /lib/tls/ libc.so.6 (0x40115000) libpthread.so.0 => /lib/ tls/libpthread.so.0 (0x4024a000) libXext.so.6 => / usr/X11R6/lib/libXext.so.6 (0x40259000) libX11.so.6 => /usr/X11R6/ lib/libX11.so.6 (0x40267000) libdl.so.2 => /lib/tls/ libdl.so.2 (0x4032e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Ukuran rata-rata executable yang dihasilkan pun sangatlah kecil untuk sebuah aplikasi dengan kebutuhan pustaka yang tidak terlalu banyak. Rata-rata hanya 100 KB. Satu hal yang menarik dari allegro adalah dokumentasinya. API dikelompokkan dengan cukup baik menurut fungsinya. Di dalam setiap pembahasan fungsi, sebagian besar juga memasukkan contoh kode, yang sangat membantu pembelajaran pembuatan game dengan allegro.
Clanlib Clablib adalah cross platform framework C++ yang memfokuskan dirinya pada pengembangan game. Pada saat tulisan ini dibuat, clanlib telah mencapai versi 0.8.0RC2. Clanlib bisa di-download di http:// www.clanlib.org.
INFOLINUX 08/2006
33
UTAMA Berikut ini adalah fitur yang datang bersama Clanlib: Multiplatform, mendukung Windows, Linux dan Mac OS X Mendukung runtime cross platform untuk threading, file I/O dan sebagainya Mendukung berbagai format audio seperti wav, mikmod dan ogg vorbis mendukung XML/DOM Mendukung grafik 2D dengan collision detection dan sprite mendukung grafik 3D Memiliki GUI framework. Dukungan GUI untuk clanlib sangatlah luas Mendukung rutin networking Clanlib 0.7.8 dan sebelumnya dilisensikan di bawah lisensi LGPL versi 2.1 atau lebih baru. Sementara, clanlib 0.8.0 dan yang lebih baru dilisensikan di bawah lisensi Clanlib. Di dalam distribusi Clanlib, kita akan mendapatkan dokumentasi yang lengkap beserta referensi untuk fungsi-fungsi yang disediakan. Referensi telah dikelompokkan dengan sangat baik ke dalam beberapa grup berikut: App (system) Core (I/O, Library, Math, Resources, System, XML) Display (Collision, Display 2D, Fonts, Input, Sprites, Surface Provider, System) GL (Display 2D, Display 3D, System) GUI (Controls, Framework, Style:SIlver, System) Mikmod (Sound Providers, System) Network (IRC, NetObjects, netSessions, Sockets, System)
Website SDL.
34
08/2006 INFOLINUX
SDL (System) Signal (Audio Mixing, CL Audio, Filters, Sound Providers, System) Vorbis (Sound Providers, System)
libz.so.1 => /usr/lib/ libz.so.1 (0x402d7000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Selain dokumentasi, puluhan contoh yang mewakili kasus-kasus yang paling sering ditemukan dalam pengembangan game juga disertakan (source code dalam bahasa C++). Bahkan, di dalam distribusi Clanlib, telah disertakan pula beberapa tutorial. Salah satunya adalah tutorial langkah demi langkah untuk membuat game TicTacToe. Kebutuhan pustaka sebuah game yang dihasilkan oleh Clanlib juga relatif sederhana. Berikut ini adalah contoh kebutuhan pustaka untuk contoh minimum yang datang bersama Clanlib:
PLIB
$ ldd minimum libclanCore-0.8.so.1 => /usr/lib/libclanCore-0.8.so.1 (0x40018000) libclanSignals-0.8.so.1 => /usr/lib/libclanSignals-0.8.so.1 (0x4009f000) libclanApp-0.8.so.1 => /usr/lib/libclanApp-0.8.so.1 (0x400a2000) libstdc++.so.5 => /usr/ lib/libstdc++.so.5 (0x400ad000) libm.so.6 => /lib/tls/ libm.so.6 (0x40167000) libgcc_s.so.1 => /lib/ libgcc_s.so.1 (0x40189000) libc.so.6 => /lib/tls/ libc.so.6 (0x40192000) libpthread.so.0 => /lib/ tls/libpthread.so.0 (0x402c8000)
PLIB (portability Libraries) adalah pustaka cross platform yang dapat digunakan untuk pembuatan game ataupun aplikasi multimedia lainnya. PLIB dikembangkan oleh Steve J Baker, dan pada saat tulisan ini dibuat, PLIB telah mencapai versi 1.8.4. PLIB bisa di-download di http://plib.sourceforge.net/. Berikut ini adalah fitur yang datang bersama PLIB: Multiplatform Dukungan efek suara dan musik 3D engine yang komplit font rendering Windowing library game scripting language (PSL; sintaks C) Dukungan GUI Networking pustaka math 3D Dokumentasi yang lengkap PLIB dilisensikan secara fleksibel di bawah lisensi LGPL. PLIB terdiri dari komponen: Picoscopic User Interface Library (PUI) Sound Library (SL) Standard Geometry Library(SG) Simple Scene Graph Library (SSG) PUI Auxiliary Library (PUAUX) SSG Auxiliary Library (SSGA) Joystick wrappers (JS) Fonts’n’Text Library (FNT) Utility Library (UL) Pegasus Network Library (NET)
Website ClanLib.
www.infolinux.web.id
UTAMA PLIB Scripting Language (PSL) PLIB Windowing Library (PW) Pemisahan komponen tersebut dimaksudkan agar kita dapat memanfaatkan komponen yang diperlukan saja. Masing-masing komponen memiliki ketergantungan sendiri-sendiri dengan komponen lainnya (walau, tidak semuanya tergantung pada komponen lain). PLIB tercatat sebagai pustaka yang sukses, di mana berbagai game/project populer dikembangkan dengan bantuan plib. Berikut ini adalah beberapa contoh game/project populer tersebut: TUXAQFH, http://tuxaqfh.sf.net/ TuxKart, http://tuxkart.sf.net/ FlightGear, http://www.flightgear.org/ Majik3D, http://www.majik3d.org/ PrettyPoly, http://prettypoly.sf.net/ TuxFleet, http://tuxfleet.sf.net/ TORCS, http://www.torcs.org/ MiniGolf Maniacs, http://www.minigolfmaniacs.com/ Flight Dynamic Simulator, http://www. flight-dynamic-simulator.de/ MOTE, http://mote-project.org/ Spacething, http://www.spacething.org/ Kebutuhan pustaka sebuah game yang dihasilkan dengan bantuan PLIB juga sangatlah sederhana. Berikut ini adalah contoh kebutuhan pustaka untuk sebuah game yang dibuat dengan plib: TuxKart: $ ldd /usr/games/tuxkart libplibjs.so.1.8.3 => /usr/lib/libplibjs.so.1.8.3 (0x40020000) libplibsl.so.1.8.3 => /usr/lib/libplibsl.so.1.8.3 (0x40024000) libplibssg.so.1.8.3 => /usr/lib/libplibssg.so.1.8.3 (0x40042000) libplibpu.so.1.8.3 => /usr/lib/libplibpu.so.1.8.3 (0x4032a000) libplibfnt.so.1.8.3 => /usr/lib/libplibfnt.so.1.8.3 (0x40358000) libplibsg.so.1.8.3 => /usr/lib/libplibsg.so.1.8.3 (0x40368000) libplibpw.so.1.8.3 => /usr/lib/libplibpw.so.1.8.3
www.infolinux.web.id
(0x4037a000) libplibul.so.1.8.3 => /usr/lib/libplibul.so.1.8.3 (0x4037f000) libGL.so.1 => /usr/X11R6/ lib/libGL.so.1 (0x40384000) libSM.so.6 => /usr/X11R6/ lib/libSM.so.6 (0x403f3000) libICE.so.6 => /usr/X11R6/ lib/libICE.so.6 (0x403fc000) libpthread.so.0 => /lib/ tls/libpthread.so.0 (0x40413000) libX11.so.6 => /usr/X11R6/ lib/libX11.so.6 (0x40422000) libXi.so.6 => /usr/X11R6/ lib/libXi.so.6 (0x404ea000) libXext.so.6 => / usr/X11R6/lib/libXext.so.6 (0x404f2000) libXmu.so.6 => /usr/X11R6/ lib/libXmu.so.6 (0x40500000) libstdc++.so.5 => /usr/ lib/libstdc++.so.5 (0x40516000) libm.so.6 => /lib/tls/ libm.so.6 (0x405d0000) libgcc_s.so.1 => /lib/ libgcc_s.so.1 (0x405f2000) libc.so.6 => /lib/tls/ libc.so.6 (0x405fc000) libdl.so.2 => /lib/tls/ libdl.so.2 (0x40731000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libXt.so.6 => /usr/X11R6/ lib/libXt.so.6 (0x40734000)
SDL SDL (Simple DirectMedia Layer) adalah pustaka multimedia yang dapat berjalan pada berbagai platform. Pustaka ini dibangun oleh Sam Lantinga dan pada saat tulisan ini dibuat, SDL telah mencapai versi 1.2.10. Dapatkan informasi SDL di websitenya, http://www.libsdl.org. Berikut ini adalah fitur-fitur yang datang bersama SDL: Multiplatform Dukungan low level untuk Audio Keyboard Mouse Joystick Hardware 3D (lewat OpenGL) 2D video framebuffer Mendukung berbagai pustaka tambahan
Saat ini, SDL dapat berjalan pada platform-platform berikut: Linux (driver video: x11, dga, fbcon, directfb, svgalib, ggi, aalib; driver audio: dsp, dma, esd, artsc) Windows (driver video: directx, windib/ GDI; driver audio: dsound, waveout) Windows CE BeOS Mac OS Mac OS X Keluarga BSD (FreeBSD, NetBSD, OpenBSD, BSD/OS) Solaris IRIX QNX SDL telah dipersiapkan pula untuk mendukung AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, Symbian OS, dan OS/2, namun masih dalam proses pengembangan. Dengan kemampuan SDL yang luar biasa, termasuk kemampuannya untuk menambah pustaka baru, SDL telah banyak digunakan pada game, SDK game, emulator, aplikasi demo, dan berbagai aplikasi multimedia. SDL 1.2 (dan yang lebih kuno) dilisensikan di bawah lisensi LGPL, yang menjadikannya sangat fleksibel. SDL 1.3, yang saat ini dalam proses pengembangan, akan dilisensikan di bawah lisensi LGPL dan di bawah lisensi komersial alternatif. Dengan dukungan pustaka tambahan, fitur yang tidak berada di dalam skop SDL dimungkinkan. Sebagai contoh adalah: SDL_net (socket wrapper cross platform). SDL_image. SDL secara default hanya mendukung BMP. SDL_image mendukung BMP, PCX, GIF, JPG, PNG, TGA dan lain-lain. SDL_sound. SDL secara default hanya mendukung WAV. SDL_sound mendukung sangat banyak format audio. Daftar pustaka lengkap SDL bisa diakses di http://www.libsdl.org/libraries.php. Berikut ini adalah contoh game yang dibangun dengan SDL: Aleph One Battle for Wesnoth BZFlag Cube D1X INFOLINUX 08/2006
35
UTAMA
Website PLIB.
D2X Exult Freeciv Frozen Bubble Fuhquake pyDance SuperTux TuxPaint
Berikut ini adalah contoh kebutuhan pustaka game yang dibangun dengan SDL (supertux): $ ldd /usr/games/supertux libz.so.1 => /usr/lib/ libz.so.1 (0x40020000) libSDL_image-1.2.so.0 => /usr/lib/libSDL_image-1.2.so.0 (0x40033000) libSDL_mixer-1.2.so.0 => /usr/lib/libSDL_mixer-1.2.so.0 (0x4004e000) libSDL-1.2.so.0 => /usr/ lib/libSDL-1.2.so.0 (0x400be000) libpthread.so.0 => /lib/ tls/libpthread.so.0 (0x40165000) libGL.so.1 => /usr/X11R6/ lib/libGL.so.1 (0x40174000) libX11.so.6 => /usr/X11R6/ lib/libX11.so.6 (0x401e3000) libstdc++.so.5 => /usr/ lib/libstdc++.so.5 (0x402ab000) libm.so.6 => /lib/tls/ libm.so.6 (0x40365000) libgcc_s.so.1 => /lib/ libgcc_s.so.1 (0x40387000) libc.so.6 => /lib/tls/ libc.so.6 (0x40390000) libtiff.so.4 => /usr/lib/
36
08/2006 INFOLINUX
Website Wesnoth.
libtiff.so.4 (0x404c5000) libjpeg.so.62 => /usr/lib/ libjpeg.so.62 (0x40515000) libpng12.so.0 => /usr/lib/ libpng12.so.0 (0x40534000) libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x40559000) libvorbis.so.0 => /usr/ lib/libvorbis.so.0 (0x40561000) libogg.so.0 => /usr/lib/ libogg.so.0 (0x40588000) libsmpeg-0.4.so.0 => /usr/ lib/libsmpeg-0.4.so.0 (0x4058d000) libdl.so.2 => /lib/tls/ libdl.so.2 (0x405e6000) libXext.so.6 => / usr/X11R6/lib/libXext.so.6 (0x405ea000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
pygame Pygame adalah kumpulan modul bahasa pemrograman Python (http://www.python. org) yang didesain untuk kebutuhan pembuatan game. Pygame dibangun di atas pustaka SDL. Dapatkan pygame di websitenya, http://www.pygame.org. Pygame sendiri dilisensikan di bawah lisensi LGPL, yang memungkinkan kita untuk membangun aplikasi free ataupun proprietary. Karena menggunakan Python, pemrograman game dengan pygame secara umum akan relatif lebih mudah dilakukan, apabila dibandingkan dengan pemrograman menggunakan bahasa C/C++ plus pustaka SDL.
Berikut ini adalah contoh-contoh game yang dibangun dengan pygame: solarwolf pydance pathological
Stratagus Stratagus adalah game engine cross platform yang dikhususkan untuk pembuatan game real-time strategy. Dapatkan stratagus di website-nya, http://stratagus.sourceforge.net/. Berikut ini adalah beberapa fitur stratagus: Multiplatform Mendukung network/LAN play Configurable Mendukung scripting (Lua) Contoh game yang telah dibangun dengan stratagus adalah: Wargus (klon Warcraft2) Magnant Battle of Survival
Crystal Space Crystal Space adalah SDK untuk aplikasi 3D, yang memungkinkan untuk dijadikan sebagai basis dalam pembuatan game 3D. Dapatkan informasi mengenai crystal space di websitenya, http://crystal.sourceforge.net. Crystal Space dilisensikan di bawah lisensi LGPL. Berikut ini adalah beberapa fitur Crystal space: Multiplatform Mendukung plugin
www.infolinux.web.id
UTAMA
Mendukung sistem event Mendukung fullscreen, dilengkapi efek Pendukung procedural texture Mendukung 2D dan 3D sprite Memiliki windowing system sendiri Mampu memutar video AVI pada texture Mendukung sangat banyak format gambar Mendukung beraneka sistem pencahayaan Mendukung kurva bezier Mendukung multiple-camera Mendukung berbagai sound driver/ sound loader/sound renderer Mendukung sistem partikel Memiliki collision detection
Irrlicht Irrlicht adalah salah satu 3D engine populer, yang memungkinkan untuk dijadikan sebagai basis dalam pembuatan game 3D. Dapatkan informasi mengenai irrlicht di website-nya, http://irrlicht.sourceforge.net. Irrlicht dilisensikan di bawah lisensi Irrlicht yang berbasis lisensi zlib/libpng. Berikut ini adalah beberapa fitur Irrlicht: Multiplatform 3D rendering menggunakan Direct3D dan OpenGL Mendukung character animation Mendukung sangat banyak efek Memiliki software renderer Memiliki sistem GUI sendiri Dapat mengimpor mesh dari Maya, 3DStudio, Collada, dan lain-lain Dapat mengimpor texture dari berbagai format gambar Memiliki dukungan collision detection Mendukung XML parser yang terintegrasi Mendukung unicode
BAHASA EXTENSION/SCRIPT Umumnya, aplikasi besar, termasuk game besar, melengkapi dirinya agar bisa menerima extension (atau script, macro, plugin, dan lain sebagainya). Dengan mampu menerima, mengeksekusi dan meng-extend fungsionalitas lewat mekanisme extension ini, banyak hal yang bisa dilakukan oleh aplikasi tersebut. Yang jelas, aplikasi tersebut menjadi lebih fleksibel dan user dapat mengatur beberapa fungsionalitas aplikasi yang telah disediakan sesuai dengan keinginan.
www.infolinux.web.id
Berikut ini, kita akan membahas dua bahasa extension yang dapat di-embed ke dalam aplikasi umum/game/game engine. Semua yang dibahas merupakan free software dan dapat berjalan pada berbagai platform.
Lua Lua, yang berarti bulan dalam bahasa portugis, dikembangkan oleh Roberto Ierusalimschy dari PUC-Rio (http://www.puc-rio.br/). Dapatkan Lua di http://www.lua.org. Lua merupakan bahasa pemrograman ringan, namun powerful yang didesain untuk meng-extend fungsi aplikasi. Namun, tak jarang, lua juga digunakan sebagai bahasa pemrograman general purpose yang dapat berjalan stand-alone. Berikut ini adalah beberapa fitur Lua: Dynamically typed Interpret dari bycode Memiliki modul pengaturan memori otomatis (plus garbage collector)
Saat ini, lua digunakan di antaranya pada: World of Warcraft Adobe Lightroom FarCry Ethereal Grim Fandango Enigma Clanlib
seperti SDL_image, SDL_mixer, SDL_ net) , Zipios++
Wargus
Website: http://wargus.sourceforge.net/ Tipe: real time strategy Platform: multiplatform Teknologi yang digunakan: di antaranya Stratagus
SuperTux
Website: http://supertux.berlios.de/ Tipe: Side Scroller Platform: multiplatform Teknologi yang digunakan: di antaranya SDL (dan beberapa pustaka tambahan seperti SDL_image, SDL_mixer) , OpenGL
TORCS
Website: http://torcs.sourceforge.net/ Tipe: Simulation Platform: Multiplatform Teknologi yang digunakan: di antaranya PLIB, OpenGL
FlightGear
Website: http://www.flightgear.org/ Tipe: Simulation Platform: multiplatform Teknologi yang digunakan: di antaranya PLIB, OpenGL, SimGear
Elk
GAME KITA
Elk merupakan implementasi dari bahasa pemrograman Scheme, namun didesain untuk embeddable, sebagai bahasa extension untuk aplikasi yang dibangun dengan C/C++. Dapatkan informasi Elk di http://sam. zoy.org/elk/.
Berikut ini adalah informasi mengenai contoh game yang kita buat memanfaatkan pustaka open source yang telah dibahas. Topik: Permainan memelihara penguin (mirip dengan permainan Tamagochi) Lisensi: GPL Platform: Multiplatform Teknologi yang digunakan: diantaranya PyGame (SDL) Website: http://www.noprianto.com/taxtixtux.php
STUDY KASUS GAME Sebelum membangun game sendiri, ada baiknya kalau kita melihat sekilas berbagai game yang telah tersedia di Linux. Kita —utamanya—akan menyinggung teknologi apa yang digunakan dalam pembuatan game tersebut.
The Battle for Wesnoth
Website: http://www.wesnoth.org Tipe: turn-based strategy Platform: multiplatform Teknologi yang digunakan: di antaranya SDL (dan beberapa pustaka tambahan
Informasi game linux Berikut ini adalah beberapa website yang menyajikan informasi game di Linux: http://www.happypenguin.org/ http://www.linux-games.com/ http://freshmeat.net/browse/80/?topic_ id=80 Demikianlah pembahasan kita untuk rubrik “Utama” edisi ini. Selamat mencoba!
INFOLINUX 08/2006
37