JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
1
Perancangan dan Pembangunan Editor Level pada Pengembangan Permainan 3D Berteknologi XNA dalam Bentuk Add-in Visual Studio 2010 Mohammad Rian Arif Prakoso, Dwi Sunaryono, dan Suhadi Lili Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS) Jl. Arief Rahman Hakim, Surabaya 60111 Indonesia e-mail:
[email protected]
Abstrak—Industri pengembangan permainan mengalami perkembangan yang sangat pesat hingga sekarang dan memiliki pasar yang sangat luas, apalagi didukung pula oleh perkembangan berbagai perangkat yang dapat menjadi media permainan. Di bidang ini tentunya terjadi persaingan ketat antar pengembang satu sama lain. Mereka dituntut untuk meningkatkan produktivitas dalam mengembangkan permainan. Game engine memegang peran penting pada industri pengembangan permainan karena dapat menghasilkan permainan dengan kualitas yang baik dan cepat. Dengan game engine, melakukan pengembangan permainan menjadi sangat mudah karena memiliki fitur-fitur yang sangat bersahabat bagi pengguna, bahkan tanpa melakukan proses pemrograman. Agar game engine bisa mendukung banyak platform, biasanya pembuat game engine mensyaratkan untuk melakukan pemutakhiran agar bisa mengembangkan permainan di platform yang berbeda, dan biasanya proses pemutakhiran ini membutuhkan biaya. MonoGame, pustaka yang memiliki struktur sama persis dengan XNA sudah mendukung pengembangan permainan di banyak platform. Karena merupakan pustaka maka pengembangan permainan dengan tool ini membutuhkan proses pemrograman yang tentu saja berat dan memakan waktu sangat lama, apalagi permainan 3D. Penulis menawarkan solusi berupa tool yang menjaga aset pengembangan permainan pada level kode sumber tetap ada. Solusi ini adalah sebuah editor level yang berupa addin Visual Studio 2010, IDE (Integrated Development Environment) yang digunakan untuk pengembangan permainan dengan pustaka XNA. Dengan solusi ini, seluruh kode sumber akan tetap ada dan bisa dimanfaatkan ulang untuk melakukan pengembangan dengan pustaka lain yang serupa semacam MonoGame. Kata Kunci — 3D, Editor Level, Visual Studio, XNA.
I. PENDAHULUAN
P
ENGEMBANGAN permainan merupakan salah satu bidang serius dalam teknologi informasi. Sudah begitu banyak pengembang yang menggeluti bidang permainan. Para pengembang tersebut berlomba-lomba berkreasi mengembangkan permainan agar produk mereka diminati para penikmat permainan atau gamer. Sebuah permainan harus memiliki daya tarik tersendiri agar bisa diminati oleh gamer, bahkan membuat ketagihan atau adiktif. Agar menjadi permainan yang memiliki daya tarik, maka permainan tersebut haruslah menyenangkan, menantang, lucu, atau bahkan unik,
bergantung pada genre permainan. Salah satu teknologi permainan yang populer di kalangan pengembang permainan adalah XNA dan MonoGame. XNA adalah pustaka permainan yang dikembangkan oleh Microsoft. Pustaka ini digemari oleh para pengembang permainan, khususnya programmer, karena kemudahan penggunaannya dan memiliki performa yang baik. MonoGame dikembangkan oleh komunitas dan diimplementasikan secara open source dan mengadaptasi XNA sehingga memiliki struktur yang sama persis. MonoGame dapat digunakan untuk membangun permainan dengan target platform yang bervariasi, antara lain iOS, Android, Windows (baik OpenGL maupun DirectX), Mac OS X, Linux, Windows 8 Store, Windows Phone 8, PlayStation Mobile, dan OUYA Console. Struktur pustaka MonoGame disamakan dengan XNA disengaja agar para pengembang permainan XNA dapat dengan mudah memporting permainannya ke platform di luar Microsoft yang sama-sama dikembangkan dengan Integrated Development Environment (IDE) Visual Studio 2010. Pada makalah ini, penulis membuat kakas editor level untuk permainan 3D yang menjadi bagian dari Visual Studio 2010 dalam bentuk add-in. Add-in ini dilengkapi dengan fitur untuk menyunting level dalam permainan, seperti peletakan model 3D menjadi objek dalam level, pengaturan terrain, dan lainlain. Setiap aksi yang dilakukan dengan menggunakan add-in ini akan men-generate kode sumber dalam bahasa C# dan XNA yang akan menjadi kode sumber untuk dikompilasi menjadi permainan. Dengan begini, pengembang tetap bebas dan fleksibel untuk menyunting kode sumber hasil generate. Kode sumber ini juga diharapkan bisa digunakan kembali untuk mengembangkan permainan dengan MonoGame. II. KAJIAN PUSTAKA A. Desain Permainan Membangun permainan merupakan sebuah tantangan tersendiri karena membutuhkan imajinasi dan kreatifitas untuk membuatnya menjadi hidup dan menghibur orang lain. Kesenangan adalah kunci untuk memperoleh ide dalam membuat permainan. Akan tetapi, kesenangan bagi setiap
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) orang pasti berbeda-beda. Oleh karena itu, ada beberapa faktor yang perlu dipertimbangkan seperti opini orang-orang terhadap permainan yang bisa didapat dari situs-situs web tentang tinjauan permainan, genre yang akan dibuat, dan juga pendapat dari diri sendiri. Menurut Scott Rogers [1] secara garis besar metodologi pengembangan permainan adalah sebagai berikut. 1. Membangun ide 2. Menulis cerita 3. Merancang sistem 4. Merancang “Tiga C”: Character, Camera, Control 5. Merancang HUD (Head Up Display) dan icon 6. Implementasi Setelah mendapat ide permainan apa yang akan dibuat, yang perlu dilakukan selanjutnya adalah mendesain sistem. Berikut ini adalah beberapa hal yang perlu diperhatikan untuk mendesain sistem. 1. Gameplay 2. Tantangan Tantangan bisa berupa dalam salah satu atau kombinasi dari beberapa bentuk yang ada di bawah ini. a. Tantangan waktu. b. Tantangan ketangkasan. c. Tantangan kesabaran. d. Tantangan ingatan/wawasan. e. Tantangan logika. f. Tantangan pengendalian sumber daya. 3. Perulangan dan alur Apabila ide dan sistem sudah ditentukan, maka perlu dipikirkan aspek-aspek dari permainan yang antara lain adalah sebagai berikut. Karakter pemain. Lingkungan permainan, seperti terrain atau lahan, bangunan, pencahayaan, dan atmosfer Orang atau makhluk lain yang tidak dimainkan oleh pemain baik sebagai pihak pemain, netral, maupun musuh. Pada akhir dari permainan, perlu adanya sejumlah penghargaan yang diberikan kepada pemain. Pemain harus mendapatkan kesan yang baik di penutupan. Aplikasi pada tugas akhir ini membantu proses pengembangan permainan pada tahap implementasi level permainan yang mengandung aspek yang telah dijelaskan di atas. Sebuah permainan bisa terdiri hanya 1 level ataupun lebih, atau bisa juga dalam lingkungan permainan yang sama terdapat jenjang level yang berbeda-beda tergantung bagaimana sistem dirancang. Setelah mengimplementasi level, selanjutnya adalah melakukan finishing dengan mengimplementasi sistem yang telah dirancang seperti navigasi antar level, fitur penyimpanan permainan, petunjuk permainan, pesan-pesan yang disampaikan saat pemain menang atau kalah, dan sebagainya [1]. B. Aplikasi Editor Model 3D Aplikasi editor model 3D adalah aplikasi yang digunakan untuk membuat dan memodifikasi model 3D. Model 3D
2
merepresentasikan objek 3D dengan menggunakan himpunan titik dalam ruang 3D yang saling dihubungkan satu sama lain dengan beragam entitas geometri, seperti segitiga, garis, kurva, dan lain-lain. Aplikasi editor model 3D sudah banyak dikembangkan untuk kebutuhan penyuntingan model 3D sebagai aset dari permainan berbasis 3D, seperti Blender yang gratis dan memiliki kode sumber bebas, dan 3DS MAX. Game engine yang dikembangkan dewasa ini pula sebagian besar mengandung fitur penyuntingan ini, seperti Unity dan Unreal. Aplikasi seperti Blender dan Unity memiliki tampilan editor yang mirip, dimana secara default pengguna akan melihat tampilan ruang 3D secara perspektif ataupun ortogonal. Objek yang akan dibuat maupun dimodifikasi harus diletakkan terlebih dahulu di ruang tersebut dengan transformasi berupa posisi atau translasi yang mengacu pada titik (0, 0, 0) dan rotasi. Pengguna bisa memodifikasi transformasi ini dengan bantuan garis-garis yang mewakili masing-masing sumbu (x, y, dan z) yang berada di sekeliling model yang dipilih. C. .NET Framework 4.0 .NET adalah bagian integral dari banyak aplikasi yang berjalan pada Windows dan menyediakan fungsionalitas umum terhadap aplikasi tersebut. .NET Framework adalah framework perangkat lunak yang jalan di atas sistem operasi Windows dan platform pengembangan aplikasi yang menyediakan layanan-layanan untuk pembangunan, deploy, dan menjalankan aplikasi desktop, web, aplikasi telepon, dan web service. .NET Framework terdiri dari common language runtime (CLR), yang menyediakan manajemen memori dan berbagai layanan sistem, dan pustaka luas yang menyediakan kode teruji, dapat digunakan ulang untuk semua area umum dalam pengembangan aplikasi. .NET Framework memperkenalkan common type system, atau CTS. Spesifikasi CTS mendefinisikan semua kemungkinan tipe data dan konstruksi pemrograman yang didukung oleh CLR dan bagaimana mereka dapat atau tidak dapat berinteraksi satu sama lain sesuai dengan spesifikasi common language infrastructure (CLI). Dengan begini, .NET Framework mendukung pertukaran tipe dan instansiasi objek antara pustaka dan aplikasi yang ditulis dengan bahasa-bahasa pemrograman yang didukung, seperti C#, VB.NET, dan F# [2]. D. XNA XNA adalah seperangkat tools yang bekerja secara managed runtime environment yang disediakan oleh Microsoft untuk memfasilitasi pengembangan dan manajemen permainan. XNA berbasis .NET Framework, yang berjalan pada Windows, Windows Phone, dan XBox. Dalam banyak hal, XNA dikenal sebagai analogi .NET terhadap sistem pengembangan permainan yang lebih dikenal, DirectX, tetapi ditujukan kepada pengembang yang terutama tertarik untuk membuat permainan ringan yang berjalan pada banyak platform Microsoft. XNA merupakan platform basis untuk XNA Live Indie Games. XNA mengenkapsulasi detail teknologi kelas bawah dalam penulisan kode permainan, menjamin framework ini sendiri
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
Membuka Visual Studio 2010
3
Melakukan pengaturan terrain
Melakukan tata letak objek pada level
Membuat/membuka proyek XNA
Membuat jalan Desainer Permainan
Membuka add-in
Menambah komponen fisika pada objek
Menambahkan kode sumber pengontrol
Melakukan desain permainan dengan add-in
Programmer Memodifikasi kode sumber permainan
Add-in membangkitkan kode sumber
Gambar 2. Diagram kasus guna editor Programmer Memodifikasi kode sumber
3D diproyeksikan ke layar secara perspektif atau ortogonal.
Mengompilasi proyek
Gambar 1. Diagram alir XNA Level Editor
menjaga perbedaan platform dimana permainan di-porting antara satu platform dengan lainnya, dan karenanya bisa membuat pengembang untuk lebih fokus pada konten dan gameplay. XNA mengintegrasikan beberapa tools, seperti Cross-platform Audio Creation Tool (XACT), untuk membantu pembuatan konten. XNA menyediakan dukungan untuk pembuatan permainan 2D dan 3D [3]. E. Visual Studio Visual Studio 2010 adalah sebuah integrated development environment dari Microsoft. Visual Studio adalah kumpulan lengkap tools untuk membangun aplikasi web ASP .NET, web service XML, aplikasi desktop, dan aplikasi mobile. Visual Studio mengandung editor kode dengan dukungan IntelliSense sebagai refaktorisasi kode. Debugger terintegrasi bekerja pada source-level dan machine-level. Terdapat juga tools lain yang disertakan seperti desainer form, desainer web, desainer kelas, dan desainer skema basis data. Visual Studio juga menerima plug-in atau add-in yang bisa menambah fungsionalitas pada hampir tiap level, termasuk menambah dukungan untuk sistem source-control (seperti Subversion) dan menambah toolsets baru seperti editor dan desainer visual untuk bahasa domain yang lebih spesifik atau toolsets untuk aspek pengembangan perangkat lunak lainnya (seperti klien Team Foundation Server: Team Explorer) [4]. F. Perhitungan Vektor dan Matriks pada 3D Pustaka XNA dan kebanyakan pustaka pemrograman 3D lainnya menggunakan matriks dan vektor untuk mendeskripsikan transformasi model di ruang 3D. Matriks Matriks pada XNA digunakan untuk transformasi geometri. Setidaknya ada tiga macam transformasi yang perlu didefinisikan untuk me-render model 3D, antara lain: 1.
2. 3.
transformasi objek itu sendiri yang oleh XNA dinamakan sebagai World yang merupakan hasil kalkulasi dari skala, rotasi, dan translasi, transformasi dari sudut pandang pengguna atau kamera yang dinamakan oleh XNA sebagai View, dan transformasi proyeksi yang berisi parameter yang akan memberi tahu perangkat grafis bagaimana ruang
Di XNA, matriks ini didefinisikan dalam sebuah kelas yang memiliki atribut elemen dari matriks yang berukuran 4x4 dan beberapa fungsi pembantu semacam fungsi untuk membuat matriks translasi, rotasi, dan skala, membuat invers, membuat matriks perspektif atau ortogonal, dan lain-lain. Vektor Vektor adalah struktur yang secara khusus digunakan untuk merepresentasikan arah.Vektor yang digunakan pada ruang 3D disebut vektor 3D, yang memiliki tiga elemen arah sesuai sumbu pada ruang 3D. Transformasi dari model 3D yang terdiri dari skala, rotasi, dan translasi dapat direpresentasikan dalam bentuk vektor. Bisa dibilang transformasi yang direpresentasikan dalam bentuk vektor ini merupakan bentuk mentah, dimana nantinya kombinasi dari tiap komponen transformasi ini diubah menjadi bentuk matriks yang dibutuhkan oleh pustaka XNA. Dari sisi operasi perhitungan vektor juga memiliki keuntungan dibanding dengan metode perhitungan lain seperti dengan menggunakan persamaan linear. III. ANALISIS DAN DESAIN A. Analisis Sistem Add-in yang akan dikembangkan adalah tools untuk melakukan editing level pada pengembangan permainan 3D pada Microsoft Visual Studio 2010. Add-in ini akan tampil sebagai jendela di dalam Visual Studio yang menampilkan visualisasi dari kode sumber pada proyek XNA dengan sudut pandang yang bisa diatur dan memiliki alur seperti pada Gambar 1. Pada jendela ini toolbar atau menu-menu untuk membantu pengembang dalam mendesain level permainan. Dengan begitu, pengembang akan semakin mudah untuk mengembangkan permainan 3D dengan adanya fitur-fitur seperti peletakan aset model 3D berformat *.fbx menjadi objek dalam level, melakukan pengaturan terrain, memberikan efek fisika ke objek yang ditentukan, dan menambahkan skrip kontrol dari tiap objek. Spesifikasi kebutuhan dari sistem dijelaskan di bawah ini dan rancangan kasus guna sistem dapat dilihat pada Gambar 2.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print)
Visual Studio 2010
Add-in
Extensibility
XNA Gambar 3. Desain arsitektur XNA Level Editor XnaLevelEditor
View XleGenerator
EditorModel
Gambar 4. Desain arsitektur paket
a. b. c. d. e. f.
Menampilkan terrain dan objek-objek 3D secara perspektif dan ortogonal. Mengatur ketinggian di area-area tertentu pada terrain. Mengatur transformasi objek 3D. Menambahkan komponen fisika pada objek 3D. Menambahkan skrip pengontrol pada objek 3D. Membangkitkan kode sumber permainan.
B. Desain Sistem Add-in mengimplementasi interface IDTExtensibility2 dari namespace Extensibility dari Visual Studio 2010 yang memperbolehkan add-in untuk mengakses event add-in, misal salah satunya adalah event OnConnection yang akan berjalan saat Visual Studio memuat add-in. Selain itu, add-in ini tentunya juga akan mengacu pada pustaka XNA agar dapat memvisualisasikan model 3D pada jendela add-in. Arsitektur ini diilustrasikan seperti pada Gambar 3. Perangkat lunak ini sendiri dibangun secara berorientasi objek. Kelas-kelas yang sejenis dikelompokkan menjadi paketpaket. Antara satu paket bisa dependsi dengan yang lain. Dengan begitu, dependensi antar paket bisa dilihat agar dapat membantu proses pengembangan agar bisa dibangun secara runtut dalam tiap iterasi pengembangan dengan urutan dari paket merupakan dependensi dari paket lain. Desain arsitektur paket ini dapat dilihat pada Gambar 4. Perangkat lunak ini dibagi menjadi empat paket, antara lain: 1. EditorModel: berisi kelas-kelas yang mendefinisikan data-data yang dibutuhkan dalam perangkat lunak, 2. View: berisi kelas-kelas yang merupakan implementasi antarmuka pengguna perangkat lunak, 3. Generator: berisi kelas-kelas yang memiliki fungsi untuk membangkitkan kode sumber pada target project
4
permainan, dan 4. XnaLevelEditor: paket yang berhubungan dengan antarmuka Visual Studio. Permainan yang dibangkitkan tentunya memiliki data dan membutuhkan pustaka kode sumber terbuka untuk mendukung fitur-fitur yang umum dimiliki permainan, seperti sistem fisika dan model 3D yang memiliki animasi. Untuk itu, diperlukan pakem yang tetap yang akan menjadi dasar pembangkitan kode sumber permainan. C. Desain Diagram Kelas Perangkat lunak ini dibangun dengan berdasar pada beberapa pola perancangan yang dikenalkan oleh Gang of Four, sebutan bagi penemunya yang terdiri atas empat orang antara lain Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. Pola yang dipakai antara lain pola Observer, pola State, dan pola Mediator [5]. Pola Observer mendefinisikan dependensi one-to-many antara objek sehingga satu objek berubah, semua objek yang dependensi kepadanya akan diberitahu dan memperbaharui dirinya mengikuti objek itu. Pola ini digunakan pada kamera dengan panel editor, objek 3D dengan panel properti objek, dan lain-lain. Pola State memungkinkan sebuah objek merubah perilakunya, dilakukan dengan cara mengganti kelasnya atau tipe datanya. Pola ini berguna pada penggunaan mode penyuntingan karena aksi dari pengguna ke aplikasi akan berbeda sesuai mode yang sedang aktif. Pola Mediator mendefinisikan bagaimana antar objek berinteraksi satu sama lain sehingga tiap objek tidak perlu menyimpan semua referensi objek, cukup satu objek dan objek lainnya menyimpan referensi ke satu objek itu. Pola ini salah satunya digunakan pada objek mode penyuntingan yang akan selalu membutuhkan untuk mengakses properti yang ada pada panel editor sebagai Mediator. IV. KESIMPULAN/RINGKASAN Dari perancangan XNA Level Editor sebagai add-in Visual Studio ini diperoleh kesimpulan sebagai berikut. 1. Add-in pada Visual Studio 2010 dibangun dengan cara membuat turunan dari interface IDTExtensibility2 dari pustaka Extensibility di Visual Studio 2010 dan diberi asosiasi dengan Windows Form yang mereferensi pada pustaka XNA. 2. Aplikasi ini membangkitkan kode dari perilaku yang ada pada tiap objek dan terrain, lalu dituliskan pada kelas yang dipilih. Kode dibaca kembali dengan mem-parse tiap baris kode pada kelas dengan pola Regex yang digunakan mengambil data yang dibutuhkan untuk membangun kembali ruang 3D. UCAPAN TERIMA KASIH Penulis M.R.A.P. mengucapkan terima kasih Allah SWT, kedua orang tua, saudara, para dosen ITS, kerabat dekat, serta berbagai pihak yang telah membantu penulis dalam melaksanakan penelitian ini.
JURNAL TEKNIK POMITS Vol. 2, No. 1, (2013) ISSN: 2337-3539 (2301-9271 Print) DAFTAR PUSTAKA [1] Scott Rogers, Level Up! The Guide to Great Video Game Design. United Kingdom: John Wiley & Sons, Ltd., 2010. [2] Microsoft MSDN. (2010). .NET Framework 4. [Online]. Available: http://msdn.microsoft.com/enus/library/w0x726c2%28v=vs.100%29.aspx [Diakses: 28 Februari 2013] [3] Microsoft MSDN. (2010). XNA Game Studio 4.0. [Online]. Available: http://msdn.microsoft.com/enus/library/bb200104%28v=xnagamestudio.40%29.aspx [Diakses: 1 Oktoboer 2013] [4] Microsoft MSDN. (2010). Introducing Visual Studio. [Online]. Available: http://msdn.microsoft.com/enus/library/fx6bk1f4%28v=vs.100%29.aspx [Diakses: 28 Februari 2013] [5] Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Design Pattern - Elements of Reusable Object-Oriented Software. Reading, Massachusetts, US: Addison Wesley Longman, Inc, 1994.
5