01 September 2018

Membangun Client Side


Untuk dapat memainkan sebuah game MMO, kita membutuhkan game client, biasanya berisi file executable (EXE), file game asset yang ter-enkripsi, dan file-file pendukung seperti dll. BGM, dan patcher. Biasanya disediakan Publisher agar bisa didownload dan dimainkan oleh Player.

Pada Ragnarok Online private server, biasanya kamu membutuhkan custom client sendiri, selain client official, agar dapat bermain. Custom client mendukung private server mu agar memiliki identitas server mu sendiri. Seperti misalnya, pada saat membuka game, player akan logo server mu pada tampilan login screen. Walaupun tanpa Custom client ini kamu tetap dapat bermain dengan menggunakan Hexed Client dan mengedit clientinfo.xml.

Ragnarok Online menggunakan file ekstensi GRF sebagai media enkripsi data-data gamenya, ketika kamu menjalankan Ragnarok.exe, maka game akan membaca file grf tersebut agar game bisa berjalan. Biasanya file grf ini berisi data-data seperti sprite karakter, sprite item, dan Map beserta grafik pendukung seperti thumbnail item, deskripsi item, dan lain-lain. Ragnarok Online menggunakan data.grf sebagai file enkripsi. Pada versi terdahulu ada grf tambahan seperti sdata.grf dan rdata.grf. Dan pada saat event-event khusus berlangsung biasanya terdapat grf tambahan seperti event.grf.

Hal-hal yang dibutuhkan dalam membuat custom client / Custom GRF mu sendiri, yaitu:
1. grf builder : Download dari Ratemyserver
2. Translated Data Folder (Pilih salah satu sesuai konsep private server mu)
3. clientinfo.xml
Template : https://github.com/HerculesWS/Hercules/wiki/Clientinfo.xml


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version="1.0" encoding="euc-kr" ?>
<clientinfo>
 <desc>Ragnarok Client Information</desc>
 <servicetype>korea</servicetype>
 <servertype>sakray</servertype>
 <hideaccountlist />
 <passwordencrypt />
 <passwordencrypt2 />
 <extendedslot />
 <readfolder />
 <connection>
  <display>SERVER NAME HERE</display>
  <desc>Ragnarok Online</desc>
  <balloon>this is a tool tip</balloon>
  <address>SERVER IP HERE</address>
  <port>6900</port>
  <version>20</version>
  <langtype>1</langtype>
  <registrationweb>REGISTRATION URL HERE</registrationweb>
  <yellow>
   <admin>2000001</admin>
   <admin>2000002</admin>
   <admin>2000003</admin>
  </yellow>
  <loading>
   <image>loading00.jpg</image>
   <image>loading01.jpg</image>
   <image>loading02.jpg</image>
   <image>loading03.jpg</image>
   <image>loading04.jpg</image>
   <image>loading05.jpg</image>
   <image>loading06.jpg</image>
   <image>loading07.jpg</image>
   <image>loading08.jpg</image>
   <image>loading09.jpg</image>
   <image>loading10.jpg</image>
  </loading>
 </connection>
</clientinfo>

Kamu hanya perlu membuatnya seperti ini menggunakan Notepad++

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?xml version="1.0" encoding="euc-kr" ?>
<clientinfo>
<servicetype>korea</servicetype>
<servertype>primary</servertype>
   <connection>
      <display>NamaRO</display>
      <balloon></balloon>
      <desc></desc>
      <address>127.0.0.1</address>
      <port>6900</port>
      <version>30</version>
      <langtype>1</langtype>
      <registrationweb></registrationweb>
 <loading>
 <image>Loading00.jpg</image>
 <image>Loading01.jpg</image>
 <image>Loading02.jpg</image>
 <image>Loading03.jpg</image>
 <image>Loading04.jpg</image>
 <image>Loading05.jpg</image>
 <image>Loading06.jpg</image>
 <image>Loading07.jpg</image>
 <image>Loading08.jpg</image>
</loading>
      <aid>
 <admin></admin>
       </aid>
   </connection>
