Final Battle – Satya Special Force


Final Battle
Satya Special Force

BAB I
PENDAHULUAN

1.1. Latar Belakang Masalah

Penulis membuat game Final Battle “Satya Special Force” sebagai Tugas Akhir untuk Diploma 3, karena didasari oleh berbagai alasan, yaitu:

  1. Penulis menyukai game-game yang bertipe Role Playing Game (Final Fantasy, Chrono Trigger, Tales Of Destiny, dan lain lain);
  2. Sedikitnya game buatan Indonesia yang beredar, apalagi game yang mempunyai Story Line;
  3. Penulis ingin menerapkan kemampuan yang didapat selama perkuliahan dalam pembuatan game berbasis Visual Basic.

Karena ketiga alasan tersebut di atas, akhirnya Penulis memutuskan untuk membuat game bertipe RPG Fighting dengan menggunakan Microsoft Visual Basic 6.0. Game ini mempunyai Story Line yang berbahasa Indonesia walaupun dalam sistemnya masih menggunakan bahasa Inggris karena didasari oleh berbagai alasan. Dalam pembuatan game ini Penulis menekankan pada fungsi fighting dan Artificial Intelligent yang dapat menentukan pemilihan Command pada game ini.

1.2. Batasan Sistem

Game Final Battle “Satya Special Force” mempunyai 3 mode permainan, yaitu:

  1. Story Mode, user akan menyelesaikan suatu cerita yang telah disediakan oleh Penulis.
  2. One Player Mode (Human Versus Computer), user akan melawan komputer untuk mendapatkan point, yang selanjutnya point akan digunakan untuk menambah kemampuan user.
  3. Two Player Mode (Human Versus Human), sama seperti One Player Mode, hanya saja user melawan user lain dengan menggunakan satu komputer.

Game Final Battle “Satya Special Force” juga dilengkapi dengan Edit Character Mode, yang berfungsi untuk:

  1. Pembuatan karakter baru, user dapat memberikan nama, memilih gender, dan memilih satu dari enam Job yang telah disediakan oleh Penulis.
  2. Pengeditan karakter yang sudah ada, user dapat mengedit karakter yang dibuatnya. Sebelum melakukan pengeditan, user harus memasukkan password yang digunakan untuk melindungi karakter tersebut.

1.3. Rumusan Masalah

Beberapa rumusan masalah yang akan dikemukakan dalam pembuatan game ini:

  1. Bagaimana cara membuat game RPG Fighting yang mudah dimainkan oleh semua golongan umur.
  2. Bagaimana cara membuat logika fighting dalam game ini.
  3. Bagaimana cara membuat AI sederhana, sehingga komputer dapat menjalankan karakter serupa dengan manusia.
  4. Dapatkah user membuat karakter sesuai dengan keinginannya.
  5. Dapatkah user menaikkan kemampuan dari karakter yang dibuatnya.

1.4. Tujuan

Beberapa tujuan yang ingin dicapai oleh Penulis dalam pembuatan game ini:

  1. Dapat membuat game RPG Fighting sederhana dengan user friendly yang mudah dipahami oleh semua golongan umur.
  2. Membuat logika fighting yang efektif sehingga mudah untuk dipelajari.
  3. Membuat AI yang mempunyai tingkat kecerdasan yang dapat mengerti setiap kelemahan dari karakter yang menjadi lawannya.
  4. Membuat sebuah game di mana user dapat membuat, mengedit, dan menjalankan karakter yang dibuatnya.

BAB II
PERANCANGAN SISTEM

2.1. Spesifikasi Sistem

Game ini mempunyai beberapa spesifikasi agar dapat berjalan secara optimal:

  1. Processor: Intel Pentium 3 CPU 1GHz
  2. Memory: 256MB RAM
  3. Sistem Operasi: Microsoft Windows XP Professional

2.2. Perancangan Program
2.2.1. Kamus Data

