Universitas Kristen Maranatha
ABSTRACT
Grid-tiling sandbox game is a game where its world is made of tiled blocks. Player is given the ability to tamper the world such as take and place blocks. Creation of grid-tile sandbox game framework meant to help further research or creation of a grid-tiling sandbox game. The main object of this research is method for managing grid-tile blocks in the game world. Analytics to determine functions needed for framework are done by comparing a couple of similar game framework. A method to handle this process is to cut the game world to smaller world chunks. Grid-tile blocks processing with world chunks can be done by choosing the chunks so blocks processing isn’t done to all blocks. The early modelling of framework was using UML (Unified Modelling Language). Through research testing, world chunk used in framework is rectangle shaped and has a 5x5 dimension. Implementation testing was also done to check whether framework works normally.
ABSTRAK
Game grid-tiling sandbox adalah sebuah game dimana dunia dari game terbentuk dari blok-blok
yang tersusun mengubin. Pemain diberikan kemampuan untuk menata ulang dengan cara mengambil dan menaruh blok. Pembuatan framework game grid-tile sandbox bertujuan untuk membantu penelitian lebih lanjut atau pembuatan dari game grid-tiling sandbox. Hal utama yang menjadi objek penelitian dari penelitian ini adalah cara untuk menanggulangi pemrosesan blok grid-tile dengan jumlah yang banyak dalam dunia game. Analisis untuk fungsi yang diperlukan dalam framework dilakukan dengan mengamati beberapa framework yang sejenis. Salah satu cara untuk menanggulangi pemrosesan tersebut adalah dengan memotong-motong dunia game menjadi potongan-potongan yang lebih kecil. Pemrosesan blok grid-tile menggunakan pemotongan dapat dilakukan dengan pemilihan potongan sehingga proses tidak dilakukan pada seluruh blok grid-tile. Pemodelan awal dari framework menggunakan UML(Unified Modelling Language). Melalui hasil pengujian, didapat bahwa potongan yang digunakan dalam framework berbentuk persegi dengan ukuran 5x5. Selain itu pengujian implementasi juga dilakukan untuk mengecek apakah framework dapat berjalan dengan benar.
i
Universitas Kristen MaranathaDAFTAR ISI
DAFTAR ISI ... i
DAFTAR GAMBAR ... iii
DAFTAR TABEL ... iv
DAFTAR NOTASI/ LAMBANG ...v
BAB I PENDAHULUAN ... 1
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan ... 2
1.4 Batasan Masalah ... 3
1.5 Metodologi Penelitian ... 3
1.6 Sistematika Pembahasan ... 3
BAB II LANDASAN TEORI ... 5
2.1 Video Game ... 5
2.2 Sandbox ... 5
2.3 Scrolling ... 6
2.4 Framework ... 7
2.5 Microsoft XNA ... 8
BAB III ANALISIS DAN PEMODELAN ...10
3.1 Analisis ...10
3.2 Arsitektur Framework ... 11
3.2.1 Use Case Diagram Framework ... 11
3.2.2 Class Diagram ...17
BAB IV HASIL IMPLEMENTASI ...30
4.1 Chunk Management ...30
4.2 Character Management ...36
4.1 Abstract Class...39
4.2.1 Class Character ...40
4.2.2 Class Inventory ...42
4.2.3 Class ChunkManager ...45
4.2.4 Class CharacterManager ...48
4.2.5 Class MainGame ...49
BAB V PENGUJIAN ...51
5.1 Pengujian Framework ...51
5.1.1 Update Current Chunk ...51
5.1.2 AksiDamage Tile ...55
5.1.3 Aksi Place Tile ...57
5.1.4 Aksi Spawn Item ...60
5.1.5 Aksi Spawn Character ...62
5.1.6 Check Character Collision ...65
5.2 Pengujian Framework Lainnya...72
5.3 Pengujian Implementasi ...74
5.3.1 Game Hasil Implementasi Pertama ...74
5.3.2 Game Hasil Implementasi Kedua ...79
BAB VI SIMPULAN DAN SARAN ...84
6.1 Simpulan ...84
6.2 Saran ...84
iii
Universitas Kristen MaranathaDAFTAR GAMBAR
Gambar 2.1 Contoh Destructible Environment ...6
Gambar 2.2 XNA Life Cycle ...9
Gambar 3.1 Use Case Diagram Framework ... 11
Gambar 3.2 Sequence Diagram Pemotongan Peta Dunia ...13
Gambar 3.3 Activity Diagram Pemotongan Peta Dunia ...14
Gambar 3.4 Sequence Diagram Pemrosesan Potongan Peta...18
Gambar 3.5 Activity Diagram Pemrosesan Potongan Peta ...19
Gambar 3.6 Sequence Diagram Penaruhan Tile...20
Gambar 3.7 Activity Diagram Penaruhan Tile ...21
Gambar 3.8 Sequence Diagram Perusakan Tile ...22
Gambar 3.9 Activity Diagram Perusakan Tile ...23
Gambar 3.10 Sequence Diagram Pengecekan Kolisi Karakter ...24
Gambar 3.11 Activity Diagram Pengecekan Kolisi Karakter...25
Gambar 3.12 Sequence Diagram Memunculkan Karakter ...26
Gambar 3.13 Activity Diagram Memunculkan Karakter...27
Gambar 3.14 Diagram Memunculkan Benda ...28
DAFTAR TABEL
Tabel 3.1 Perbandingan Fitur Framework ...10
Tabel 5.1 Tabel Pengujian Update Current Chunk ...53
Tabel 5.2 Tabel Pengujian Waktu Update Current Chunk ...54
Tabel 5.3 Tabel Pengujian Aksi Damage Tile ...56
Tabel 5.4 Tabel Pengujian Waktu Aksi Damage Tile ...57
Tabel 5.5 Tabel Pengujian Aksi Place Tile ...58
Tabel 5.6 Tabel Pengujian Waktu Aksi Place Tile ...59
Tabel 5.7 Tabel Pengujian Aksi Spawn Item ...61
Tabel 5.8 Tabel Pengujian Waktu Spawn Item ...61
Tabel 5.9 Tabel Pengujian Spawn Character ...63
Tabel 5.10 Tabel Pengujian Waktu Spawn Character ...65
Tabel 5.11 Tabel Pengujian Check Character Collision ...68
Tabel 5.12 Tabel Pengujian Waktu Check Character Collision...71
Tabel 5.13 Tabel Pengujian Waktu Eksekusi Update ...72
v
Universitas Kristen MaranathaDAFTAR NOTASI/ LAMBANG
Jenis Notasi/Lambang Nama Arti
Use Case
Aktor
Menunjukkan orang yang
beradadalamsuatusistem
Use Case
Use Case
Menunjukkanfungsionalitasdarisuatusist
em
Use Case
Communication
Menunjukkansuatu proses komunikasi
Activity
Diagram Initial State Menunjukkan proses dimulainyaaktivitas
Activity Diagram
State1 Action State Menunjukkansuatuaksi
Activity Diagram
Decision Menunjukan proses keputusan
Jenis Notasi/Lambang Nama Arti
Activity Diagram
Final State Menunjukkan berakhirnya suatu aksi
Activity
Diagram Control Flow Menunjukkan aksi dari proses
Sequence Diagram
Lifeline Menunjukkan partisipan dalam interaksi
Sequence
Diagram Activation Menunjukkan jangka waktu pada lifeline
Sequence
Diagram Message
Menunjukkan jenis komunikasi antara
lifeline
Sequence Diagram
Reply Message Menunjukkan jenus balikan dari message
Sequence
Diagram UML Frame
Menunjukkan status kondisional atau
vii
Universitas Kristen MaranathaJenis Notasi/Lambang Nama Arti
ERD Strong Entity Menunjukkanentitas kuat
ERD Relationship Menunjukkan hubungan antar entitas
ERD Attribute Menunjukkan atribut pada entitas
Flowchart Process Menandakan sesuatu sedang dilakukan
Flowchart Decision
Menandakan keputusan diperlukan untuk
lanjut
Flowchart Line Menandakan alur dariflowchart
BAB I PENDAHULUAN
1.1
Latar Belakang
Game sandbox adalah sebuah game dimana pemain dapat berpetualang dengan bebas dalam
sebuah dunia game. Pemain juga diberikan kebebasan untuk memilih bagaimana atau kapan menyelesaikan sebuah tujuan(Rollings & Adams, 2003). Penghalang-penghalang buatan seperti dinding yang tak terlihat atau layar loading tidak terdapat pada game sandbox. Pemain tidak hanya dapat menjelajahi dunia game, tetapi pemain juga dapat mengubah dunia game tersebut seperti contohnya membuat atau menghancurkan jalan atau penghalang, menggali tanah, membangun sesuatu, dan lainnya.
Sebuah dunia dalam game dapat berbentuk petak lapangan atau disebut juga terrain. Terrain pada game 2 dimensi dapat dibentuk dengan menggunakan teknik pengubinan. Teknik pengubinan terrain dikenal juga dengan istilah tiling dan memiliki satuan ukuran tile. Peta atau dunia dari tile terrain merupakan kumpulan dari banyak tile. Tile dapat memiliki tipe-tipe yang merepresentasikan jenis terrain seperti tanah, batu, rumput, dan sebagainya.
2
Universitas Kristen Maranatha pengguna walaupun dapat menerima tambahan dari pengguna. Pengembangan sebuah game juga dapat dibantu menggunakan framework. Contohnya pada game Crysis menggunakan framework CryEngine yang merupakan framework untuk game first-person shooting.Pembuatan sebuah framework untuk gamegrid-tiling sandbox dapat membantu penelitian lebih lanjut mengenai game grid-tiling sandbox dan dapat membantu pembuatan game grid-tiling sandbox selanjutnya. Framework akan menyediakan fungsi-fungsi umum yang terdapat pada
game grid-tiling sandbox dan menyediakan juga tempat-tempat untuk pengguna menambahkan
kode-kode atau fitur yang diperlukan.
1.2
Rumusan Masalah
Terdapat rumusan masalah sebagai berikut:
1. Bagaimana menggunakan potongan peta pada dunia game yang terbentuk dari dari tile? 2. Bagaimana menentukan bentuk dan besar potongan peta untuk dunia game yang terbentuk
dari tile?
1.3
Tujuan
Tujuan dari pembuatan game adalah:
1. Melakukan pemrosesan hanya kepada sebagian potongan peta hasil pemotongan dunia yang
terdiri dari tile berjumlah banyak sehingga tidak perlu memroses seluruh peta..
2. Menentukan bentuk dan besar potongan peta untuk dunia game yang terbentuk dari tile
1.4
Batasan Masalah
Batasan yang ada dalam pembuatan framework ini adalah: 1. Framework digunakan untuk Microsoft XNA 4.0.
2. Framework ditujukan untuk pembutan game sandbox side-scrolling platformer. 3. Peta terrain framework berupa 2 dimensi.
4. Tile yang membentuk dunia game berbentuk persegi.
1.5
Metodologi Penelitian
Urutan metodologi penelitian yang digunakan dalam pembuatan framework ini adalah :
1. Melakukan analisa dari keperluan framework. Analisa dilakukan melalui referensi pustaka dan pengamatan dari framework sejenis.
2. Menentukan metode ukuran dan besar potongan peta.
3. Melakukan pengujian terhadap ukuran dan besar potongan peta yang telah ditentukan pada poin 2. Jika pengujian menghasilkan kegagalan kembali ke poin 2.
4. Melakukan pendesainan dan pemodelan framework. 5. Implementasi.
6. Pengujian framework. Jika terdapat kegagalan pada potongan peta maka kembali ke poin 2 dan jika terdapat kesalahan fungsi kembali ke poin 4.
7. Pengujian implementasi framework.
1.6
Sistematika Pembahasan
Sistematika penyajian framework dibagi menjadi enam bab, yaitu: 1. Bab I Pendahuluan
4
Universitas Kristen Maranatha masalah, dan metodologi penelitian dalam penyajian Laporan Tugas Akhir.2. Bab II LandasanTeori
Bagian ini digunakan untuk menjelaskan sandbox, scrolling, tiling, framework, dan Microsoft XNA.
3. Bab III Analisa dan Pemodelan
Bab ini berisi pembahasan mengenai analisis dan arsitektur framework 4. Bab IV Hasil Implementasi
Bab ini berisi penjelasan dari tiap fungsi (method) utama yang dibuat berdasarkan pemodelan pada bab III.
5. Bab V Pengujian
Bab ini berisi pembahasan mengenai pengujian framework dan pengujian implementasi. 6. Bab VI Simpulan dan Saran
BAB III ANALISIS DAN PEMODELAN
3.1
Analisis
Pengamatan dilakukan terhadap framework game grid-tile sandbox yaitu Cubiquity1, Uniblocks Voxel Terrain2, dan ironVoxel3.Berdasarkan pengamatan didapat beberapa hal atau fitur sejenis yang terdapat pada ketiga framework tersebut. Berikut adalah tabel perbandingan antara ketiga framework dan framework yang akan dibuat.
Tabel 3.1 Perbandingan Fitur Framework
Fitur Cubiquity Uniblocks
Voxel Terrain
ironVoxel Framework yang akan dibuat Tile dapat berbentuk kubik atau
halus
Ada Ada Tidak Ada Tidak Ada
Terdapat block editor Tidak Ada Ada Tidak Ada Tidak Ada Pemrosesan dunia game dalam
bentuk potongan-potongan
Ada v Ada Ada
Dapat mengubah dunia game saat permainan
Ada Ada Ada Ada
Dapat membuat game multiplayer Tidak Ada Ada Tidak Ada Tidak Ada
Terdapat generator dunia Tidak Ada Ada Ada Tidak Ada
Pengecekan kolisi objek Ada Ada Ada Ada
Terdapat manajemen benda dasar Tidak Ada Tidak Ada Tidak Ada Ada Game hasil implementasi berupa
dunia 3D atau 2D
3D 3D 3D 2D
Berdasarkan hasil pengamatan, hal penting dalam sebuah game grid-tile sandbox adalah cara
1https://www.assetstore.unity3d.com/jp/#!/content/12689
2https://www.assetstore.unity3d.com/jp/#!/content/14768
11
Universitas Kristen Maranatha pemrosesan dari dunia game. Contoh pemrosesan dari dunia game adalah pemrosesan dari sebuah dunia dengan jumlah tile sangat banyak. Cara yang dapat digunakan adalah cara yang telah dijelaskan pada subbab 2.4 yaitu dengan memotong peta menjadi kelompok-kelompok yang lebih kecil. Program tidak dituntut untuk memroses seluruh kelompok tetapi hanya dilakukan pada sebagian kecil kelompok saja dengan adanya pembagian ini. Kelompok-kelompok mana saja yang akan diproses ditentukan oleh titik fokus dari layar permainan.3.2
Arsitektur Framework
Arsitektur Framework dalam framework menggunakan Unified Modelling Language (UML). Diagram yang digunakan untuk pemodelan adalah use case diagram, Sequence diagram, dan class diagram. Pemodelan dilakukan berdasarkan hasil dari subbab 3.1 analisis.
Sistem Framework
Apps Item Management
Character Management
Chunk Management
Gambar 3.1 Use Case Diagram Framework
3.2.1
Use Case Diagram Framework
untuk mengatur potongan-potongan dari peta dunia, Tile Management yaitu fungsi untuk menambahkan atau mengurangi tile pada peta dunia, Character Management yaitu fungsi untuk mengatur dan memroses karakter, dan Item Management yaitu fungsi untuk mengatur benda dan tas karakter. Pada setiap bagian akan disertakan activity diagram dan sequence diagram.
3.2.1.1 Chunk Management
Seperti yang telah dijelaskan di subbab 3.1, pemrosesan peta dunia dilakukan dengan membuat peta dunia yang besar menjadi potongan-potongan yang lebih kecil. Potongan dari peta dunia yang akan diproses untuk diperbarui dipilih dari titik fokus permainan. Proses pembaruan (update) dilakukan terhadap potongan peta yang sudah dipilih sehingga proses pembaruan tidak perlu dilakukan terhadap seluruh peta dunia. Proses penambahan dan pengurangan tile juga terdapat pada fungsi ini. Chunk Management memiliki fungsi-fungsi yaitu pemotongan peta dunia, pemrosesan potongan peta, penambahan tile, dan perusakkan tile.
1. Pemotongan Peta Dunia
Proses pemotongan peta dunia dilakukan pada saat awal framework dijalankan. Pemotongan dilakukan jika peta dunia yang dimasukkan pengguna memiliki besar di atas 5x5 tile. Pemotongan peta dunia dilakukan mengikuti aturan besar setiap potongana dalah 5x5. Jika besar peta dunia masukan dari pengguna tidak berkelipatan 5 maka potongan peta yang memiliki nilai kurang akan diisi dengan tile kosong.Sequence diagram dan activity diagramdari proses pemotongan peta dunia dapat dilihat pada gambar 3.2 dan gambar 3.3.
13
Universitas Kristen Maranatha potongan-potongan. Setelah menerima peta dunia secara utuh, Chunk Manager akan mengecek apakah ukuran peta dunia lebih kecil atau lebih besar dari besar potongan yang digunakan. Jika ukuran peta dunia diatas ukuran potongan, Chunk Manager akan melakukan pemotongan secara berurutan. Saat mengambil potongan, Chunk Manager akan mengecek apakah hasil dari pemotongan akan didapat potongan 5x5 secara utuh atau tidak. Jika potongan yang didapat tidak utuh, maka penambahan data tile kosong akan dilakukan agar potongan menjadi berukuran 5x5. Chunk Manager akan membuat potongan dalam bentuk Tile Chunk menggunakan hasil potongan,. Selanjutnya Tile Chunk akan membuat tile sesuai dengan potongan. Proses ini berlangsung sampai seluruh peta terpotong.ChunkManager TileChunk
memberikan peta dunia
opt
[Ukuran peta dunia lebih dari 5x5]
new(chunk)
Memotong peta
Inisialisasi TileChunk sementara
loop
[endOfMap = false]
Tile Chunk Chunk Manager
Apps
Memberikan peta dunia Menerima peta dunia
[Potongan yang didapat berisi berukuran 5x5]
[Potongan yang didapat kurang dari 5x5] Mengecek ukuran peta dunia
Mengambil potongan berukuran 5x5 dari peta
Membuat potongan 5x5 yang berisi nilai 0 pada bagian yang kurang
Membuat Tile Block dengan masukan nilai dari potongan
[Masih terdapat nilai dari potongan]
[Nilai dari potongan merupakan nilai terakhir]
[Potongan peta sudah mencakup seluruh peta dunia] [Peta dunia belum
semuanya terpotong]
[Peta dunia berukuran diatas 5x5]
[Peta dunia berukuran dibawah 5x5]
Membuat Tile Chunk menggunakan potongan 5x5
Gambar 3.3Activity Diagram Pemotongan Peta Dunia
2. Pemrosesan Potongan Peta
15
Universitas Kristen Maranatha baris atau kolom maka kelompok tile yang bersebelahan dengan nilai baris atau kolom baru akan ditambahkan. Kelompok tile yang tidak bersebelahan dengan nilai baris atau kolom baru akan dibuang sehingga jumlah kelompok menjadi tetap. Penambahan kelompok tile baru dilanjutkan dengan penyesuaian posisi kelompok tile baru tersebut dengan posisi kelompok tile fokus. Sequence diagram dan activity diagram untuk pemrosesan potongan peta dapatdilihat pada gambar 3.4 dan gambar 3.5.
3.
Penambahan TileSistem mengecek apakah terdapat tile atau tidak pada koordinat yang dipilih. Setelah itu pengecekan apakah nilai masukan bertipe tile.Tile akan dimasukkan ke dalam kumpulan tile yang sesuai dengan tipe apakah tile tersebut tile dinding atau pijakan. Sequence diagram dan activity diagram penambahan tile diperlihatkan pada Gambar 3.6 dan 3.7
4.
Perusakkan TileUntuk menghancurkan tile diperlukan untuk mengurangi kekerasan tile terlebih dahulu.Sistem mengecek apakah tile yang ditunjuk kosong atau tidak. Tile yang terpilih akan dikurangi kekerasannya sejumlah kerusakan yang diberikan. Setelah itu pengubahan tekstur tile saat kekerasan tile 33% dan 66%. Sequence diagram dan activity diagram perusakkan tile
diperlihatkan pada Gambar 3.8 dan 3.9
3.2.1.2 Character Management
Character management yang terdapat dalam framework adalah fungsi pengecekan kolisi
sesuatu atau tidak. Pada fungsi untuk memunculkan karakter baru, fungsi pengecekan kolisi karakter digunakan untuk mengecek apakah karakter bertabrakan dengan peta atau tidak. Pemunculan karakter dilakukan jika karakter tidak bertabrakan dengan peta.
1. Pengecekan Kolisi Karakter
Fungsi untuk mengecek kolisi karakter dengan peta digunakan untuk mengecek apakah karatkter tersebut akan menabrak tile atau karakter memilki pijakan atau tidak. Pada karakter terdapat 6 kotak kolisi yaitu kanan atas, atas, kiri atas, kanan bawah, bawah, dan kiri bawah. Pemisahan menjadi 6 kotak kolisi dilakukan karena akan terjadi perlakuan yang berbeda untuk setiap kolisi. Contohnya bila kotak kolisi atas kanan atau kiri karakter berkenaan dengan peta, karakter tidak dapat lanjut berjalan. Bila kotak kolisi bawah kanan atau kiri karakter berkenaan dengan peta tetapi seluruh kotak kolisi atas karakter kosong, maka karakter akan berpindah naik ke tile depannya. Pengecekan kotak kolisi dilakukan berdasar arah pergerakan karakter. Bila karakter bergerak secara horizontal, maka kotak kolisi yang digunakan hanya kanan atau kiri atas dan kanan atau kiri bawah. Sequence diagram dan activity diagram untuk pengecekan kolisi karakter dapat dilihat pada gambar 3.10 dan
gambar 3.11.
2. Memunculkan Karakter Baru
17
Universitas Kristen Maranatha3.2.1.3 Item Management
Item management yang terdapat pada framework adalah fungsi untuk memunculkan benda pada
peta.Untuk memunculkan benda dibutuhkan nilai indeks dan tipe dari benda. Pengecekan terhadap nilai indeks dan tipe benda dilakukan untuk memastikan benda terdapat dalam data. Sequence diagram dan activity diagram untuk memunculkan benda dapat dilihat pada gambar
3.14.
3.2.2
Class Diagram
Berdasarkan sequence diagram dan activity diagram yang telah dibahas sebelumnya, class diagram dari framework dapat dimodelkan. Selain dengan class yang merepresentasikan entitas
ChunkManager TileChunk
opt
[currentChunkCol != chunkCol]
alt
loop
[currentChunkCol > chunkCol]
[I < 2]
alt
[chunkRow + I < 0] i = -1
Penentuan rowIdx dan colIdx
rowIdx = indeks ujung baris
[currentRow + I > indeks ujung baris]
rowIdx = 0
SetPosition(chunks[rowIdx, chunkCol])
currentChunks.Add(chunks[rowIdx, colIdx])
idx = 0
loop
[idx < currentChunks.Count]
alt
[currentChunks[idx].ChunkCol = chunkCol- 1] currentChunk.Remove(idx)
[else]
idx + 1
19
Universitas Kristen Maranatha TileChunk ChunkManager Membandingkan nilai chunkCol dan currentChunkCol Mengecek perbedaan nilai apakah lebih kecil atau lebih besarPenentuan nilai rowIdx dan colIdx
Mengecek nilai currentRow
Mengubah rowIdx menjadi indeks ujung baris
Mengubah rowIdx menjadi 0 [currentRow + i < 0] [else]
[chunkRow + i > indeks ujung baris]
Memindahkan potongan peta pada rowIdx dan chunkCol
Memindahkan posisi blok tile yang terdapat pada potongan
Menambahkan potongan peta ke dalam currentChunks
idx = -1
i + 1
idx = 0
Mengecek nilai chunkCol dari currentChunks[idx]
Membuang potongan ke idx pada currentChunks idx + 1
[else]
[Nilai chunkCol dan currentChunkCol berbeda] [Nilai chunkCol dan
currentChunkCol sama]
[chunkCol > currentChunkCol] [chunkCol <
currentChunkCol]
[i < 2]
[i >= 2]
[idx < currentChunks.count]
[currentChunks[idx].ChunkCol = chunkCol - 1] [chunkRow + 1 <= Indeks ujung baris]
ChunkManager TileChunk TileBlock
PlaceBlock(type)
isPlaceBlock = false
opt
[selectedBlock != null]
opt
[tileType terdapat dalam tileData]
alt [tileType tidak habis dibagi 2]
blocks.AddBlock(tileType, tileHardness)
alt
[tileType = 0]
Mengubah tileType dan tileHardness
true
false [else]
[else]
backBlocks.AddBlock(tileType, tileHardness)
alt
[tileType = 0]
Mengubah tileType dan tileHardness
[else] true
false
21
Universitas Kristen MaranathaTileBlock TileChunk
ChunkManager
Memanggil fungsi penambahan blok baru
Membuat variabel penampung nilai balikan
dengan nilai awal false
Mengecek variabel selectedBlock Mengecek tileType dalam tileData Mengambil besar kekerasan dalam tileData Memanggil fungsi penambahan tile pada kumpulan pijakan
Memanggil fungsi penambahan tile pada kumpulan dinding
Mengecek tipe tile sekarang
Mengembalikan nilai false
Mengubah tipe dan kekerasan tile sesuai besar masukan
Mengembalikan nilai true [tipe tile tidak
habis dibagi 2]
[tipe tile habis
dibagi 2] [tipe tile 0]
Memasukkan nilai hasil fungsi penambahan tile dalam variabel balikan
[selectedBlock != null] [selectedBlock = null]
[tileType tidak
terdapat dalam tileData] [tileType terdapat dalam tileData]
[tipe tile bukan 0]
ChunkManager TileChunk TileBlock
DamageBlock(damage)
opt
[selectedBlock != 0]
DamageBlock(damage)
tileHardness = 0
[else]
[kekerasan tile dibawah 66%]
alt alt
[tileHardness - damage < 0]
tileHardness - damage
[kekerasan tile dibawah 33%]
tekstur berubah ke sangat rusak
tekstur berubah ke sedikit rusak
23
Universitas Kristen Maranatha TileBlock TileChunk ChunkManager Memanggil fungsi perusakan blok Mengecek tile yang terpilih Memanggil method perusakan tile [selectedBlock != 0]Mengecek kekerasan tile Mengurangi kekerasan sejumlah masukan Mengubah kekerasan menjadi 0 Mengecek kekerasan terakhir Mengubah tekstur tile menjadi sangat
rusak
Mengubah tekstur tile menjadi sedikit rusak [Kekerasan tile dikurangi kerusakan lebih kecil dari 0]
[Kekerasan tile dikurangi kerusakan lebih dari 0] [selectedBlock = 0]
[Persentase kekerasan tile dibawah sama dengan 33%]
[Persentase kekerasan tile diatas 33%]
[Persentase kekerasa tile dibawah sama dengan 66%]
[Persentase kekerasan Tile diatas 66%]
CharacterManager Character
CheckCharacterCollision(rectangles)
[endOfList = false]
opt
Normalisasi movement [movement != 0]
[movement.Y > 0] alt
Penghitungan distance
opt
[Rectangle penambahan gerakan bersentuhan dengan kotak kolisi bawah]
opt
[Rectangle penambahan gerakan bersentuhan dengan kotak kolisi bawah]
Menyimpan Rectangle
[movement.Y < 0]
Penghitungan distance
opt
[Rectangle penambahan gerakan bersentuhan dengan kotak kolisi atas]
opt
[Rectangle penambahan gerakan bersentuhan dengan kotak kolisi atas]
Menyimpan Rectangle loop
25
Universitas Kristen Maranatha CharacterManager Character Memanggil fungsi pengecekan kolisi karakter Inisialisasi variabel penyimpan hasil Mengambil 1 Rectangle masukan Mengecek besar movement Normalisasi vektor movement Mengecek besar vektor Y pada vektor normalisasiMengalkulasi jarak vertikal Rectangle dengan
kotak kolisi bawah
Mengecek apakah Rectangle yang telah ditambah vektor
gerakan mengenai kotak kolisi bawah
Mengecek lebih detail kolisi Rectangle dengan
kotak kolisi bawah
Mengecek apakah Rectangle sudah terdapat dalam penyimpanan
Menyimpan Rectangle [Vektor gerakan tidak 0]
[else]
[movement.Y > 0]
[Rectangle bersentuhan dengan kotak kolisi bawah]
[Rectangle bersentuhan dengan kotak kolisi bawah]
[Rectangle belum terdapat dalam penyimpanan] [Rectangle tidak bersentuhn
dengan kotak kolisi bawah]
[movement.Y <= 0]
[Rectangle tidak bersentuhan dengan kotak kolisi bawah]
[Rectangle sudah terdapat dalam penyimpanan]
CharacterManager Character
SpawnCharacter(rectangles)
spawnCheck = true, i = 0
loop
[spawnCheck = true]
alt
[rectangles[i] bersentuhan dengan collisionRectangle] GetRectangle()
collisionRectangle
spawnCheck = false
[else]
i + 1
opt
[spawnCheck = true]
[image:30.595.178.415.102.513.2]menambahkan karakter baru
27
Universitas Kristen MaranathaApps CharacterManager Character
Memanggil fungsi memunculkan karakter
Inisialisasi spawnCheck dan i
Mengecek spawnCheck dan i
Mengambil kotak kolisi karakter
Memberikan kotak kolisi karakter
Mengecek Rectangle[i] dengan kotak kolisi
karakter
spawnCheck = false i + 1
Mengecek nilai spawnCheck
Menambahkan karakter [spawnCheck = true i < rectangles.Count]
[rectangles[i] bersentuhan dengan kotak kolisi]
[else] [else]
[spawnCheck = true]
[image:31.595.89.510.98.563.2][else]
ItemFieldManager ItemField
SpawnItem(index, type, position)
new()
opt
[Indeks dan tipe benda terdapat dalam itemData]
Set(index, type, position)
itemFields.Add(item)
ItemField ItemFieldManager
Apps
Memanggil fungsi memunculkan benda
pada peta
Membuat variabel penyimpanan benda
sementara
Mengecek indeks dan tipe benda pada itemData
Mengubah isi variabel penyimpanan sementara
dengan indeks dan tipe masukan
Menambahkan benda baru ke dalam kumpulan
Inisialisasi benda sementara
Mengubah indeks, tipe, dan posisi [indeks dan tipe benda
terdapat dalam itemData] [undeks dan tipe benda tidak
[image:32.595.95.505.106.364.2]terdapat dalam itemData]
29
Universitas Kristen Maranatha Sprite TileBlock InventoryItem Character ItemField ItemFieldManager Inventory TileChunk ItemDataList ItemData CompoundDataList CompoundData ItemQuantity ChunkManager CharacterManager MainGame TileDataList TileData 1 1 1 1 1 * 1 * 1 1 1 * 1 * 1 * 1 * 1 * 1 *BAB VI SIMPULAN DAN SARAN
6.1
Simpulan
Kesimpulan yang didapatkan berdasarkan hasil pembuatan dan pengujian framework adalah: 1. Berdasarkan hasil pengujian pada bab 5 dapat disimpulkan bahwa penggunaan potongan
peta berukuran 5x5 menghasilkan hasil yang lebih stabil saat resolusi layar lebih kecil. 2. Berdasarkan hasil pengujian pada bab 5 dapat disimpulkan bahwa dengan menggunakan
framework¸ peta tile berukuran besar dapat diproses dengan cepat.
6.2
Saran
Framework ini masih dapat dikembangkan dengan beberapa hal baru seperti:
85
Universitas Kristen MaranathaDAFTAR PUSTAKA
Barton, M., & Bill, L. (2009, April 7). The History of Elite: Space, The Endless
Frontier. Retrieved December 27, 2009, from
www.gamasutra.com/view/feature/3983/the_history_of_elite_space_the_.php
Chen, X. (2004). Developing Application Frameworks in .NET. Apress.
Chris, K. (2007, November 23). Reveal: Why Assassins Creed Fails. Retrieved from
www.blog.wired.com/games/2007/11/reveals-why-assa.html
Cover, J. G. The Creation of Narrative in Tabletop Role-Playing Games. 2010:
McFarland & Company.
Coyier, C. (2009). CSS Sprites: What They Are, Why They're Cool, and How to Use
Them. Retrieved from css-tricks.com: css-tricks.com/css-sprites
Graphics, C. U. (1998, April 15). What is Computer Graphics. Retrieved from
www.graphics.cornell.edu: www.graphics.cornell.edu/online/tutorial
Harris, J. (2007, September 26). Game Design Essentials: 20 Open World Games.
Retrieved July 25, 2008, from
www.gamasutra.com/view/feature/1902/game_design_essentials_20_open_.php
IGN. (2008, March 04). IGN: The Leif Ericson Awards. Retrieved January 10, 2013,
from retro.ign.com: retro.ign.com/articles/861/861550p2.html
Khan, M. E. (2011). Different Approaches to White Box Testing Technique for
Finding Errors. International Journal of Software Engineering and Its
Applications .
Lazaris, L. (2013). CSS Sprites : Useful Technique, or Potential Nuisance ?
Smashing Magazine.
MacEachren, A. (2004). GVIS Facilitating Visual Thinking. New York: The Guilford
Press.
Riehle, D. (2000). Framework Design: A Role Modeling Approach. Zurich.
Rollings, A., & Adams, E. (2003). Andrew Rollings and Ernest Adams on Game
Design. New Riders Publishing.
Rollings, A., & Adams, E. (2006). Fundamentals of Game Design. Prentice Halls.
Ryckert, D. (2011, April). Embracing the Crazy. Game Informer , p. 216.
Sefton, J. (2007, July 11). The Roots of Open-World Games. Retrieved July 25, 2008,
from www.gamesradar.com:
www.gamesradar.com/f/the-roots-of-open-world-games/a-200807111086555044
Shea, D. (2004). Articles: CSS Sprites: Image Slicing's Kiss of Death. A List Apart.
Taylor, C., & Kriegman. (1994). Minimization on the Lie Group SO(3) and Related