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:
- Penulis menyukai game-game yang bertipe Role Playing Game (Final Fantasy, Chrono Trigger, Tales Of Destiny, dan lain lain);
- Sedikitnya game buatan Indonesia yang beredar, apalagi game yang mempunyai Story Line;
- 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:
- Story Mode, user akan menyelesaikan suatu cerita yang telah disediakan oleh Penulis.
- One Player Mode (Human Versus Computer), user akan melawan komputer untuk mendapatkan point, yang selanjutnya point akan digunakan untuk menambah kemampuan user.
- 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:
- Pembuatan karakter baru, user dapat memberikan nama, memilih gender, dan memilih satu dari enam Job yang telah disediakan oleh Penulis.
- 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:
- Bagaimana cara membuat game RPG Fighting yang mudah dimainkan oleh semua golongan umur.
- Bagaimana cara membuat logika fighting dalam game ini.
- Bagaimana cara membuat AI sederhana, sehingga komputer dapat menjalankan karakter serupa dengan manusia.
- Dapatkah user membuat karakter sesuai dengan keinginannya.
- Dapatkah user menaikkan kemampuan dari karakter yang dibuatnya.
1.4. Tujuan
Beberapa tujuan yang ingin dicapai oleh Penulis dalam pembuatan game ini:
- Dapat membuat game RPG Fighting sederhana dengan user friendly yang mudah dipahami oleh semua golongan umur.
- Membuat logika fighting yang efektif sehingga mudah untuk dipelajari.
- Membuat AI yang mempunyai tingkat kecerdasan yang dapat mengerti setiap kelemahan dari karakter yang menjadi lawannya.
- 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:
- Processor: Intel Pentium 3 CPU 1GHz
- Memory: 256MB RAM
- 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:
- Fight: Sebuah Command untuk melakukan serangan fisik ke lawan.
- 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.
- Stuff: Sebuah Command untuk meminum obat yang dimiliki oleh karakter.
- Caster: User yang melakukan suatu aksi dalam pertarungan. Misalnya, Yosua melakukan Fight, maka Yosua disebut sebagai Caster.
- 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.
- HP (Health Point): Pengukur kesehatan karakter dalam pertarungan. Jika HP dari suatu karakter sama dengan 0, maka karakter tersebut kalah.
- MP (Magic Point): Sesuatu yang dibutuhkan oleh karakter untuk mengeluarkan Skill yang dimilikinya.
- STR (Strength): Pengukur kekuatan serangan fisik.
- DEF (Defense): Pengukur pertahanan serangan fisik.
- SPR (Spirit): Pengukur kekuatan dan pertahanan Skill.
- AGI (Agility): Pengukur kecepatan serangan, semakin besar AGI semakin cepat ATB terisi.
- 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:
- Inisialisasi Caster dan Target.
- Penghitungan Damage berdasarkan STR(Caster).
- Penghitungan Resist berdasarkan DEF(Target).
- Penghitungan kemungkinan Critical berdasarkan LUK(Caster) dan menambah besar Damage jika kondisi terpenuhi.
- Penghitungan kemungkinan Dodge berdasarkan LUK(Target) dan mengurangi besar Damage dengan Resist jika kondisi terpenuhi.
- Pengecekan Damage, jika Damage kurang dari satu, maka Damage sama dengan 1.
- Penghitungan point yang didapat berdasarkan Damage.
- Pengurangan HP(Target) dengan Damage.
- Pengecekan HP, jika HP(Target) kurang dari nol, maka HP(Target) sama dengan nol.
- Pemberian nilai animasi dan efek suara.
2.2.3. Algoritma Skill
Berikut ini adalah algoritma yang digunakan untuk Command Skill secara umum:
- Inisialisai Caster dan Target.
- Pengecekan MP(Caster), jika MP(Caster) kurang dari MP yang dibutuhkan Skill, maka Skill tidak dapat digunakan. Caster akan kehilangan satu giliran.
- 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):
- Penghitungan efek Skill yang tergantung dari SPR(Caster) dikurangi SPR(Target) atau STR(Caster) dikurangi DEF(Target).
- Penghitungan point dari efek Skill.
- Penambahan atau pengurangan HP atau MP.
- Pengecekan HP, jika HP melebihi MaxHP, maka HP sama dengan MaxHP. Jika HP kurang dari 0, maka HP sama dengan 0.
- 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:
- Menambah atau mengurangi HP, MP, memperbesar atau memperkecil STR, DEF, SPR, AGI.
- Mengubah Status dari Caster atau Target sesuai nomor satu.
- Menentukan waktu Status kembali normal.
Berikut ini adalah algoritma yang ditambahkan ke beberapa Command Skill untuk membuat Skill tersebut menjadi spesial:
- Skill Cold: Menentukan waktu Freeze yang berfungsi untuk menghentikan ATB dari Target untuk sementara waktu.
- Skill Dark: Menghitung 5% kemungkinan Target mengalami kematian mendadak.
- Skill Reflect: Memberi nilai Reflect yang berfungsi mengembalikan serangan magis dari Command Skill.
- Skill Mirage: Memberi nilai Mirage yang berfungsi menghindari serangan fisik dari Command Fight.
- Skill StealPoint: Menambah point Caster secara langsung.
2.2.4. Algoritma Stuff
Berikut ini adalah algoritma yang digunakan untuk Command Stuff:
- Inisialisasi Caster dan Target.
- Pengecekan jumlah Stuff yang dimiliki oleh Caster, jika jumlah Stuff sama dengan 0, maka Stuff tidak dapat digunakan.
- 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:
- Pengecekan Status, jika AIKE terkena Poison atau Fatigue, maka AIKE akan menggunakan Command Stuff yang mempunyai efek mengembalikan Status ke normal.
- Pengecekan HP, jika HP dari AIKE dalam keadaan kritis, maka AIKE akan menggunakan Command Stuff yang mempunyai efek menyembuhkan HP.
- Pengecekan MP, jika AIKE kehabisan MP, maka AIKE akan menggunakan Command Stuff yang mempunyai efek menyembuhkan MP.
- 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.
- 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:
- Yosua, seorang Priest, mempunyai Health Point terbesar di antara lainnya, mempunyai keahlian dalam bidang penyembuhan, memenangkan pertarungan dengan mempertahankan dirinya dari setiap serangan lawan;
- Eunike, seorang Wizard, mempunyai Magic Point terbesar di antara lainnya, mempunyai keahlian dalam bidang sihir, memenangkan pertarungan dengan mengandalkan sihirnya;
- Jasson, seorang Knight, mempunyai Strength terbesar di antara lainnya, mempunyai keahlian dalam seni pedang, memenangkan pertarungan dengan mengandalkan serangan fisik;
- 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;
- Lilik, seorang Hunter, mempunyai Spirit terbesar di antara lainnya, mempunyai keahlian memanah dan memasang jebakan, memenangkan pertarungan dengan teknik memanahnya;
- 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
- Mengambil nama karakter dan ID karakter dari database.
- Menambahkan nama karakter ke item listbox.
- 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
- Mengambil nama karakter, tipe karakter, tipe Job karakter, dan tipe gender karakter dari database.
- 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
- Mengecek tombol yang ditekan oleh user dan mengatur tombol-tombol yang digunakan user.
- 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
- Mengatur tampilan form sesuai dengan data dari database.
- Mengeset nilai awal dan menormalkan semua status.
- 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
- Mengambil data dari database sesuai dengan ID Skill atau ID Item yang dipilih user.
- 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
- Mengecek tombol yang ditekan oleh user dan mengatur tombol-tombol yang digunakan user.
- 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:
- 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.
- Game ini dirancang sedemikian rupa, sehingga user tidak mudah merasa bosan.
- 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
- Game ini mempunyai Story Line yang berbahasa Indonesia yang jarang dimiliki oleh game-game Indonesia.
- Game ini mempunyai dua tingkatan AI, sehingga user dapat memilih tingkat kesulitan yang sesuai.
- Game ini dapat dimainkan dua user dalam satu komputer.
- Game ini mempunyai fasilitas untuk membuat karakter dan mengeditnya.
Selain mempunyai kelebihan game ini juga mempunyai beberapa kelemahan, yaitu
- Story Line game ini masih sangat sederhana, belum ada struktur keputusan yang melibatkan user yang dapat mengakibatkan multiple ending.
- AI game ini masih dapat dibaca oleh Penulis, belum dapat mengembangkan kemampuannya sendiri.
- Gambar animasi pertarungan masih terlalu kaku, belum dapat bersaing dengan game-game lain.
- 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]






New Talks™