Dalam pembuatan game ini, Penulis menggunakan beberapa kata sebagai kata kunci untuk memberikan penjelasan yang sejelas- jelasnya, kata kunci tersebut adalah:

  1. Fight: Sebuah Command untuk melakukan serangan fisik ke lawan.
  2. Skill: Sebuah Command untuk melakukan serangan magis ke lawan. Setiap Job memiliki nama Command Skill yang berbeda, yaitu Grace, Might, Power, Brain, Shoot, dan Trick.
  3. Stuff: Sebuah Command untuk meminum obat yang dimiliki oleh karakter.
  4. Caster: User yang melakukan suatu aksi dalam pertarungan. Misalnya, Yosua melakukan Fight, maka Yosua disebut sebagai Caster.
  5. Target: User yang menjadi objek dari suatu aksi dalam pertarungan. Misalnya, Yosua melakukan Fight ke Eunike, maka Eunike disebut sebagai Target. Yosua melakukan Skill Heal ke dirinya sendiri, maka Yosua disebut sebagai Target.
  6. HP (Health Point): Pengukur kesehatan karakter dalam pertarungan. Jika HP dari suatu karakter sama dengan 0, maka karakter tersebut kalah.
  7. MP (Magic Point): Sesuatu yang dibutuhkan oleh karakter untuk mengeluarkan Skill yang dimilikinya.
  8. STR (Strength): Pengukur kekuatan serangan fisik.
  9. DEF (Defense): Pengukur pertahanan serangan fisik.
  10. SPR (Spirit): Pengukur kekuatan dan pertahanan Skill.
  11. AGI (Agility): Pengukur kecepatan serangan, semakin besar AGI semakin cepat ATB terisi.
  12. Status: Penunjuk keadaan dari karakter, melingkupi HP, MP, STR, DEF, SPR, AGI dan status spesial.

2.2.2. Algoritma Fight

Berikut ini adalah algoritma yang digunakan untuk Command Fight:

  1. Inisialisasi Caster dan Target.
  2. Penghitungan Damage berdasarkan STR(Caster).
  3. Penghitungan Resist berdasarkan DEF(Target).
  4. Penghitungan kemungkinan Critical berdasarkan LUK(Caster) dan menambah besar Damage jika kondisi terpenuhi.
  5. Penghitungan kemungkinan Dodge berdasarkan LUK(Target) dan mengurangi besar Damage dengan Resist jika kondisi terpenuhi.
  6. Pengecekan Damage, jika Damage kurang dari satu, maka Damage sama dengan 1.
  7. Penghitungan point yang didapat berdasarkan Damage.
  8. Pengurangan HP(Target) dengan Damage.
  9. Pengecekan HP, jika HP(Target) kurang dari nol, maka HP(Target) sama dengan nol.
  10. Pemberian nilai animasi dan efek suara.

2.2.3. Algoritma Skill

Berikut ini adalah algoritma yang digunakan untuk Command Skill secara umum:

  1. Inisialisai Caster dan Target.
  2. Pengecekan MP(Caster), jika MP(Caster) kurang dari MP yang dibutuhkan Skill, maka Skill tidak dapat digunakan. Caster akan kehilangan satu giliran.
  3. Pemberian nilai animasi dan efek suara.

Berikut ini adalah algoritma yang digunakan untuk Command Skill yang bersifat offensif, yaitu Skill yang mengurangi HP(Target), mengurangi MP(Target), menambah HP(Caster), dan Skill yang menambah MP(Caster):

  1. Penghitungan efek Skill yang tergantung dari SPR(Caster) dikurangi SPR(Target) atau STR(Caster) dikurangi DEF(Target).
  2. Penghitungan point dari efek Skill.
  3. Penambahan atau pengurangan HP atau MP.
  4. Pengecekan HP, jika HP melebihi MaxHP, maka HP sama dengan MaxHP. Jika HP kurang dari 0, maka HP sama dengan 0.
  5. Pengecekan MP, jika MP melebihi MaxMP, maka MP sama dengan MaxMP. Jika MP kurang dari 0, maka MP sama dengan 0.

Berikut ini adalah algoritma yang digunakan untuk Command Skill yang bersifat support, yaitu Skill yang menambah atau mengurangi HP atau MP secara tidak langsung, Skill yang mengubah STR, DEF, SPR, dan AGI:

  1. Menambah atau mengurangi HP, MP, memperbesar atau memperkecil STR, DEF, SPR, AGI.
  2. Mengubah Status dari Caster atau Target sesuai nomor satu.
  3. Menentukan waktu Status kembali normal.

Berikut ini adalah algoritma yang ditambahkan ke beberapa Command Skill untuk membuat Skill tersebut menjadi spesial:

  1. Skill Cold: Menentukan waktu Freeze yang berfungsi untuk menghentikan ATB dari Target untuk sementara waktu.
  2. Skill Dark: Menghitung 5% kemungkinan Target mengalami kematian mendadak.
  3. Skill Reflect: Memberi nilai Reflect yang berfungsi mengembalikan serangan magis dari Command Skill.
  4. Skill Mirage: Memberi nilai Mirage yang berfungsi menghindari serangan fisik dari Command Fight.
  5. Skill StealPoint: Menambah point Caster secara langsung.

