Beginner Guide to RGSS3

download Beginner Guide to RGSS3

of 52

description

for newbie

Transcript of Beginner Guide to RGSS3

  • Beginner Guide to RGSS3

    1

    Beginner Guide to RGSS3 By : Theo Allen ~

    (WARNING: This tutorial has been written in informal Indonesian language. Do not ever ask the google to translate it!)

    Prelude : Tutorial ini wa bikin buat kaum2 para RPG Maker user yang masih bener2 awam

    dari yg namanya bahasa pemrograman. Terutama versi VX Ace. Well, gw bukannya

    udah pinter ngebikin kaek gini, at least gw punya ilmu buat dibagi. Gw sendiri

    sbenernya juga masih belajar dalemnya RGSS3 tu ada apa aja. Ah gitu aja deh, g

    usah panjang2 :>

    Requirement : - RPG Maker VX Ace (bukan RPG Maker lain. Karena Ace punya console)

    - Siap mental.

    - Ada waktu.

    - Willpower!

  • Beginner Guide to RGSS3

    2

    Persiapan selesai. Coba testplay RMVXA-mu. Kamu akan menemukan dua hal

    yg berbeda di sana. Pertama, kamu akan nemuin window RGSS console yang

    isinya kosong. Kedua, u ga bisa masuk game. Dan not responding. Well, itu bukan

    masalah sih, emang gitu. Lagian yg penting tu liat RGSS consolenya ntar.

    Btw, untuk lesson2 awal ini kita ngga nyentuh RGSS3 dulu. Wa mau bahas

    Ruby secara general sbelum masuk ke library RGSS3. Jadi yang sabar. Ga usah

    keburu-buru kepikiran Gw pengen bikin menu / battle system kaek gini gitu dll dll .

    Oh iya. Sekedar info dan saran. Belajar script itu tidak cukup dipelajari cuman

    seminggu trus langsung bisa nyekrip dan modif RGSS3. Well, wa rekomendasiin

    sering2 aja dibaca, dicoba, dicatet biar g lupa. Dan lakuin terus selama minimal

    sebulan lah. Ntar kalo dah ngerti dan terbiasa, otomatis nulis fungsi2 script dah

    diluar kepala.

  • Beginner Guide to RGSS3

    3

    Chapter 1: Ruby Basic Syntax

    Lesson 1 : Hello World Seperti tradisi awal permulaan belajar bahasa pemrograman. Kita awali dengan

    bikin print out Hello World. Well, here u go ~

    Ketik kaek gitu, dan jalanin lewat testplay. Ntar munculnya bakal kyak gini

    Things to know :

    - Puts itu fungsi buat ngeprint out. Printout biasanya berguna buat debugging /

    mbenerin program kalo ada kesalahan

    - Setelah puts itu bisa u tulisin apa aja. Misalnya kaek Gw ganteng ato apa

    aja. :v

    Lesson 2 : Getting Input from User Sekarang coba kalo kata2nya berupa inputan dari user. Kayak gini codenya :

    Nanti pas u testplay keluarannya kaek gini.

  • Beginner Guide to RGSS3

    4

    Things to know :

    - Disini meski print ama puts punya fungsi sama, sbenernya print itu ngeprint

    tanpa make line break / enter setelah selesai ngeprint.

    - gets disini artinya nunggu masukan dari user. Masukan itu ntar disimpen

    dalam sebuah variable yang namanya name.

    - Di line berikutnya, ada #{}. Tanda kurung yg didepannya ada pagar itu

    gunanya buat ngeprint isi dari sebuah variable. Kalo dalam kasus ini, nilai

    variable yg diprint adalah name.

    Lesson 3 : Variable Type Seperti yang wa jelasin di lesson sebelumnya. Variable tu gunanya buat

    nyimpen2 nilai ato something. Di lesson ini ntar w jelasin tipe-tipe variable berdasar

    apa yang dia simpen.

    Things to know :

    - Variable o menyimpan nil. Artinya variable itu bertipe nil (Kosong).

    - Variable v menyimpan 10. Artinya variable itu bertipe Integer (Bilangan bulat)

    - Variable x menyimpan 10.8. Artinya variable itu bertipe Float (Bilangan

    pecah)

    - Variable y menyimpan text. Artinya variable itu bertipe String (teks)

    - Variable z menyimpan true. Artinya variable itu bertipe Boolean (nilai benar /

    salah).

    Untuk penerapannya nanti ada pada lesson setelah ini

    Lesson 4 : Numeric Mulai bagian sini, wa mau bahas soal masalah itung2an. Macem penambahan,

    pengurangan, perkalian, dan pembagian ala scripting.

    Langsung aja. Misalnya gini :

    Things to know :

  • Beginner Guide to RGSS3

    5

    - Hasilnya nanti keluar angka 50 dari hasil perhitungan attack defend (100 -

    50).

    - Huruf p itu sbenernya sama aja kaek puts. Gw lupa ngomong tadi. Udah

    terlanjur ke screenshot banyak. Jadi males benerin. :P

    - Script itu kerjanya berdasar sequence / urutan. Variable result g akan

    kedeteksi / dikenali kalo semisal u bikinnya kaek gini.

    Beberapa operasi dasar yg dapat u gunain :

    - (+) Buat penambahan

    - (-) Buat pengurangan

    - (*) Buat perkalian

    - (/) Buat pembagian

    - (%) Buat ngambil sisa bagi. Biasanya disebut modulus. Kalo g ngerti

    apa sisa bagi itu, u bisa coba2 kode kaek gini dan coba testplay.

    Hasilnya ntar 2.

    Unary Operator :

    Nah, lanjut ke berikutnya. Belum ganti lesson sih. Masih seputar numeric. Yang

    sabar ya \:v/. Sekarang w mau nerangin operasi lain. Misalnya variable attack mau

    kita tambahin nilainya. Jangan gunain attack + 10. Tapi gunain kaek gini :

    U nemuin disana ada operator +=. Itu artinya nilai attack yg lama, ditambahin

    10. Kalo g salah operator kaek gt nyebutnya unary. Operator itu sama artinya kaek

    gini.

    Beberapa operator unary yg dapat u pake :

    - (+=) Buat nambahin nilai variable.

    - (-=) Buat ngurangin nilai variable.

    - (*=) Buat ngali nilai variable.

  • Beginner Guide to RGSS3

    6

    - (/=) Buat mbagi nilai variable.

    - (%=) Buat ngerubah nilai variable jadi hasil sisa bagi.

    Floating Number :

    Ke materi berikutnya. Masih seputar numeric / variable. Dalam pemrograman

    manapun ada numeric dibagi jadi bilangan bulat (Integer) dan bilangan pecah

    (Float). Coba bandingkan kode ini :

    1 / 2 itu bilangan bulat. Yg seharusnya jadinya setengah, karena tipenya integer,

    akhirnya komanya diilangin deh. Sementara 1.0 / 2.0 adalah bilangan pecah. Kalo gt

    ntar hasilnya 0.5. Sbenernya ga harus dua2nya float sih. Salah satu dari mereka

    float, ntar akhirnya udah kekonversi ndiri jadi 0.5. Misalnya 1 / 2.0 ato 1.0 / 2

    Nah, kalo kasusnya nilainya itu disimpen dalam variable, jadinya gini.

    Hasil keluarannya :

    Fungsi .to_f itu buat konversi ke bentuk tipe float. Biasanya digunakan buat

    perhitungan2 ntar. Tapi di dalem variable attack sendiri tidak mengalami

    perubahan. Kalo mo bikin dalemnya attack berubah, gunain aja attack =

    attack.to_f. Tapi biasanya ga terlalu penting juga ngerubah ginian sejauh

    pengamatan gw

    Beberapa operasi konversi yg dapat u pake :

    - .to_f buat konversi ke floating number (pecahan)

    - .to_s buat konversi ke tipe String (text)

    - .to_i buat konversi ke tipe Integer (bulat)

    Dicoba sendiri ya :v

    Lesson 5: Control flow : Conditional Branch

  • Beginner Guide to RGSS3

    7

    Nah sekarang masuk ke conditional branch. Kalian yg RPG Maker user pastilah

    tau apa itu conditional branch. Yg biasanya ada switch is on, dan else. Kecuali kalo

    emang u bukan RPG Maker expert :v. Well, pokoknya gitu lah. Lanjut. Sekarang

    disini yg wa bahas bikin conditional branch versi script.

    Here you go :

    Hasil ini dah jelas karena secara rumusan attack > defend itu nilainya benar. If

    tanpa else itu juga bisa. Tapi if tanpa end itu ga bisa bekerja

    Btw, coba u modif dikit biar user bisa nginputin nilainya. Kaek gini :

    Nilai kebenaran attack > defend juga bisa disimpen dalam variable. Misalnya u

    nyimpennya kaek gini :

    Hasil keluarannya ntar juga sama aja. Cuman disini bedanya nilai kebenaran

    attack > defend tu disimpen di variable yg namanya result. Kalo disitu ditulis if

    result artinya script itu bakal ngerjain dibawahnya kalo result bernilai benar. Else

    jika sebaliknya. Sama kaek RPG Maker deh :v

  • Beginner Guide to RGSS3

    8

    Ada cara kebalikannya. Pake kata unless. Kalo pake unless ntar script tu

    ngerjain kalo result = false. Kaek gini.

    Kondisi bercabang jg bisa ditulis dengan satu line. Cuman rada ribet pake cara

    ini. Kayak gini contohnya :

    Ntar keluarannya tertulis delivered.

    Cara lain buat ngeprint delivered gini :

    Cuman kalo pake ini, cuman satu line dengan satu kondisi. Kalo kondisi salah, g

    ada elsenya. Btw, If diatas diganti unless juga bisa.

    Ada juga cara mbalikin nilai kebenaran. Caranya ditambahin ! di depan

    variable. Kayak gini nih :

  • Beginner Guide to RGSS3

    9

    Comparison2 yg dapat u pake buat ini :

    - () Lebih besar dari

    - (==) Sama dengan. Bukan pake (=) karena (=) buat ngeset nilai. Bukan

    pembanding

    - (>=) Lebih besar atau sama dengan

    - (

  • Beginner Guide to RGSS3

    10

    Disana u nemun ada operator ||. Itu namanya operasi OR. Akan bernilai benar

    kalo salah satunya benar. Yang perhatian ama logika matematika pas SMA pasti

    ngerti. Kayak gini contohnya :

    Attack wa masukin -10. Dan Defend wa masukin 3.Karena salah satu dari attack

    dan defend nilainya < 0, maka if tadi dieksekusi. Sekarang ke bagian elsenya. Ada if

    didalem if itu kalo bahasa pemrograman namanya nested if. Wa rasa penjelasannya

    sam kaek yg sbelumnya deh. Jadi g usah gw ulang kata2 gw.

    Oh iya. Soal OR tadi ada kebalikannya. Yaitu AND. Kalo AND tu, pembanding

    yg akan bernilai benar, kalo keduanya benar. Coba script simple kayak gini.

    Penjelasan :

    (10 > 1 && 10 < 1) = true AND false false

    (10 > 1 || 10 < 1) = true OR false true

    OR -> Salah satu benar, dianggap benar

    AND -> Keduanya harus benar.

    Ga cuman if else yg bisa bercabang. U bisa pake case dan when. Jadi kayak

    gini.

  • Beginner Guide to RGSS3

    11

    Di dalem script itu user diminta ngemasukin pilihan antara 1 4. Pilihan itu ntar

    dimasukin ke variable choice. Perintah case choice itu artinya nge-evaluasi

    variable choice yang ntar akan dikerjakan di salah satu kondisi when kalo ada yang

    benar. Kata else adalah kalo disana g ada yang benar. Else disana adalah optional.

    U boleh ngilangin else kalo ga perlu. Dan jangan lupa kata end diakhir case.

    Contoh keluarannya kayak gini :

    Lesson 7: Control Flow : Looping Looping disini artinya mengulang-ulang. Jadi script bisa ngulang perintah ampe

    batas yg ditentuin programmer. Langsung aja, contoh simplenya gini.

    Ntar bakal keluar kayak gini.

  • Beginner Guide to RGSS3

    12

    Things to know :

    - for itu adalah perintah ngelooping.

    - Ketentuannya ada di belakangnya. Yaitu in 1..10 yg angka2 itu disimpen di

    variable yg namanya i.

    - Saat u nulis p i artinya u ngasi perintah ngeprint nilai i terus ampe 10.

    - Nilai range 1..10 itu juga bisa disimpen dalam variable. Misalnya dibikin kaek

    gini.

    Contoh loop lain bisa pake kata while ato until. Perbedaannya, kalo while dia

    akan terus ngeloop selama kondisinya bener. Kalo until, akan terus ngeloop ampe

    kondisinya bener. Kayak gini contohnya.

    Ntar itu akan ngeloop selama x masih kurang dari 20. Ibarak kaek lu lagi

    omong2an ama program Selama x masi kayak gitu, lakuin ini nih!. Kalo semisal x

    += 1 u ilangin, itu akan jadi neverending loop. Coba aja kalo g percaya :v

    Nah, contoh yg until kaek gini :

    Disana kalimat loopingnya gini. Lakuin looping terus ampe x lebih besar ato

    sama dengan 20. Dicoba eksperimen sendiri ya? Males screenshot yg hasilnya

    panjang2 nih :v

  • Beginner Guide to RGSS3

    13

    Perbedaannya yg for, while, ama until itu. Kalo for biasanya dipake buat looping

    yg udah jelas. Kalo while ato until itu dipake buat looping yg masih g jelas ampe

    kapan dia loopingnya dan kapan berhentinya.

    Sekedar trivia. Game RPG Maker itu update framenya pake looping. Game akan

    terus ngeloop dengan isi perintah update frame gambar, dll Dan berhenti ketika

    player dah exit dari game. Itu salah satu contoh looping pake while ato until.

    Lesson 8 : Methods Dalam bikin script gede, pasti lah ada jenuhnya juga semisal kalo kita harus

    nulis fungsi yang sama berulang-ulang. Selain jenuh, bikin program berantakan dan

    susah dibaca. Solusinya, fungsi2 kaek gini bisa dibungkus lewat method. Kalo

    dalam script, biasanya u nemuin yang namanya def. Gini caranya :

    Keluarannya ntar ngeprint ~

    U juga bisa nambahin dalemnya method itu macem2 kayak gini :

    Dengan output ~

    Intinya gitu lah. Method itu buat ngebungkus fungsi2 gitu biar jadi lebih simple.

    Method Argument / Parameter :

  • Beginner Guide to RGSS3

    14

    Method juga kadang butuh yang namanya argumen. Jadi butuh masukan juga.

    Misalnya kayak gini :

    Def damage adalah method dengan nama damage yg butuh 2 masukan /

    argumen. Argumen pertama ntar disebutnya attack dan kedua defend. Di dalem

    methodnya itu ntar dievaluasi sedemekian. Ngerti ndiri lah :v

    Di line terakhir, wa nulis damage(100,50). Jadi ntar itu, 100 dianggep sebagai

    attack dan 50 dianggep sebagai defend di dalem methodnya. Jadinya gini :

    Seandainya u cuman nulis damage tanpa masukan. Ato masukannya cuman

    satu kayak damage(100) akan keluar pesan error wrong number of arguments

    semacam ini.

    Method return value :

    Method juga bisa buat ngerjain suatu rumus ato fungsi yang nantinya punya nilai

    kembalian. Nilai kembalian itu bisa berupa benar / salah (boolean), String (text),

    ato angka. Contohnya gini

  • Beginner Guide to RGSS3

    15

    Di dalem method damage, ada 2 perintah. Value = damage defend artinya

    nyimpen hasil pengurangan. Perintah kedua, return value itu artinya method itu

    ngembaliin nilai yg disimpen value.

    If damage(100,50) nyimpen nilai 50 karena penjelasan diatas. Karena 50 > 0,

    maka pernyataan itu bernilai benar. Hasil keluarannya adalah delivered

    Kata return juga bisa buat mberhentiin method ditengah-tengah. Contohnya

    kayak gini.

    Karena return itu arti aslinya adalah mengembalikan nilai, maka kalo method

    ada return ditengah-tengah, maka method itu sudah tidak butuh ngejalanin perintah2

    yang ada dibawahnya. Disana u liat, setelah return tidak ada variable. Itu artinya

    method ini ngembaliin nilai kosong / nil. Btw, kyak gini keluarannya :

    Secara default, bahasa ruby aslinya punya return di setiap akhir line methodnya.

    Hal ini bisa dibuktiin dengan cara gini.

    Disana wa ga nulis, return 150. Tapi kalo method itu diprint out, dia akan

    ngeluarin angka 150 kayak gini.

    Method default argument value :

  • Beginner Guide to RGSS3

    16

    Ada juga method yang mempunyai default value buat argumennya. Jadi

    opsional. U bisa masukin argumen ataupun tidak. Kayak gini.

    Def attack(atk = 100) itu artinya kita ngeset default value buat argumen atk =

    100. Dibawahnya itu, kita bisa langsung panggil attack tanpa masukin argumen.

    Ato kita juga bisa ngerubahnya pake attack(1500). Hasil keluarannya seperti ini :

    Method juga bisa dipake buat argumen pemanggilan method lain. Kali ini wa

    mau nyontohin pake materi fungsi yg diajarin pas SMA. Yg macem f(x), g(x), f(g(x)).

    Ini bagian menarik kalo menurut gw. XD

    Coba diitung manual. Hasilnya pasti sama kyak ini :

    Lesson 9 : Variable Scope Lesson kali ini cukup singkat. Wa mau bahas cakupan variable. Dalam ruby,

    variable berdasar cakupan dibagi menjadi 3 macam. Yaitu :

    - Local Variable

    - Instance Variable (Ntar dibahas di lesson berikutnya)

    - Global Variable

    Local Variable

  • Beginner Guide to RGSS3

    17

    Sesuai artinya, variable lokal cuman digunakan oleh cakupan lokal. Semisal u

    bikin script seperti ini. Pasti akan mengakibatkan error.

    Disana, variable value cuman dikenali diluar method print. Begitu juga

    sebaliknya. Nama variable yang u definisiin di dalem method, ga bisa diketahui

    diluar method.

    Ga cuman method aja sih. Kalo u ngedefinisiin variable baru di dalem if

    misalnya. Itu juga cuman bisa diketahui di dalemnya if doank. Cuman bedanya, kalo

    u ngedefinisiin variable diluar if, masi bisa kebaca di dalem if. Kayak contoh di

    lesson conditional branch tadi. Variable attack dan defend bisa kebaca di dalem if.

    Global Variable

    Sesuai artinya. Global variable dapat dipake dimana aja. Biasanya buat dipake

    bersama. Global variable diawali dengan $ di depan nama variablenya. Contoh

    global variable dalam RGSS adalah seperti contoh array yang ada di lesson 7. Well,

    langsung aja nyoba kita bikin contoh global variable. Kita edit contoh yang ada

    diatas seperti ini

    Tidak lagi terjadi error.

    Untuk keterangan soal Instance Variable akan ada di lesson berikutnya.

  • Beginner Guide to RGSS3

    18

    Chapter 2 : Ruby Basic Object

    Lesson 10 : Arrays Ada yang masih ingat himpunan dalam matematika? Ah, tapi g usah diinget-

    inget deh. Buat yg eneg ama MTK bisa bikin tambah mabok. Well, array disini

    semacem barisan buat nyimpen data gitu. Data itu ntar disimpen di index2. Index

    array dimulai dari angka 0. Well, langsung aja deh prakteknya :>

    P ary[0] itu ngeprint index ke 0. Artinya angka 1 bakal muncul

    P ary[3] itu ngeprint index ke 3. Artinya angka 4 bakal muncul

    P ary tu ngeprint semua array.

    Array as Stack or Queue:

    Arti stack disini seperti tusuk sate. Data ditumpuk-tumpuk dan ditaruh akhir. Ntar

    yg terakhir kali masuk, juga yang keluar duluan. Gampangannya sih ngemasukin

    data di bagian akhir array. Pake keyword push.

    Disana u bisa liat dot push gunanya buat ngemasukin nilai. Push(4) nantinya

    akan masuk di bagian belakang.

    Buat ngambil nilai terakhir trus sekalian didelet, caranya pake dot pop.

    Kayak gini :

    Disana keliatan kalo elemen terakhir 7 itu ilang.

  • Beginner Guide to RGSS3

    19

    Array as queue berarti disini seperti antrian. Element pertama ntar yg diambil

    duluan. Jadi ngambil elemen pertama, sekalian ngedelete. Gini caranya.

    Bisa u liat disana angka 3 hilang dari array.

    Untuk ngemasukin element dari awal, bisa pake unshift.

    Dengan pake unshift artinya kita masukin data ke element pertama dan geser

    data2 lain ke kanan. Untuk kegunaan nyata push, pop dalam RGSS3 ntar akan

    dijelasin di chapter lain.

    Clearing an array :

    Semisal kita mo ngebersihin isi array, kita bisa make fungsi dot clear. Contohnya

    seperti ini.

    Get maximum or minimum value :

    Array juga bisa dicari nilai maksimum minimumnya dengan pake dot max ato dot

    min. Caranya cukup simple. Coba code kayak gini :

    Dalam script RPG Maker, penggunaan min max untuk nentuin apakah suatu

    item itu udah maksimal atau belum. Kalian tau kan kalo RPG Maker secara default

    maksimum itemnya adalah 99? Contoh simulasi penggunaan pada item kayak gini :

  • Beginner Guide to RGSS3

    20

    Things to know :

    - Def item_max disana adalah untuk nyimpen item maksimum

    - Def gain_item adalah method untuk nambahin item

    - Pada line ke 17, [new_number,0].max untuk ngecek mana yg lebih besar. Ini

    untuk mencegah biar angka item ga minus.

    - Kita anggap aja new_number adalah 20 (line 26). Maka script ngerjain

    [20,99].min. Dan hasilnya adalah 20. Itulah jumlah item yang baru.

    - Def lose_item di line 20 sebenernya adalah gain_item yang amountnya

    dijadiin minus nilainya

    - U bisa liat di line 32, seandainya 5 dikurang 999 harusnya minus. Tapi

    perintah yg ada di line 17 ([new_number,0].max) ngecegah hal itu terjadi.

    Sorting an Array :

    Array juga bisa diurutkan datanya dengan fungsi dot sort. Cuman fungsi sort

    dibedakan menjadi dua. sort dan sort!. Berbedaannya ada disini

    a. Sort

    Dot sort (tanpa tanda seru) artinya kita bikin array baru dari hasil sorting.

    Contoh penggunaannya kayak gini :

    Bisa u liat disana kalo variable ary1 tidak mengalami perubahan. Sedangkan

    ary2 adalah variable baru yg nyimpen array hasil sortingan dari ary1.

    b. Sort!

  • Beginner Guide to RGSS3

    21

    Dot sort (dengan tanda seru) artinya sortingan itu juga ngerubah susunan

    arraynya sekalian (bukan duplikasi). Seperti ini contohnya :

    Disana keliatan kalo isi dari variable ary berubah.

    Evaluate each element of Array:

    Nilai tiap array juga bisa jadi bahan looping. Pake keyword each. Caranya gini :

    Artinya itu, jumlah panjang arraynya jadi batesan looping. Di screenshot itu

    panjang arraynya ada 5. Berarti loopingnya ntar bakal dijalanin sebanyak 5 kali. Dan

    nilai2 dalam array itu disimpen dalam variable yang namanya | item |. Aslinya mah

    terserah mau u namain apa. Btw, kedua penulisan itu hasilnya sama aja. Jadi tinggal

    u nyaman nulis yg kaek apa terserah u.

    Array checking :

    Fungsi ini gunanya buat ngecheck elemen-elemen array. Ntar keluarannya

    berupa boolean. True ato false. Gunanya biasanya buat conditional branch. Well,

    langsung aja. Kayak gini :

    a. Method all?{| item |}

    Method ini untuk mengecek apakah semua elemen array sesuai dengan

    persyaratan yg ditulis dalam {}. Contohnya kayak gini.

    o Line 11 nilainya benar. Karena semua elemen didalem lebih kecil dari 6.

    o Line 12 nilainya salah. Karena ga semua elemen di dalem == 3.

    b. Method any?{| item |}

    Method ini adalah kebalikan dari dot all?{}. Nilainya akan bernilai benar kalo

    salah satu dari elemen array ada yang benar. Contohnya kayak gini.

    o Line 11 nilainya salah. Karena di array itu g ada yg bernilai 6

    o Line 12 nilainya benar. Karena salah satu ada yang bernilai 3.

  • Beginner Guide to RGSS3

    22

    c. Method empty?

    Method ini buat ngecek apakah array itu kosong ato ngga. Contoh

    penggunaannya kayak gini.

    d. Method include?()

    Method include?() mirip2 dengan any?. Cuman kalo any persyaratannya

    bisa dinamis. Kalo include cuman evaluasi satu nilai aja. Dia akan benar kalo

    salah satu arraynya sama dengan argumen yg dimasukin ke (). Contoh :

    Array size :

    Buat ngambil panjang array, u bisa pake dot size. Jadi u tinggal nulisin ary.size

    buat ngambilnya. Contohnya kayak gini :

    Implementasi array tu kalo di RGSS buat nyimpen data2 yang ada di database.

    Biasanya disimpen dengan format nama gini. $data_namadata. Coba ketik kayak

    gini di script editor :

    Sekedar trivia. Hal yg perlu u ketahui dalam struktur database RPG Maker. Array

    emang dimulai indexnya dari 0. Tapi untuk memudahkan non-scripter, database

    RPG Maker dalam script, index 0 dibikin nil / kosong. Jadi kalo semisal u ngeset

    database Actor sebanyak 8, waktu u print $data_actors.size keluar angka 9.

    Kalau mau tahu tentang array lebih banyak lagi, kamu bisa ngelihat helpfile

    RGSS3 dengan cara pencet F1 dan cari sperti di screenshot

  • Beginner Guide to RGSS3

    23

    Lesson 11 : Hashes Hash sedikit berbeda dengan array. Kalo array memiliki index, sedangkat di

    hash namanya key. Array dimulai dengan ary = []. Sedangkan hash dimulai dengan

    hash = {}. Penggunaan hash dalam RPG Maker biasanya untuk menyimpan jumlah

    inventori. Seperti jumlah item, weapon, armor.

    Seperti ini contoh penggunaan hash.

    Things to know :

    - Hash dimulai dengan { dan diakhiri dengan }

    - Perintah p hash[potion] itu ntar ngeprint value yang dimiliki key yg bernama potion.

    - Disana bisa diliat potion => 10. Berarti ntar scriptnya bakal ngeprint 10

    - Hash[potion] += 20 itu artinya nambahin nilai key potion

    - Saat diprint lagi, ntar nilainya bakal jadi 30

    Coba u ganti potion dengan kata lain yg tersedia diatas

    Hash each method :

  • Beginner Guide to RGSS3

    24

    Hash juga mempunya fungsi each sama kayak Array. Cuman disini sedikit

    berbeda. each dalam array itu nge-evaluasi nilai tiap element array. Sedangkan

    hash nge-evaluasi key dan valuenya. Formatnya kayak gini.

    Things to know :

    - Seperti array. Key dan value diantara || itu adalah sebutan yg sebenarnya

    terserah mau u sebut apa.

    - Format each buat hash yg pasti. Sebutan pertama itu untuk ngambil key. Dan

    yang kedua untuk ngambil value.

    Kalo kita mo ngambil keynya ato valuenya doank. Kita bisa make each_key ato

    each_value. Caranya sama. Cuman penyebutnya Cuma satu. Kayak gini :

    Convert to array :

    Kita juga bisa bikin array baru dari key ato valuenya hash. Dengan cara

    tambahin dot keys ato dot values. Caranya kayak gini :

    Things to know :

    - Variable key nantinya akan nyimpen array yg isinya key dari hash

    - Variable value nantinya akan nyimpen array yg isinya value dari hash

    Output scriptnya ntar kayak gini :

    Ada lagi yang menarik disini. Kita bisa manggil dua fungsi secara langsung.

    Semisal hash.values adalah ngebikin array berdasar value dari hash. Kita juga bisa

    langsung manggil fungsi array bersamaan dengan itu. Misalnya hash.values.each.

    Seperti ini contohnya.

  • Beginner Guide to RGSS3

    25

    Nanti keluaran scriptnya kayak gini :

    Deleting key(s) :

    Kalo semisal kita pengen delet key dari suatu hash, kita bisa pake fungsi dot

    delete. Contoh penggunaannya sebagai berikut :

    Bisa diliat kalo dalam hash itu key 1 ilang dari.

    Fungsi2 lain yg ada di hash :

    - .clear >> untuk ngosongin hash ato balik jadi = {}

    - .empty? >> untuk evaluasi keberanan. Nilainya bener kalo hash tu g ada

    isinya

    - .has_key?(key) >> untuk evaluasi kebenaran. Nilainya bener kalo hash punya

    key yg dimasukin di dalem ().

    - .has_value?(value) >> sama kayak has_key. Bedanya dia nge-evaluasi value.

    - .size >> sama kayak fungsi pada array. Ngitung jumlah elemen hash.

    Sisanya bisa u cari ndiri di helpfilenya RPG Maker. Happy reading

    Lesson 12 : Classes Class itu kasarannya adalah sebuah wadah cetakan template buat bikin

    object2 dalam game. Well, di dalem game tu sbenernya banyak object2. Misalnya

    object player, object window, dan masih banyak lagi. Nah, disini w mau nerangin apa

    itu class, apa itu object, dan macem2nya.

    Sebagai contoh awal, gw mau contohin bikin class yg gunanya buat ngeprint2

    dulu. Kayak gini contohnya

  • Beginner Guide to RGSS3

    26

    Things to know :

    - Nama class harus diawal dengan huruf besar

    - Class dilengkapi dengan method2 yg ngebikin ntar class itu bisa ngapain aja

    - Test = Print.new artinya kita bikin sebuah object baru (new) dengan tipe

    objectnya adalah Print. Istilah kerennya bikin object baru disebut juga

    instansiasi.

    - Object test ntar bisa ngelakuin [dot] printout(x) dan [dot] itung(x) sesuai apa

    yg udah ditulis di class Print.

    Class Attributes :

    Class juga bisa aja punya attribut. Ngomong-ngomong soal attribut, mari kita

    tengok konsep RPG sebentar. Player mempunyai attribut HP, MP, ATK, DEF. Dalam

    battle RPG Maker, pelakunya disebut Battler. Berarti Player memiliki class dengan

    type Battler yang dimana class Battler nanti mempunyai attribut HP, MP, ATK, DEF.

    Kita bikin satu contoh attribut dulu de. Coba kayak gini :

    Things to know :

    - Variable dengan karakter depan @ adalah instance variable. Atau juga bisa

    disebut class variable

  • Beginner Guide to RGSS3

    27

    - Instance variable tidak dapat diakses selain di dalam class itu sendiri. Untuk

    mengaksesnya, gunain method

    - Method set_hp disana artinya ngeset nilai instance variable @hp.

    - Method get_hp disana artinya ngambil nilai instance variable @hp.

    - Gw kan ngeinstant dua object baru. Yaitu actor dan enemy. U jg bisa ngeset

    attribut HP masing2 object itu beda2.

    Class Constructor :

    Kalo seandainya siap kali kita instansiasi object baru, repot banget kalo

    senadainya kita harus nulis set_hp pada line setelahnya. Untuk ngatasi itu, kita bisa

    bikin fungsi yang namanya konstruktor. Dalam ruby, konstruktor ditulis dengan def

    initialize. Seperti ini :

    Things to know :

    - Method def initialize disebut jg konstruktor. Namanya pasti initialize. Bukan

    yang lain.

    - Konstruktor dieksekusi saat penginstansian object. U bisa liat disana w tulis

    Battler.new(100). Angka 100 ntar jadi masukan def initialize yg ntar masuk ke

    instance variable @hp.

    - Disaat lain, actor.get_hp udah punya nilai kembalian.

    Attibute Methods :

    Dalam game tentunya battler ngga cuman punya attribut HP. Tapi juga yang

    lain. Nah, seandainya kita ntar nulis def get dan def set untuk semua attribut,

    pastilah sangat merepotkan dan menjenuhkan banget. Ruby punya fungsi khusus

    untuk hal ini.

    Coba script berikut :

  • Beginner Guide to RGSS3

    28

    Things to know :

    - U tau disana ada yg namanya attr_accessor. Itu sama halnya u bikin

    method buat ngambil nilai @hp (get method) ama bikin method buat ngeset

    nilai @hp (set method)

    - Fungsi attr_accessor sama halnya u bikin dua fungsi kayak gini.

    Beberapa list fungsi attr series yang dapat u gunain :

    - attr_accessor = Bikin get dan set

    - attr_reader = Cuman ngebikin method getnya (def hp) doank.

    - attr_writer = Cuman ngebikin method setnya (def hp=(hp)) doank.

    Class static variable :

    Static variable adalah variable yang nilainya sama meski dalam object yang

    berbeda. Jika salah satu object, nilai static variablenya berubah, maka object lain yg

    punya class yg sama, static variablenya juga berubah. Susah jelasinnya. Langsung

    pake contoh aja. Bikin script kayak gini :

  • Beginner Guide to RGSS3

    29

    Things to know :

    - u bisa liat disana method konstruktor ada perintah @@jumlah += 1. Jadi tiap

    kali w instant object, variable @@jumlah nambah 1

    - u jg bisa liat disana w ngeset nilai HP dalam variable @hp (@-nya cuman

    satu).

    - Print pertama w ngeprint nilai jumlah dan HP. Keluarannya 1 dan 100

    - Print kedua w ngeprint nilai jumlah dan HP untuk object kedua. Keluarannya 2

    dan 30. Bisa u liat kalo variable @@jumlah sekarang jadi 2

    - Print ketiga sama kayak print pertama. Cuman bedanya disini nilai jumlah yg

    dimiliki object pertama sama kyak object kedua. Sedangkan HP mereka

    berbeda.

    Sejauh pengamatan gw, static variable dalam RGSS ntar ga gitu kepake. Ada

    juga cuman sedikit implementasinya.

    Class Inheritance :

    Kalo kalian lihat lagi, saat battle, enemy dan actor mempunyai kesamaan dap

    perbedaan. Persamaannya, mereka sama-sama punya yg namanya HP, MP, ATK,

    dan attribut2 dasar lainnya. Tapi RPG Maker secara default tidak menyediakan

    attribut Level ato current exp untuk enemy. Sedangkan actor juga tidak mempunyai

    attribut gold drop, item drop, ato exp bonus.

    Sangat merepotkan kalo ntar u harus nulis class actor dan enemy yang dimana

    mereka punya kesamaan. Untuk masalah ini, ruby nyediain yg namanya

  • Beginner Guide to RGSS3

    30

    inheritance. Ato dalam arti bahasa indonesianya adalah keturunan. Contoh

    penuruan dalam Ruby seperti ini :

    Things to know :

    - Indikator < pada class Lower < Upper artinya, bahwa class Lower mewarisi

    semua apa yg dimiliki Upper.

    - Dalam class Lower, gw ga perlu ngedefinisiin lagi method yg isinya print kata

    line1/2. Karena di dalem class Lower udah punya. Ngambil dari parent

    classnya. Bisa u liat ndiri di keluarannya. Obj2.method ngeprint line 1 ama

    line 2.

    - Dalam class Lower, gw jg bisa manggil method yg dah eksis di parent

    classnya buat dimasukin ke method baru. Liat line 21.

    - Ntar saat eksekusi obj2.method2, dia akan ngeprint tulisan line 1 ampe line

    4.

    - Kalo semisal u nulis obj1.method2, pasti akan keluar error. Karena obj1

    adalah object instant dari class Upper dimana di class itu ga ada method2.

    Semisal u ga sreg dengan method yg ada di superclass / parent classnya, u bisa

    aja ngeoverride (ganti dalemnya), ato nambahin fungsi baru. Dengan keyword

    super. Kayak gini contoh penggunaannya dan masing2 keluarannya.

    Contoh penggunaan super :

  • Beginner Guide to RGSS3

    31

    Contoh penggunaan override :

    Disana bisa u liat kalo kata super itu artinya manggil semua fungsi yg ada di

    superclassnya. Semisal def method membutuhkan masukan, seperti method(x),

    maka ntar super juga ditulis dengan super(x).

    Screenshot kedua itu namanya override. Kalo si superclass mungkin nulis line1

    line2. Tapi diclass anaknya method itu dirubah. Jadi Ga ada line.

    Aliasing :

    Aliasing sama artinya dengan mengkopi paste method dengan nama baru.

    Dalam RGSS, aliasing berguna untuk kompatibilitas dengan script lain kalo u mau

    nyebar2 scriptmu. Contoh aliasin tu seperti ini :

    Things to know :

  • Beginner Guide to RGSS3

    32

    - U bisa liat kalo pada line 32, wa tulis ulang class Lower < Upper. Itu gunanya

    buat ngemodif isi class itu. Jadi ngga perlu ngeditnya diatas. Fitur kayak gini

    dimanfaatin scripter buat nyekrip semuanya di bagian material script editor

    nantinya.

    - Line 33 u liat wa tulis alias disana. Itu maksudnya gini. alias

    .

    - Line 34 itu kita ngeoverwrite isi method. Karena program kerjanya urut, maka

    isi method yang dipake nantinya adalah yang terakhir didefinisikan.

    - Line 35, itu manggil method aliasnya. Di method alias itu isinya sama persis.

    Serasa seperti kopas.

    - Line 36, itu kita nambahin perintah print line4

    - Keluarannya bisa diliat. Tulisan line 1 ampe 3 adalah bawaan fungsi2

    sebelumnya sebelum method dioverwrite. Tulisan line4 adalah fungsi baru yg

    kita tambahin. Semisal u hapus line 34, maka ntar yg keluar bakal cuman

    tulisan line4.

    Lesson 13 : Modules Module mirip2 dengan class. Cuman bedanya module tidak membutuhkan

    instansiasi kyak class. Dan umumnya bersifat konstan isinya (ga berubah). Module

    dalam RGSS3 nyiapin fungsi2 dasar ato konstanta2 yang nantinya bisa dipake di

    seluruh struktur program. Module dibuat untuk memudahkan scripter ato non-scripter

    mengubah flow program nantinya.

    Ini adalah contoh simulasi script2 RGSS3 yang biasa ditemui di internet :

    Dengan keluaran kayak gini :

    Things to know :

    - Untuk ngambil variable dari module, cukup dengan nulis

    NamaModule::Konstanta.

    - Nama module harus dimulai dengan huruf besar.

  • Beginner Guide to RGSS3

    33

    - Semisal ada module dalam module, berarti u harus nulis

    module1::module2::Konstanta.

    Module Method :

    Module juga bisa aja nyimpen method buat fungsi-fungsi dasar. Dalam RGSS3,

    module yang nyimpen2 fungsi dasar ada di SceneManager, DataManager,

    BattleManager, dan masih ada yg nanti wa bahas di chapter selanjutnya. Sekarang

    wa kasih contoh, module yang nyimpen fungsi. Misalnya kayak gini.

    Things to know :

    - Dalam nulis method di module, kita butuh kata tambahan self setelah def.

    - Cara pemanggilan method module cukup dengan tulis NamaModule.method

    - Kalo ada module dalam module, caranya sama kayak diatas.

    Module1::Module2.method

    Module Method aliasing :

    Seperti halnya method dalam class. Module juga bisa dibikin alias methodnya.

    Hanya saja caranya sedikit berbeda. Seperti ini contohnya :

    Things to know :

    - Untuk ngelakuin aliasing pada method module, u harus nulis class

  • Beginner Guide to RGSS3

    34

    Lesson 14 : Object Funtions Tiap object (Hasil instantsiasi) punya fungsi-fungsi yang sama. Entah itu dari

    array, hash, ato object yang u bikin classnya sendiri.

    Object Duplictation / Clone :

    Coba bikin code kayak gini :

    Analisis :

    - Bisa u liat disana w bikin object array dengan nama ary

    - Trus gw bikin lagi variable test = ary.

    - Disana w ngeprint ary dan ada isinya

    - Trus w tulis test.clear yg ngehapus isi ddari variable test

    - Ternyata pas gw ngeprint isi ary, ary jg keapus.

    - Kesimpulannya : kedua variable itu saling terkoneksi.

    Coba kalo kodenya u rubah dikit jadi kayak gini :

    Diliat dari screenshot itu, ary ama test udah ga lagi tersambung. Fungsi dot dup

    pada object itu gunanya untuk duplikasi object yang isinya persis.

    Object equality check :

    Untuk ngecek apakah dua object itu saling terhubung ato ngga, kita bisa pake

    fungsi dot equal. Seperti ini :

    Get object class :

    Kita juga bisa ngambil nama class object tertentu. Misalnya kayak gini :

  • Beginner Guide to RGSS3

    35

    Fungsi dot class artinya ngambil tipe class dari object itu. Sekedar saran. Coba u

    eksperimen aja u bikin variablenya nyimpen nilai angka, text, ato yang lain. Trus u

    print dengan pake dot class. Dan liat apa yg keluar :D

    Check object class :

    Mirip seperti get object class. Tapi disini ntar keluarannya berupa boolean. True

    ato false. Coba kode berikut.

    Variable ary classnya adalah Array. Saat kita nulis dot is_a?(Array) maka

    nilainya benar. Dan bernilai salah kalo kota nulis yang lain.

    Nil check function :

    Fungsi ini untuk mengecek apakah sebuah variable tu kosong apa ngga. Contoh

    penggunaannya kayak gini.

  • Beginner Guide to RGSS3

    36

    Chapter 3: RGSS3 Built-in Modules Oke, setelah sekian banyak bahas soal basic ruby, akhrinya wa bahas juga soal

    RGSS3 Built-in modules. Gw udah anggap kalian dah bisa dan lancar soal basic-

    basic ruby.

    Built-in modules disini artinya, module-module yang udah dibikin untuk keperluar

    RPG Maker. Contoh-contohnya adalah :

    - Audio. Untuk keperluan play sound macem BGM, BGS, ME, SE.

    - Input. Untuk nangkep masukan dari user. Misalnya pencet up, akhirnya

    karakter jalan keatas.

    - Graphics. Module ini ngurus bagian grafis. Seperti update frame, update

    gambar biar gambar terus gerak.

    - RPG. Module ini nyimpen data-data yang ada di RPG Maker. Seperti skill,

    actor, class, weapon. Tapi ntar gw bahas di chapter berikutnya.

    Lesson 15 : Module Audio Seperti yg gw jelasin sebelumnya kalo module ini ngurus soal sound. Langsung

    aja deh ke penerapannya.

    Audio.bgm_play(filename, volume = 100, pitch = 100)

    Coba bikin script kayak gini.

    Kalo u testplay, di console emang g keluar apa-apa. Cuman kalo u ada sound,

    pasti keluar lagu battle1 RTP. Argumen filename itu harus sesuai dengan tempat

    BGMnya. Secara default, RM nyetor BGMnya ke sub-direktori Audio/BGM. Jadi u jg

    harus nulisnya gitu. Parameter volume dan pitch bisa diabaikan. Karena dua

    parameter itu dah punya default value.

    Sekarang Coba kayak gini.

    Dngerin. Ntar u dnger battle1 dengan versi pitch dinaekin ampe 150.

    Audio.bgm_stop

    Udah ketauan dari namanya kalo fungsi ini untuk berhentiin BGM. Well,

    sekarang dicoba kayak gini.

  • Beginner Guide to RGSS3

    37

    Intinya script diatas, BGM akan terhenti ketika nilai count >= 9999.

    Audio.bgm_fade(time)

    Seperti namanya. Fade untuk ngefadeout BGM dimana parameter time adalah

    angka yang menunjukkan milisecond. Semisal lagu u mo dibikin ngilang selama satu

    detik, masukin aja angka 6000. Well, contohnya kek gini.

    While true disana artinya, kita bikin program yg never-ending loop. Coba u

    testplay, BGMmu pasti akan abis pada detik ke 10.

    Beberapa method lain yg ada di module Audio (ga perlu dibikin contohnya.

    Soalnya kebanyakan sama cara kerjanya)

    - Audio.bgs_play(filename, volume = 100, pitch = 100)

    - Audio.bgs_stop

    - Audio.bgs_fade(time)

    - Audio.me_play(filename, volume = 100, pitch = 100)

    - Audio.me_stop

    - Audio.me_fade

    - Audio.se_play(filename, volume = 100, pitch = 100)

    - Audio.se_stop

    Lesson 16 : Module Graphics Ngomong-ngomong soal module graphics, apakah u mikir di lesson ini langsung

    bahas soal grafis, GUI, ato hal2 lainnya? Well, kalo u berpikiran gitu, u berarti salah

    besar. Emang disini ngomongin soal grafis. Tapi kita belom nyentuh game.exe sama

    sekali. Masih seputar konsol :P

    Langsung mulai aja deh lessonnya ~

    Get width and height

    Fungsi diatas gunanya untuk ngambil lebar dan tinggi layar game. Secara

    default, lebar dan tinggi layar adalah 544 x 416. Coba kode kek gini.

  • Beginner Guide to RGSS3

    38

    Resizing window

    Method ini untuk resize screen. Pol-polan u bisa resize sebesar 640x480. Coba2

    aja misal u masukin kek gini.

    Graphics frames

    Dalam RPG Maker, pergantian gambar bergerak / berubah sebanyak 60 frame

    per detik. Dan pergantian itu dilakukan dalam loop yang terus menerus selama

    gamenya ga exit. Langsung aja deh ke cara kerja frames. Contoh kayak gini.

    Things to know :

    - Graphics.frame_count = nyimpen total frame. Makin lama kita maen game

    RM, makin banyak juga jumlahnya ntar. Biasanya ini dipake buat basic

    perhitungan total playtime.

    - Graphics.update = fungsi ini gunanya buat ngerefresh. Fungsi ini dipanggil

    terus dalam loop ntar.

    Contoh simulasi looping dalam game RPG Maker yang sebenarnya terjadi itu

    dasarnya seperti ini :

    Ada lagi fungsi Graphics.frame_rate. Itu buat ngatur refresh rate. Normalnya

    nilainya adalah 60. Artinya, dalam satu detik nambah 60 frame. Bisa u ganti antara

    10 120. Makin banyak angkanya artinya kerja CPU juga makin berat. Ngeganti

  • Beginner Guide to RGSS3

    39

    frame_rate bukanlah ide bagus. Jadi lebih baik ga usah diganti nilainya.

    Penggunaan frame_rate biasanya untuk perhitungan detik. Seperti ini contohnya :

    Untuk yang kali ini ngga bisa discreenshot. Karena hasilnya bisa diliat lewat

    realtime. Btw, kalo u coba ini, u bisa amati kalo pergantian nilainya berdasar interval

    detik realtime. Kalo semisal u coba print Graphics.frame_rate keluarnya adalah

    angka 60.

    Sebenernya fungsi2 dari module Graphics sendiri masih banyak. Tapi karena

    kita masih mainan seputar konsol, jadi ga begitu terasa. Kalo mau tau fungsi2 lain,

    jangan lupa, senantiasa buka helpfile RMVXA dengan pencet F1 dan cari bagian

    Graphics.

    Lesson 17 : Module Input Module input adalah module yang ngurusin masukan dari user. Misalnya kalo

    dalam RPG Maker, kita pencet X, maka menu keluar. Kita pencet up, player gerak

    naek. Dan seperti itulah.

    Module input juga punya update seperti Graphics.update. Dalam RPG Maker,

    Input.update dipanggil bersamaan dalam satu method kyak Graphics.update. Coba

    modif program u bentar jadi kyak gini.

    Kalo semisal u run, emang ga terjadi apa-apa. Soalnya emang belom ada apa-

    apanya. Ok, langsung ke lesson berikutnya. Coba kode seperti ini :

  • Beginner Guide to RGSS3

    40

    Things to know :

    - Input.trigger >> Fungsi ini nge-evaluasi satu kali pencetan

    - Input.press >> Fungsi ini nge-evaluasi selama tombol itu dipencet

    - Input.repeat >> Fungsi ini nge-evaluasi apakah tombol itu masih dipencet ato

    kaga. Bedanya press dengan trigger, kalo repeat semisal tombol itu tetep kita

    pencet, akan ada jeda sepersekian detik sbelum eksekusi.

    Lebih bisa dirasakan kalo dicoba sendiri di scriptnya. Dan ambil kesimpulan

    sendiri. Soalnya susah nerangin lol. Btw, beberapa key yang dapat dipake buat

    inputan :

    :UP :DOWN :LEFT :RIGHT

    Symbol2 dari direction button yg ada di keyboard

    :A :B :C :X :Y :Z :L :R

    Symbol perwakilan dari tombol2 di RM

    :SHIFT :CTRL :ALT

    Symbol yg merujuk langsung ke shift, ctrl, alt pada keyboard

    :F5 :F6 :F7 :F8 :F9

    Symbol yg merujuk langsung ke tombol2 fungsi.

    Ni gambar yg nunjukin letak2 tombol2 RM

  • Beginner Guide to RGSS3

    41

  • Beginner Guide to RGSS3

    42

    Chapter 4: RPG Maker VX Ace Data Structures Ok, untuk lesson kali ini gw mo bahas soal penyimpanan data di RPG Maker VX

    Ace dalam script. Pastikan DataManager.init yg ditulis diatas ada. Soal e itu fungsi

    gunanya buat ngeload database ntar ~

    Lesson 18 : Module DataManager DataManager adalah module yang fungsinya ngatur data-data yang ada di

    RMVXA. Mulai dari inisialisasi kek ngeload dari yg u masukin ke editor, masuk ke

    game, save game, dan load game. Ok, screenshot sebagian DataManager kek gini.

    DataManager.init isinya menginisialisasi semua game object. Load database

    disana artinya ngeload semua database yg kita setting di editor. Dari editor, saat kita

    save, data itu akan disetor ke _.rvdata2. Lalu saat kita jalanin game, dari _.rvdata2

    dimasukin semuanya ke $data_

  • Beginner Guide to RGSS3

    43

    Game object dibagi menjadi dua. Satu adalah $data_ yaitu hasil import dari

    editor yangnanti jadi acuan untuk flow game. Satu lagi adalah $game_. Object

    $game_ adalah object yang berubah-ubah seiring berjalannya game. Seperti contoh

    kecilnya adalah, $game_actors. Saat kita maen game RM, tentulah actor memiliki

    equip yang berbeda-beda disetiap playtime. Save file satu dengan yang lain berbeda

    keadaan actornya. Sedangkan object $data_ dari save file satu ama file lain tetep

    sama. Ini screenshot dimana game object dibikin.

    Secara garis besar, proses transfer data dari editor sampe dimaenin ke game

    kayak gini. Sekedar sekilas saja sih :

    Dalam module DataManager nanti juga ada yang mengurus save dan load

    game. Tapi karena flownya terlalu kompleks, jadi gw skip dlu.

    Lesson 19 : Module RPG Module RPG adalah module yang ngurus hierarki class-class dalam RPG

    Maker. Seperti class Actor, class Skill, class Weapon, dll. Misalnya dalam skill nanti

    ada attribut nama, mp cost, tp cost, description, dll.

    Langsung saja. Secara gambaran, seperti ini hierari class yang ada dalam

    module RPG.

  • Beginner Guide to RGSS3

    44

    Karena tempatnya ga cukup, untuk RPG::State wa sendiriin dibawah.

  • Beginner Guide to RGSS3

    45

    Lol, banyak banget yah. Padahal ini masih seputar base item. Belom lagi soal

    RPG::Map, System, Encounter, Troop, Common Event ato yang lainnya. Sekarang

    langsung ke prakteknya aja cara ngambil data2 tu dalam script.

    Misalnya kita ambil contoh di bagian skill. Skill itu disimpennya dalam variable

    $data_skills yang tipenya array yg nyimpen2 object dengan class RPG::Skill. U bisa

    liat kalo di RPG::Skill tu inherit (keturunan) dari RPG::UsableItem. Dan

    RPG::UsableItem sendiri inherit dari RPG::BaseItem.

    Coba u tulis kyak gini :

    Itu cara-cara buat ngambil data dari database ntar dalam script. Coba-coba

    eksperimen sendiri untuk data yang lain. Misalnya $data_items, $data_actors,

    printout attribut2nya.

    Ada yang menarik disini. Attribut damage di class RPG::UsableItem itu merujuk

    ke class lain yg disebut RPG::UsableItem::Damage. Dan isinya

    RPG::UsableItem::Damage tu seperti ini.

    Kalo saja u mo printout $data_skills[3].damage, maka keluarnya akan seperti ini.

  • Beginner Guide to RGSS3

    46

    Jadi semisal kita cuman mo ngambil perhitungan formula doank, ato yang lain,

    bisa pake cara gini :

    Karena struktur data RPG Maker VX Ace kelewat banyak, senantiasa buka

    helpfile bagian sini.

  • Beginner Guide to RGSS3

    47

    Chapter 5: RPG Maker VX Ace Workflows Untuk chapter yang kelima kali ini wa mau bahas cara kerjanya script-script yang

    ada di RGSS3. Well, harapannya setelah kamu lolos dari chapter ini, u bisa nyisipin

    script-script tertentu atau ngedit script dan syukur2 bisa bikin script original buat

    dirilis. Well, langsung aja

    Lesson 20: Module SceneManager Kalo sekilas u liat-liat dalam script RPG Maker, semua yang ada disana cuman

    definisi class xxx < yyy dan semacamnya. Yup, berdasar apa yang kita bahas di

    chapter2 sebelumnya, class ngga bisa dirun / dijalanin. Lalu dimana proses

    utamanya? Well, proses utama RGSS3 ada di slot yang namanya main.

    Sekarang, kita coba uncomment rgss_main { SceneManager.run }. Setelah

    bagian itu selesai di uncomment, maka kita bisa maen game RM seperti layaknya.

    Nah, sbenernya akar permasalahan aka Biang kerok yang nyebabin game

    berjalan ada di module yang namanya SceneManager.

    Module ini terletak di bagian atas antara DataManager dan BattleManager.

    Module ini. Dalam main process, tentu u nyadar kalo yang di panggil adalah method

    run dalam module itu. Sekarang mari kita beralih ke method run-nya SceneManager.

    Dalam proses run, dia manggil DataManager.init yang nge-inisialisasi database

    yg udah wa bahas di chapter sebelumnya. Audio.setup_midi untuk mempersiapin

    midi. Nah baris berikutnya adalah nentuin scene pertama yang bakal masuk. Kalo

    semisal kita lagi battle test, maka scenenya adalah Scene_Battle. Kalo ngga, maka

    masuk titlescreen

    Proses method run di SceneManager akan stuck di bagian line ke 4.

    @scene.main while @scene. Selama variable @scene tidak kosong, maka game

    akan berjalan terus. Well, mari nengok2 ke method2 yang lain.

    Exit Game

    Untuk exit game, maka variable @scene harus kosong. Untuk ngosongin

    variable itu, maka butuh method untuknya. Seperti ini.

  • Beginner Guide to RGSS3

    48

    Dalam exit game di script, yang dipanggil adalah SceneManager.exit. Dengan

    method ini maka method run tidak lagi stuck. Tapi lagsung mengakhiri proses dan

    game pun ditutup

    Pindah scene

    Lalu bagaimana dengan proses pindah2 scene sepert dari titlescreen ke map?

    Atau ke menu? Atau ke battle? Atau ke .

    Method goto adalah method yang mengganti isi @scene secara langsung alias

    transisi langsung. Ada lagi method yang sama yaitu call. Bedanya call adalah, dia

    nyimpen isi @scene sebelumnya ke sebuah array yang dinamain @stack. Semisal

    kita lagi akses item, maka kira2 gini tumpukan di @stacknya

  • Beginner Guide to RGSS3

    49

    Pasti masih ingat kan kalau kita mencet cancel button (x) kita bakal balik lagi ke

    menu, trus menuju ke map. Nah, method SceneManager.call adalah method yang

    ngganti isi @scene tapi sbelum diganti, disimpen dlu di @stack.

    Untuk ngambi isi dari @stack, kita bisa gunain SceneManager.return. method

    def return adalah ngganti isi @scene dengan isi yang terakhir kali dimasukin di

    @stack. Well, wa rasa cukup jelas ampe sini.

    Untuk method-method lain yang bisa digunain selain itu adalah :

    - SceneManager.clear >> untuk bersihin isi @stack

    - SceneManager.scene >> untuk ngambil scene saat itu

    - SceneManager.scene_is?(class) >> untuk ngecek bener salah class dari

    scene yang lagi berjalan.

    Lesson 21 : Scene Base Kali ini wa mau bahas tahap-tahap utama dari setiap scene yang ada dalam RPG

    Maker VX Ace. Semua scene yang ada di RGSS3 (seperti Scene_Title,

    Scene_Menu, Scene_Battle) adalah anak dari Scene_Base. Jadi untuk bahas

    proses yang lain2, u harus paham dlu proses utama yang ada di Scene_Base.

    Main Method

    Well, untuk itu langsung aja u ke bagian Scene_Base. Cari def main. Dan ini

    yang bakal u liat.

    Disana bisa u liat dalam main dia manggil method lain yaitu start, post_start,

    update, scene_changing? pre_terminate, terminate.

    Start method

    Method ini adalah method yang digunakan untuk persiapan. Misalnya kalo dalam

    titlescreen, persiapannya adalah bikin gambar background, bikin window untuk

    pilihan. Kalau dalam menu, bikin window2nya kek pilihan command, gold dst.

    Method start dalam scene base seperti ini.

  • Beginner Guide to RGSS3

    50

    Dalam method start dia manggil method lain yang namanya

    create_main_viewport. Method itu adalah untuk ngebikin object Viewport yang

    fungsinya tar gw bahas di chapter selanjutnya. Karena ini ada di Scene_Base, maka

    setiap scene pasti punya main viewport.

    Sekarang coba kamu masukin kek gini di method start

    Lalu coba jalanin lewat test play (jangan lupa console tetep dihidupin). Trus via

    test play, coba kamu pindah2 scenenya. Terserah mo ke map, menu, item, status,

    battle. Pasti dalam consolemu akan ngeprint 100 setiap kali kamu ganti scene. Well,

    itulah fungsi method start. Untuk persiapan awal saat ganti scene.

    Post start method

    Post start adalah method yang dieksekusi setelah start udah dijalanin. Kamu

    pasti sadar kalau setiap perpindahan scene pasti ada transisi sebentar (tidak

    langsung ganti seketika). Isi dari post start adalah perform transisi gambar dari

    gambar sebelumnya ke gambar berikutnya dalam screenmu.

    Umumnya, post_start jarang ditambah-tambahin di class anak-anaknya. Jadi

    ngga gt penting sebenernya ngemodif ini. Satu2nya class yg ngemodif post_start

    adalah Scene_Battle.

    Update method

    Method update disini digunakan untuk menentukan perubahan apa aja yang ada

    di dalam screen saat looping berjalan. Misalnya blinking cursor kalo milih command,

    atau update gambar gerak tiap frame juga ada disini.

  • Beginner Guide to RGSS3

    51

    Dalam method update, dia akan manggil update_basic dimana method itu adalah

    isinya update2 dasar yang harus dimiliki semua scene. Isinya seperti yang udah gw

    jelasin di chapter2 awal. Kalau update dasar itu ada Graphics.update dan

    Input.update.

    Method update_all_windows pada intinya adalah semua instance variable yang

    bertipe class Window (yang tar gw bahas di chapter setelah ini) akan diapdet.

    Method scene_changing adalah untuk menentukan apakah variable @scene

    yang ada di SceneManager sama dengan class Scene itu. Return true jika tidak

    sama. Return false jika sama.

    Sekarang coba iseng2 nambahin something di update. Kek gini

    Save dan coba play test. Coba juga pindah2 scene. Amati yang terjadi ~

    Pre terminate and terminate method

    Dua method ini adalah untuk mengakhiri scene itu sbelum pindah ke scene lain.

    Umumnya yang dikerjakan adalah ngelepasin / destroy object2 window atau

    spriteset.

  • Beginner Guide to RGSS3

    52

    Pre_terminate adalah method yang dieksekusi sebelum eksekusi terakhir. Dalam

    Scene_Base, pre_terminate tidak didefinisikan. Tapi Scene_Base cuman

    menyediakan saja untuk diisi di class anak lainnya.

    Terminate adalah proses akhir dari suatu Scene sebelum pindah ke Scene lain.

    Hal-hal yang dikerjakan disana adalah nge-freeze screen terlebih dahulu untuk

    tujuan transisi.

    Dispose_all_window adalah method untuk nge-dispose / destroy object2 window

    yang ada disana agar tidak menuh2in memori. Dispose_main_viewport sama juga

    fungsinya. Kalau kalian ngga gitu paham dengan 2 method itu, bisa diabaikan dan

    kembali lagi nengok kalo scripting level kalian dah tinggi :v