</clientinfo>
Save dengan nama clientinfo.xml pada Notepad++, dan masukan ke dalam folder data yang sudah kamu download.

NOTE : Hapus ID pada (2000001 dan seterusnya) jika kamu tidak menginginkan ID tersebut menggunakan sprite Game Master (GM). Ganti IP pada address sesuai WAN IP atau Nama Domain (misal www.ragnarokku.com) mu jika kamu menggunakan server ini untuk Online, LAN IP jika ingin bermain LAN, dan 127.0.0.1 atau localhost jika kamu ingin bermain sendiri.


Cuma itu saja ? yap, kecuali kamu ingin menambah grafik custom, kamu akan membutuhkan aplikasi untuk mengedit gambar seperti Adobe Photoshop atau GIMP.

Langkah-langkah untuk membuat custom client mu adalah sebagai berikut

  • Download Translated Data Folder (Pilih salah satu), struktur utama folder selalu bernama data, Tapi kamu selalu bisa menggantinya dengan nama lain. Didalam folder data terdapat folder dan file-file yang digunakan didalam GRF.
  • Data folder dengan struktur lengkap

  • Download dan jalankan aplikasi GRF Builder (grfbuilder.exe) 
    Tampilan GRF Builder versi 0.1.30
  • klik New pada toolbar, lalu tentukan lokasi file grf yang akan dibuat, isilah nama file sesuai keinginanmu, misalnya MyData.grf (NOTE: ekstensi .grf harus diketik juga)
  • klik Merge dir pada toolbar, cari dimana kamu menyimpan Translated Data Folder yang sudah kamu download. Klik (sekali) pada nama folder tersebut lalu klik Ok. Tunggu sampai aplikasi selesai membaca.
  • Terakhir, klik Repack pada toolbar. Tunggu sampai proses selesai.

  • Sampai disini, kamu sudah berhasil membuat custom client / custom GRF mu sendiri, Happy RO !

    31 Agustus 2018

    Membangun Server dan Database (Personal Computer/OFFLINE)

    Cara kerja server side dan client side

    Server pada dasarnya adalah sebuah komputer yang menyimpan data-data yang dapat diakses dan diproses oleh game engine pada client side. Pada RO, Server digunakan sebagai akses data player juga menyimpan segala jenis riwayat seperti pick log, chat log, dan lain-lain. Server juga bisa digunakan sebagai Website/Portal.

    Pada Artikel ini, saya akan menjelaskan bagaimana caranya untuk membuat Private Server menggunakan OS WINDOWS untuk bermain sendiri atau bermain bersama dengan LAN (OFFLINE)

    Langkah Pertama

    yang kamu butuhkan adalah, mendownload file Emulator pilihan kamu.

    Pada Windows, biasanya kamu akan membutuhkan program tambahan seperti TortoiseGit, kamu bisa langsung mendownload archive dalam bentuk Zip,


    Men-download langsung dalam bentuk ZIP, tanpa menggunakan TortoiseGit (pada OS Windows) 

    Tapi, lebih disaran untuk mendownload dengan menggunakan TurtoiseGit, langkahnya ikuti pada masing-masing emulator yang kamu pilih :

    • Cara download dan install rAthena dengan TurtoiseGit : Klik Disini
    • Cara download dan install Hercules dengan TurtoiseGit : Klik Disini


    Langkah Kedua, mengatur interkoneksi antar server.

    Ragnarok Online menggunakan server berbasis AEGIS, dimana terdapat tiga server yang saling berhubungan yaitu, 

    • Login Server, memproses data ketika ID dan Password di input.
    • Char Server, memproses data karakter yang ada didalam ID
    • Map Server, memproses karakter dan Script-script seperti NPC, monster, warp portal, dan lain-lain.


    NOTE :

    • Jika Login Server mati, ID yang berhasil login tetap bisa memilih karakter dan melanjutkan permainan seperti biasa didalam dunia game.
    • Jika Char Server mati, ID yang berhasil login, memilih karakter, dan berhasil masuk kedalam game, tetap dapat bermain, namun, segala update seperti naik level, perubahan stat, perubahan skill, dan item yang didapat tidak akan tersimpan (roll back).
    • Jika Map Server mati, ID tetap dapat proses dan bisa memilih karakter, namun, karakter tidak dapat masuk ke dunia game, semua karakter yang berhasil masuk kedalam server akan keluar dari game (Disconnect).

    Pada versi emulator terdahulu, kamu bisa langsung merubah settingan interkoneksi server dengan merubah beberapa file, namun, untuk beberapa versi terbaru, kamu harus melakukan compile terlebih dahulu.

    Pada OS Windows (Hanya support Visual Studio 2013 keatas),

    • Download versi terbaru Visual Studio (pada saat tulisan ini dibuat, Penulis menggunakan Microsoft Visual Studio 2015 Community Edition), setelah selesai men-download, Install. 
    • Pada rAthena, buka rAthena.sln pada folder rAthena mu,
    • Pada Hercules, Buka Hercules-12.sln jika kamu punya MS Visual Studio 2013, buka Hercules-14.sln jika kamu punya MS Visual Studio 2015, buka Hercules-15.sln jika kamu menginstall MS Visual Studio 2017 (Perhatikan versi Visual Studio yang kamu install !)
    • Cari Debug (pada tanda merah), rubah ke Release 

    • Klik kanan Solution Mode (pada tanda biru), pilih Build solution. Jika kamu sudah pernah meng-compile server mu, pilih Rebuild solution (akan berguna nanti jika kamu merubah source file).
    • Tunggu sampai proses compile selesai, kecepatan waktu compile tergantung dari spek komputer kamu.
    • Jika proses compile selesai, periksa folder rAthena / Hercules mu, periksa adakah login-server.exe, char-solution.exe, map-server.exe, dan mapcache.exe. Bila tidak ada, berarti proses compile gagal.

    Untuk Linux, maaf penulis belum pernah mencoba menggunakan OS Linux / Unix pada Personal Computer, silahkan mengecek dokumentasi pada masing-masing emulator yang akan kamu gunakan.

    Istirahat sebentar ya, sampai disini kamu sudah berhasil mempersiapkan server mu, untuk melanjutkan ke tahap selanjutnya, kamu membutuhkan SQL Server sebagai database. Mungkin beberapa dari kamu pernah mendengar TXT Server dan SQL Server untuk versi eAthena. Dimana kamu mendownload TXT Server jika ingin bermain secara lokal / LAN / offline, dan mendownload SQL Server jika ingin benar-benar menjadi sebuah Ragnarok Online dan orang lain bisa bermain dari kejauhan.

    Sejak rAthena mulai berkembang (sebelum beberapa staff terpecah dan membangun saingannya Hercules), pada update revisi r15503, rAthena berhenti mensupport TXT Server. Sebagai gantinya, rAthena merilis aplikasi bernama rAsql, dimana para developer tidak perlu repot-repot membangun webserver beserta SQL Server dalam mengembangkan PSRO nya. rAsql hanya berfungsi sebagai mySQL portable, kamu tetap bisa menggunakannya untuk bermain LAN.

    Langkah Ketiga, Membuat Database.

    Oke, masuk ke tahap selanjutnya, yaitu membuat database untuk server kamu. Karena menggunakan mysql server membutuhkan webserver dan membuatnya agak merepotkan, kita hanya perlu mendownload rAsql sebagai database untuk database. rAsql pada dasarnya dibuat oleh tim developer rAthena menggunakan HeidiSQL Portable, namun jika Hercules adalah pilihan emulator mu, kamu tetap dapat menggunakan aplikasi tersebut.

    Menggunakan rAsql.

    • Download rAsql melalui TortoiseGit atau download file ZIP nya langsung
    • Setelah terdownload, buka folder rAsql mu, jalankan start_mysql.bat, tunggu beberapa saat hingga muncul jendela login form.
    • Default Username = ragnarok, password = ragnarok.
    • Isi Username dan password, lalu pilih login, jika ada confirmation form muncul, pilih saja NO (don't save), setelah itu akan muncul jendela baru yang lebih besar (HeidiSQL Portable).

    • Pada kolom kiri, klik kanan pada Unnamed (Kalau kamu tidak merubah apapun saat login), lalu pilih Create New, kemudian Database.
    • Isi nama database yang kamu inginkan (disini penulis menggunakan nama fn2016), tidak perlu menggunakan huruf kapital, agar mudah dihapal.
    • Alternatif lain, kamu bisa menggunakan Database ragnarok yang sudah default ada di dalam SQL.
    • Klik pada Database yang sudah kamu buat, kolom sebelah kanan masih terlihat kosong.
    • Pada kolom sebelah kanan, pastikan label Database: mu sudah terklik, kemudian klik menu Import dan klik Load SQL Files.

    • Cari folder rAthena / Hercules, lalu buka folder sql-files, kamu akan melihat beberapa file seperti dibawah untuk Hercules. Untuk rAthena, memiliki file lebih banyak, yaitu adanya item_shop_db, item_shop_db2, dan Roulette_default_data. Perhatikan pula untuk beberapa file seperti item_db dan mob_db, terdapat file item_db_re dan mob_db_re,.Re disini berarti Renewal, yang artinya, isi file tersebut berisi data-data yang dibutuhkan jika kamu akan menggunakan renewal sebagai mode game (3rd Job).

    • TIdak ada urutan yang spesifik untuk mengimport SQL file tersebut, kamu juga bisa memasukan sekaligus semua file dengan menggunakan CTRL+Klik kiri, namun, akan lebih baik jika kita masukan satu persatu sambil mengerti apa saja isi file tersebut. Berikut adalah urutan yang biasa penulis lakukan saat import data SQL. 
      (NOTE: Setiap kali memilih memilih file, pastikan kamu menekan tombol  Execute SQL (Tombol play berwarna biru pada toolbar, dan tunggu sampai proses selesai sebelum meng-import file lain).
    • main.sql - berisi table untuk data yang berhubungan dengan ID, character, guild, dan lain-lain
    • item_db, item_db_re, dan item_db2 - berisi table data-data item,
    • mob_db, mob_db_re, dan mob_db2 - berisi table data-data monster,
    • mob_skill_db, mob_skill_db_re, dan mob_skill_db2 - berisi table data skill monster
    • logs.db - berisi table untuk riwayat server mu, seperti chat_log, pick_log, dan zeny_log yang akan berguna untuk mencari kecurangan pada GM mu, hehe
    • untuk rAthena, masukan file sisanya yaitu, item_shop_db, item_shop_db2, dan Roulette_default_data
    • Setelah satu persatu file SQL kamu import, klik tombol Refresh pada toolbar, lalu pilih nama Database mu pada kolom sebelah kiri. Sekarang database harusnya sudah terisi table-table database yang kamu perlukan untuk menjalankan Private Server mu.



    • Selanjutnya, cari table login pada kolom sebelah kanan lalu klik 2x pada table tersebut. Lalu klik Label Data seperti gambar dibawah. Dan kamu akan melihat ada data default dengan Account ID 1, nama ID s1, password nya p1, untuk sementara, kamu tidak perlu merubah ini, tapi nanti, jika kamu berniat untuk membuat servermu Online, maka kamu harus merubah ID dan Password tersebut. (NOTE : Sex, S, = Server, M = Male, F = Female). Table login berisi data-data seperti ID, password, email, last login, dan lain-lain (Kamu bisa melihat-lihat sendiri hehe). 

    • Untuk sementara, kita tinggalkan dahulu rAsql terbuka dan pindah ke tahap selanjutnya.

    NOTE : rAsql bisa di duplikasi, namun beda folder, maka beda pula isi database yang akan muncul saat mysql dibuka.


    Langkah Keempat, Menghubungkan Server dan Database.

    Langkah terakhir adalah merubah file config, untuk bermain secara offline kita tidak memerlukan banyak perubahan, pastikan kamu sudah mendownload dan menginstall Notepad++ untuk memudahkan pekerjaanmu. Jika belum, cek kembali artikel Membangun Private Server Ragnarok Online.

    Masuk kedalam rAthena / Hercules, dan buka folder conf, periksa apakah folder import sudah ada atau belum, jika belum buatlah folder bernama import (huruf kecil semua). dengan folder import, kamu tidak perlu bolak balik scroll config yang mau dirubah, karena isi file confignya lumayan penuh dengan deskripsi masing-masing fungsi.

    Buka aplikasi Notepad++, buat file baru melalui menu New (CTRL+N) pada Notepad++

    (NOTE: Jika folder import dan isinya sudah ada sedari awal, kamu cukup membuka file-file dibawah satu persatu ke Notepad++)

    - char_conf

    • Pada char_conf, kamu harus merubah username dan password (Default, username = s1, password = p1), kamu juga bisa merubah nama server, dan menambah huruf, angka, dan simbol yang dapat digunakan pada saat membuat Karakter. Pada file ini kamu juga bisa merubah senjata, armor, dan zeny awal, juga posisi koordinat spawn pertama kali setelah membuat karakter baru.

    • userid dan passid ini harus sama dengan yang ada didatabase, jika kamu tidak merubahnya di database, kamu tidak perlu merubah yang di config.
    • Nama server tidak boleh ada spasi, nama server akan muncul saat kamu memilih server dan saat karakter masuk kedalam game.
    • login_ip dan char_ip default adalah 127.0.0.1 (atau localhost), pada beberapa tutorial mengharuskan kamu untuk menggunakan LAN IP komputer kamu, misalnya 192.169.0.2, tapi server akan tetap berjalan dengan IP default yang disediakan
    • Save, bila kamu belum punya file char_conf pada folder import, buatlah file tersebut dengan file type : All type.


    - map_conf

    • Sama seperti char_conf, userid dan passid harus sama dengan yang ada di database.
    • char_ip disini tetap default 127.0.0.1
    • map_ip diharuskan menggunakan WAN IP pada beberapa tutorial, namun untuk saat ini, biarkan saja default 127.0.0.1
    • Save, bila kamu belum punya file map_conf pada folder import, buatlah file tersebut dengan file type : All type.


    - inter_conf

    • inter_conf berisi pengaturan untuk koneksi login-server, char-server, map-server, dan logs ke database.
    • Pada file ini, kamu cukup masukan username dan password MYSQL pada masing-masing server, dan rubah nama database sesuai dengan nama database mu. (Disini saya menggunakan fn2016 sebagai nama database).

    • Save, bila kamu belum punya file inter_conf pada folder import, buatlah file tersebut dengan file type : All type.

    Selesai

    Sampai disini seharusnya kamu sudah dapat untuk menjalankan servermu. Untuk menjalankan servermu, buka folder rAthena / Hercules, lalu klik run-server.bat, atau klik satu persatu secara berurutan login-server.exe, char-server.exe, terakhir map-server.exe.

    Untuk beberapa OS Windows, biasanya akan ada jendela warning dari Firewall. Pastikan kamu mengizinkan semua network untuk menjalankan server.


    Jika berhasil, kamu akan melihat ketiga server menampilkan Status login / char / map server is ready. Selamat! kamu sudah berhasil dan bisa melanjutkan ke tahap selanjutnya.


    Troubleshooting.

    Problem : Server tidak jalan / auto close 
    Solusi : Periksa pesan error sebelum jendela tertutup, atau periksa apakah mysql sudah jalan atau belum.

    Problem : SQL Error Access Denied
    Solusi : Periksa inter_conf, apakah username dan password sudah benar atau tidak.

    Problem : File login-server.exe, char-server.exe, dan map-server.exe tidak ada
    Solusi : kamu belum benar dalam proses compile, coba ulangi.

    Menghentikan Server.
    Untuk menghentikan server, kamu cukup meng-close satu persatu jendela server. Untuk menghentikan rAsql buka folder rAsql kamu, dan klik mysql-stop.bat.