2.2.4. Algoritma Stuff

Berikut ini adalah algoritma yang digunakan untuk Command Stuff:

  1. Inisialisasi Caster dan Target.
  2. Pengecekan jumlah Stuff yang dimiliki oleh Caster, jika jumlah Stuff sama dengan 0, maka Stuff tidak dapat digunakan.
  3. Menentukan efek dari setiap Stuff.

2.2.5. Algoritma AI

Dalam game ini Penulis membuat AI yang diberi nama AIKE. Berikut ini adalah algoritma yang digunakan untuk pembuatan AI:

  1. Pengecekan Status, jika AIKE terkena Poison atau Fatigue, maka AIKE akan menggunakan Command Stuff yang mempunyai efek mengembalikan Status ke normal.
  2. Pengecekan HP, jika HP dari AIKE dalam keadaan kritis, maka AIKE akan menggunakan Command Stuff yang mempunyai efek menyembuhkan HP.
  3. Pengecekan MP, jika AIKE kehabisan MP, maka AIKE akan menggunakan Command Stuff yang mempunyai efek menyembuhkan MP.
  4. Pengecekan lawan, jika lawan dalam keadaan Mirage atau STR(AIKE)-DEF(Target)<SPR(AIKE)-SPR(Target), maka AIKE akan menggunakan Command Skill. Jika lawan dalam keadaan Reflect atau STR(AIKE)-DEF(Target)>SPR(AIKE)-SPR(Target), maka AIKE akan menggunakan Command Fight.
  5. Pengecekan Job, AIKE akan menggunakan Skill kas dari Job tersebut.

2.3. Perancangan Database
2.3.1. Tabel Job

Tabel Job menyimpan data yang menjadi patokan dalam pembuatan karakter.

2.3.2. Tabel JobSkill

Tabel JobSkill menyimpan data yang menjadi patokan dalam pembagian Skill ke setiap Job dan memberikan keterangan ketika suatu Skill dipilih oleh user.

2.3.3. Tabel Item

Tabel Item menyimpan data yang menjadi patokan dalam memberikan keterangan ketika suatu Item dipilih oleh user, membatasi penggunaan Equip berdasarkan Job.

2.3.4. Tabel Chara

Tabel Chara menyimpan data yang akan dibuka pertama kali saat pembacaan database.

2.3.5. Tabel CharaParameter

Tabel CharaParameter menyimpan data karakter yang telah dibuat oleh user.

2.3.6. Tabel CharaEquipment

Tabel CharaEquipment menyimpan Equip yang sedang dipakai oleh karakter yang dibuat oleh user.

2.3.7. Tabel CharaItem

Tabel CharaItem menyimpan Item yang dimiliki oleh karakter yang dibuat oleh user.

2.4. Perancangan Tampilan

Pada waktu game ini dijalankan, akan muncul sebuah form yang berisi judul dari game ini beserta menu yang dapat dipilih oleh user (Story Mode, One Player Mode, Two Player Mode, Edit Character, Help, dan Exit) dan keterangan oleh siapa game ini dibuat.

Jika user memilih Story Mode, maka akan terbuka sebuah form baru yang berisi sebuah gambar yang disertai dengan tulisan. Jika di dalam cerita itu terjadi suatu pertarungan, maka akan terbuka sebuah form Fighting yang akan dijalankan oleh user. Jika user berhasil memenangkan pertarungan, maka cerita akan dilanjutkan, tetapi sebaliknya jika user kalah, maka permainan akan berakhir. Begitu pun seterusnya hingga cerita terselesaikan.

Jika user memilih One Player Mode atau Two Player Mode akan membuka sebuah form Character Select yang berisi enam karakter utama yang disediakan oleh Penulis dan karakter hasil Edit Character.

Keenam karakter utama tersebut adalah:

  1. Yosua, seorang Priest, mempunyai Health Point terbesar di antara lainnya, mempunyai keahlian dalam bidang penyembuhan, memenangkan pertarungan dengan mempertahankan dirinya dari setiap serangan lawan;
  2. Eunike, seorang Wizard, mempunyai Magic Point terbesar di antara lainnya, mempunyai keahlian dalam bidang sihir, memenangkan pertarungan dengan mengandalkan sihirnya;
  3. Jasson, seorang Knight, mempunyai Strength terbesar di antara lainnya, mempunyai keahlian dalam seni pedang, memenangkan pertarungan dengan mengandalkan serangan fisik;
  4. Robby, seorang Oracle, mempunyai Defense terbesar di antara lainnya, mempunyai keahlian sihir yang unik (membahayakan tapi tidak mematikan), memenangkan pertarungan dengan menggunakan sihir dan serangan fisik yang menentukan;
  5. Lilik, seorang Hunter, mempunyai Spirit terbesar di antara lainnya, mempunyai keahlian memanah dan memasang jebakan, memenangkan pertarungan dengan teknik memanahnya;
  6. Frans, seorang Thieve, mempunyai Speed terbesar di antara lainnya, mempunyai keahlian mencuri dan meracuni, memenangkan pertarungan dengan meracuni lawannya.

Setelah user memilih salah satu karakter, maka akan tampil sebuah form Fighting. Pertarungan berakhir jika salah satu karakter mempunyai Health Point sama dengan 0. Karakter yang mempunyai Health Point sama dengan 0 akan dinyatakan kalah dan Karakter lain dinyatakan menang.

Di form Fighting ada beberapa hal yang penting, misalnya HP, merupakan ukuran yang menentukan kesehatan karakter, HP=0 berarti karakter mati atau kalah dalam pertarungan itu. MP merupakan ukuran yang dibutuhkan dalam mengeluarkan Skill yang dimiliki karakter, MP=0 berarti karakter tidak dapat mengeluarkan Skill. ATB merupakan ukuran yang menentukan kapan saatnya karakter bergerak, jika ATB sudah mencapai 100% maka saatnya karakter bergerak, setelah karakter memilih suatu Command maka ATB akan direset kembali menjadi 0%.

Jika user memilih Edit Character, maka akan muncul form Editing Character. Form ini mempunyai menu utama Make New Character dan Load Old Character. Menu Make New Character akan membuka form Make Character. Di form ini, user harus mengisi nama, Job, gender, dan password untuk membuat karakter baru. Menu Load Old Character akan membuka form Load Character. Di form ini user akan memilih karakter yang telah dibuatnya, setelah menekan tombol konfirmasi, user harus mengisi password untuk meload karakter tersebut. Jika password benar, maka akan terbuka tab yang berisi segala informasi mengenai karakter tersebut dan menu Delete Character. Di tab tersebut user dapat melakukan konfigurasi Equipment, pembelian item, dan penjualan Item.

2.5. Perancangan User Interface Flow (Jaringan Semantik)

BAB III
IMPLEMENTASI SISTEM

3.1. Form Utama

Form Utama merupakan form yang aktif pertama kali waktu game ini dijalankan. Di form ini terdapat pilihan menu yang dapat dipilih dengan menggunakan tombol panah atas dan tombol panah bawah, dan mengkonfirmasinya dengan menekan tombol Enter.

Private Sub Form_Load()
    If App.PrevInstance Then End
    Me.Height = 8000
    Me.Width = 10000
    LnKiriKanan.X2 = 0
    LnKananKiri.X1 = 10000
    BukaKoneksi
    GameMenu(0) = "STORY MODE"
    GameMenu(1) = "ONE PLAYER MODE"
    GameMenu(2) = "TWO PLAYERS MODE"
    GameMenu(3) = "EDIT CHARACTER"
    GameMenu(4) = "HELP"
    GameMenu(5) = "EXIT"
    GameMode = 1
    GameMaker = "Made By: Holy Circle @ 2005; Programmer: Yosua Onesimus (562002016); Story Line: Yosua Onesimus (562002016); Battle System: Yosua Onesimus (562002016); Character Designer: Jasson Prestiliano; "
End Sub

Listing program di atas dijalankan saat form pertama kali dipanggil. Maksud dari listing program di atas adalah

  • ­Melakukan pengecekan, apakah aplikasi telah berjalan atau tidak.
  • ­Menyeting tampilan, mengeset database, dan memberi nilai awal.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim A As Integer, Z As Integer
    If KeyCode = 38 Then 'For Up
        GameMode = GameMode - 1
    ElseIf KeyCode = 40 Then 'For Down
        GameMode = GameMode + 1
    ElseIf KeyCode = 13 Then 'For OK
        Select Case GameMode
        Case 0: Call Story_Mode_Click 'Story Mode
        Case 1: Call One_Player_Mode_Click 'One Player Mode
        Case 2: Call Two_Player_Mode_Click 'Two Player Mode
        Case 3: Call Edit_Character_Click 'Edit Character
        Case 4: Call Content_Click 'Help
        Case 5: Call Exit_Click 'Exit
        End Select
    End If
    If GameMode < 0 Then         GameMode = 5     ElseIf GameMode > 5 Then
        GameMode = 0
    End If
    A = GameMode - 1
    Z = GameMode + 1
    If A < 0 Then A = 5     If Z > 5 Then Z = 0
    LblGameMenu(0).Caption = GameMenu(A)
    LblGameMenu(1).Caption = GameMenu(GameMode)
    LblGameMenu(2).Caption = GameMenu(Z)
End Sub

Listing program di atas dijalankan saat user menekan tombol pada keyboard. Maksud dari listing program di atas adalah

  • Jika user menekan tombol panah atas atau tombol panah bawah, maka nilai GameMode akan diubah.
  • ­Jika user menekan Enter, maka sederetan perintah program akan dieksekusi berdasarkan nilai GameMode.
  • ­Menyeting tampilan agar sesuai dengan nilai GameMode.

3.2. Form Story Mode

Form Story Mode merupakan form yang aktif ketika user memilih Story Mode. Form ini hanya menampilkan tulisan yang berisi cerita tentang perjalanan seorang Priest untuk mengalahkan seorang Thieve yang berusaha mengacaukan keadaan dunia.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim S2 As Story2
    If KeyCode = 13 And Lanjut = True Then
        LblMessage.Caption = ""
        varStory = varStory + 1
        I = 1
        ImgEnter.Visible = False
        Lanjut = False
        Call HapusGambar
        If Face(varStory) <> 0 Then ImgChara(varStory Mod 2) = LoadPicture(App.Path & "\Image\Photo0" & Face(varStory) & ".jpg")
        TmrEnter.Enabled = True
    End If
End Sub

Listing program di atas dijalankan saat user menekan tombol enter. Maksud dari listing program di atas adalah

  • ­Jika user menekan enter pada waktu yang ditentukan, maka sederetan perintah program akan dieksekusi.
  • ­Membersihkan tampilan dan menambah nilai varStory.
Private Sub TmrEnter_Timer()
    If Len(LblMessage.Caption) < Len(Story(varStory)) Then
        LblMessage.Caption = LblMessage.Caption + Mid(Story(varStory), I, 1)
        I = I + 1
    ElseIf Len(LblMessage.Caption) = Len(Story(varStory)) Then
        ImgEnter.Visible = Not ImgEnter.Visible
        Lanjut = True
    End If
End Sub

Listing program di atas untuk menjalankan tampilan pada LblMessage agar terlihat lebih dinamis dan untuk menentukan waktu kapan user harus menekan enter.

3.3. Form Character Select

Form Character Select merupakan form yang muncul ketika user memilih One Player Mode atau Two Players Mode. Form ini mempunyai listbox untuk menampung karakter yang terdapat dalam database, serta image untuk menampung gambar karakter yang dipilih oleh user.

Private Sub Form_Load() 'Loading Character From Database
    Dim Rst As New ADODB.Recordset
    Dim Sql As String
    Sql = "SELECT Chara,ID FROM TableChara ORDER BY ID ASC;"
    With Rst
        .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
        If Not (.BOF And .EOF) Then
            .MoveFirst
            While Not .EOF
                LstChara(0).AddItem .Fields(0), LstChara(0).ListCount
                LstChara(0).ItemData(LstChara(0).ListCount - 1) = .Fields(1)
                LstChara(1).AddItem .Fields(0), LstChara(1).ListCount
                LstChara(1).ItemData(LstChara(1).ListCount - 1) = .Fields(1)
                .MoveNext
            Wend
        End If
        .Close
    End With
    LstChara(0).ListIndex = 0
    LstChara(1).ListIndex = 0
End Sub

Listing program di atas dijalankan saat form pertama kali dipanggil. Maksud dari listing program di atas adalah

  1. ­Mengambil nama karakter dan ID karakter dari database.
  2. ­Menambahkan nama karakter ke item listbox.
  3. ­Menambahkan ID karakter ke itemdata listbox.
Private Sub LstChara_Click(Index As Integer) 'Ambil Photo From File
    If LblChara(Index).Caption = "READY" Then Exit Sub
    Dim Rst As New ADODB.Recordset
    Dim Sql As String
    Sql = "SELECT * FROM TableChara WHERE Chara='" & LstChara(Index).Text & "';"
    With Rst
        .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
        Nama(Index) = LstChara(Index).Text
        TypeChara(Index) = .Fields(2)
        TypeJob(Index) = .Fields(3)
        TypeGender(Index) = .Fields(4)
        .Close
    End With
    ImgChara(Index).Picture = LoadPicture(App.Path & "\Image\Photo" & TypeChara(Index) & TypeJob(Index) & TypeGender(Index) & ".jpg")
End Sub

Listing program di atas dijalankan saat user menekan tombol untuk memilih karakter. Maksud dari listing program di atas adalah

  1. Mengambil nama karakter, tipe karakter, tipe Job karakter, dan tipe gender karakter dari database.
  2. ­Meload gambar sesuai dengan data dari database.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'Game Pad
    Dim I As Integer, Plus As Integer
    'Pemberian Nilai I
    If KeyCode = 87 Or KeyCode = 88 Or KeyCode = 65 Or KeyCode = 68 Then
        I = 0 'Player One
    ElseIf KeyCode = 104 Or KeyCode = 98 Or KeyCode = 100 Or KeyCode = 102 Then
        I = 1 'Player Two
    End If
    'For What?
    If KeyCode = 87 Or KeyCode = 104 Then 'For Up
        If LblChara(I).Caption = "READY" Then Exit Sub
        If LstChara(I).ListIndex > 0 Then LstChara(I).Selected(LstChara(I).ListIndex - 1) = True
    ElseIf KeyCode = 88 Or KeyCode = 98 Then 'For Down
        If LblChara(I).Caption = "READY" Then Exit Sub
        If LstChara(I).ListIndex < LstChara(I).ListCount - 1 Then LstChara(I).Selected(LstChara(I).ListIndex + 1) = True     ElseIf KeyCode = 65 Or KeyCode = 100 Then 'For Cancel         LblChara(I).Caption = ""     ElseIf (KeyCode = 68 Or KeyCode = 102) And LstChara(I).ListIndex > -1 Then 'For OK
        If LblChara(I).Caption = "READY" Then Exit Sub
        Dim Rst As New ADODB.Recordset
        Dim Sql As String
        If LstChara(I).ListIndex < 6 Then 'MainChara
            Call LoadItem(0, I, LstChara(I).ItemData(LstChara(I).ListIndex))
            Sql = "SELECT MaxHP,MaxMP,STR,DEF,SPR,AGI,LUK FROM TableJob WHERE ID=" & LstChara(I).ItemData(LstChara(I).ListIndex) & ";"
            Plus = 0
        Else 'OtherChara
            If LblChara(1 - I).Caption = "READY" And LstChara(I).ItemData(LstChara(I).ListIndex) = LstChara(1 - I).ItemData(LstChara(1 - I).ListIndex) Then
                MsgBox "Harap Pilih Karakter Lain!", vbInformation
                Exit Sub
            End If
            Call LoadItem(1, I, LstChara(I).ItemData(LstChara(I).ListIndex))
            Sql = "SELECT MaxHP,MaxMP,STR,DEF,SPR,AGI,LUK FROM TableCharaParameter WHERE ID=" & LstChara(I).ItemData(LstChara(I).ListIndex) & ";"
            Plus = 0
        End If
        With Rst
            .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
            MaxHP(I) = Plus + .Fields(0): HP(I) = MaxHP(I)
            MaxMP(I) = Plus + .Fields(1): MP(I) = MaxMP(I)
            nSTR(I) = Plus + .Fields(2): STR(I) = nSTR(I)
            nDEF(I) = Plus + .Fields(3): DEF(I) = nDEF(I)
            nSPR(I) = Plus + .Fields(4): SPR(I) = nSPR(I)
            nAGI(I) = Plus + .Fields(5): AGI(I) = nAGI(I)
            LUK(I) = .Fields(6):
            .Close
        End With
        LblChara(I).Caption = "READY"
        If LblChara(1 - I).Caption = "READY" Then
            Dim TP2 As New TwoPlayer2
            TP2.Height = 8000
            TP2.Width = 10000
            TP2.Show vbModal, Me
            Set TP2 = Nothing
            LblChara(0).Caption = ""
            LblChara(1).Caption = ""
        End If
    End If
End Sub

Listing program di atas dijalankan saat user menekan sebuah tombol. Maksud dari listing program di atas adalah

  1. Mengecek tombol yang ditekan oleh user dan mengatur tombol-tombol yang digunakan user.
  2. ­Jika user menekan tombol konfirmasi, maka data karakter akan diambil dari database yang meliputi HP, MP, STR, DEF, SPR, AGI, LUK, dan Item.

3.4. Form Fighting

Form Fighting merupakan form yang muncul ketika user telah memilih karakter yang akan dimainkan. Form ini mempunyai tampilan yang menggambarkan aksi dan status dari karakter.

Private Sub Form_Load() 'Pemberian Nilai Dan Pengaturan Tampilan Awal
    Dim I As Integer
    Dim Rst As New ADODB.Recordset
    Dim Sql As String
    For I = 0 To 1
        TxtNama(I) = Nama(I)
        PicAnima(I).Picture = LoadPicture(App.Path & "\Image\Chara" & TypeChara(I) & TypeJob(I) & TypeGender(I) & I & ".jpg")
        TxtHP(I) = HP(I)
        TxtMP(I) = MP(I)
        TxtMaxHP(I) = MaxHP(I)
        TxtMaxMP(I) = MaxMP(I)
        TmrATB(I).Interval = Int(1000 / AGI(I))
        Select Case TypeJob(I)
            Case 1: LstCommand(I).List(1) = "Grace" 'Priest
            Case 2: LstCommand(I).List(1) = "Might" 'Wizard
            Case 3: LstCommand(I).List(1) = "Power" 'Knight
            Case 4: LstCommand(I).List(1) = "Brain" 'Oracle
            Case 5: LstCommand(I).List(1) = "Shoot" 'Hunter
            Case 6: LstCommand(I).List(1) = "Trick" 'Thieve
        End Select
        Sql = "SELECT Skill,ID FROM TableJobSkill WHERE JobID=" & TypeJob(I) & " ORDER BY ID ASC;"
        With Rst
            .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
            .MoveFirst
            While Not .EOF
                LstCommand(I + 2).AddItem .Fields(0)
                LstCommand(I + 2).ItemData(LstCommand(I + 2).ListCount - 1) = .Fields(1)
                .MoveNext
            Wend
            .Close
        End With
        XPoint(I) = 0
    Next
    Call Normal
    Call BGM("Arena00")
End Sub

Listing program di atas dijalankan saat form pertama kali dipanggil. Maksud dari listing program di atas adalah

  1. ­Mengatur tampilan form sesuai dengan data dari database.
  2. ­Mengeset nilai awal dan menormalkan semua status.
  3. ­Menjalankan musik Arena00.
Private Sub LstCommand_Click(Index As Integer)
    Dim Rst As New ADODB.Recordset
    Dim Sql As String
    If Index = 2 Or Index = 3 Then
        Sql = "SELECT Description FROM TableJobSkill WHERE Skill='" & LstCommand(Index).Text & "';"
        With Rst
            .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
            TxtInfo(Caster).Caption = .Fields(0)
            .Close
        End With
    ElseIf Index = 4 Or Index = 5 Then
        Sql = "SELECT Description FROM TableItem WHERE ID=" & LstCommand(Index).ItemData(LstCommand(Index).ListIndex) & ";"
        With Rst
            .Open Sql, Koneksi, adOpenDynamic, adLockOptimistic, adCmdText
            TxtInfo(Caster).Caption = .Fields(0)
            .Close
        End With
        Select Case LstCommand(Index).ItemData(LstCommand(Index).ListIndex)
            Case 1: TxtInfo(Caster).Caption = TxtInfo(Caster).Caption + " On Hand " + CStr(AntiPoison(Index - 4))
            Case 2: TxtInfo(Caster).Caption = TxtInfo(Caster).Caption + " On Hand " + CStr(Potion(Index - 4))
            Case 3: TxtInfo(Caster).Caption = TxtInfo(Caster).Caption + " On Hand " + CStr(Rearm(Index - 4))
            Case 4: TxtInfo(Caster).Caption = TxtInfo(Caster).Caption + " On Hand " + CStr(Remedy(Index - 4))
        End Select
    Else
        TxtInfo(Caster).Caption = ""
    End If
End Sub

Listing program di atas dijalankan saat user menekan tombol untuk memilih Command. Maksud dari listing program di atas adalah

  1. ­Mengambil data dari database sesuai dengan ID Skill atau ID Item yang dipilih user.
  2. ­Menampilkan deskripsi Skill atau Item.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 'Game Pad
    Dim I As Integer 'Menggantikan Caster Sementara
    Dim Act As New Act
    'Pemberian Nilai I
    If KeyCode = 87 Or KeyCode = 88 Or KeyCode = 65 Or KeyCode = 68 Then
        I = 0 'Player One
    ElseIf KeyCode = 104 Or KeyCode = 98 Or KeyCode = 100 Or KeyCode = 102 Then
        I = 1 'Player Two
    End If
    Caster = I
    'For What?
    If KeyCode = 87 Or KeyCode = 104 Then 'For Up
        If LstCommand(2 * Command(I) + I).ListIndex > 0 Then LstCommand(2 * Command(I) + I).Selected(LstCommand(2 * Command(I) + I).ListIndex - 1) = True
    ElseIf KeyCode = 88 Or KeyCode = 98 Then 'For Down
        If LstCommand(2 * Command(I) + I).ListIndex < LstCommand(2 * Command(I) + I).ListCount - 1 Then LstCommand(2 * Command(I) + I).Selected(LstCommand(2 * Command(I) + I).ListIndex + 1) = True     ElseIf KeyCode = 65 Or KeyCode = 100 Then 'For Cancel         If Command(I) > 0 Then
            LstCommand(2 * Command(I) + I).Visible = False
            Command(I) = 0
        End If
        TxtInfo(I).Caption = ""
    ElseIf (KeyCode = 68 Or KeyCode = 102) And LstCommand(I).Visible = True Then 'For OK
        If Command(I) = 0 Then
            If LstCommand(I).ListIndex = 0 Then 'Fight
                Call Act.Fight(I)
                Call UpdateTampilan1
            ElseIf LstCommand(I).ListIndex > 0 Then
                Command(I) = LstCommand(I).ListIndex
                LstCommand(2 * Command(I) + I).Visible = True
                LstCommand(2 * Command(I) + I).Selected(0) = True
                Call LstCommand_Click(2 * Command(I) + I)
            End If
        ElseIf Command(I) = 1 Then 'Skill
            Call Act.Skill(I, LstCommand(2 + I).ItemData(LstCommand(2 + I).ListIndex), LstCommand(2 + I).Text)
            If SkillAnima <> -1 Then
                PicSkill(SkillAnima).Picture = LoadPicture(App.Path & "\Image\Skill" & LstCommand(2 + I).ItemData(LstCommand(2 + I).ListIndex) & ".gif")
            End If
            Call UpdateTampilan1
        ElseIf Command(I) = 2 Then 'Stuff
            Call Act.Stuff(I, LstCommand(4 + I).ItemData(LstCommand(4 + I).ListIndex), LstCommand(4 + I).Text)
            Call UpdateTampilan1
        End If
    End If
End Sub

Listing program di atas dijalankan saat user menekan sebuah tombol. Maksud dari listing program di atas adalah

  1. Mengecek tombol yang ditekan oleh user dan mengatur tombol-tombol yang digunakan user.
  2. ­Jika user menekan tombol konfirmasi, maka sederetan perintah akan dijalankan sesuai pilihan user, yaitu Fight, Skill, atau Stuff.

BAB IV
PENUTUP

4.1. Kesimpulan

Berdasarkan dari program yang telah dibuat dapat diambil beberapa kesimpulan, yaitu:

  1. Game Final Battle “Satya Special Force” ini dirancang untuk dapat membuat user merasa lebih bebas, karena user dapat membuat karakter yang sesuai dan dapat membanggakan karakter yang telah dibuatnya.
  2. Game ini dirancang sedemikian rupa, sehingga user tidak mudah merasa bosan.
  3. Game ini direkomendasikan bagi orang-orang yang tidak terlalu sibuk, sebab game ini dapat menjadikan orang yang memainkannya kecanduan dan sulit untuk beranjak dari tempat duduknya.

4.2. Kelebihan Dan Kelemahan Sistem

Game Final Battle “Satya Special Force” ini mempunyai beberapa kelebihan, yaitu

  1. Game ini mempunyai Story Line yang berbahasa Indonesia yang jarang dimiliki oleh game-game Indonesia.
  2. Game ini mempunyai dua tingkatan AI, sehingga user dapat memilih tingkat kesulitan yang sesuai.
  3. Game ini dapat dimainkan dua user dalam satu komputer.
  4. Game ini mempunyai fasilitas untuk membuat karakter dan mengeditnya.

Selain mempunyai kelebihan game ini juga mempunyai beberapa kelemahan, yaitu

  1. Story Line game ini masih sangat sederhana, belum ada struktur keputusan yang melibatkan user yang dapat mengakibatkan multiple ending.
  2. AI game ini masih dapat dibaca oleh Penulis, belum dapat mengembangkan kemampuannya sendiri.
  3. Gambar animasi pertarungan masih terlalu kaku, belum dapat bersaing dengan game-game lain.
  4. Game ini belum dapat dimainkan oleh banyak orang, belum dapat di LAN.

4.3. Saran

Game ini masih perlu banyak dikembangkan, misalnya penambahan jumlah Job, pengembangan arena pertarungan menjadi semi 3D atau 3D, pengembangan animasi agar terlihat lebih hidup, dan dapat dimainkan secara online.

[download page][download game]

[end-of-file]

Advertisements
%d bloggers like this: