• Tidak ada hasil yang ditemukan

Pembuatan Framework Game Grid-Tile Sandbox Menggunakan Microsoft XNA 4.0.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pembuatan Framework Game Grid-Tile Sandbox Menggunakan Microsoft XNA 4.0."

Copied!
36
0
0

Teks penuh

(1)

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.

(2)

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.

(3)

i

Universitas Kristen Maranatha

DAFTAR 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)

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

(5)

iii

Universitas Kristen Maranatha

DAFTAR 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

(6)

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

(7)

v

Universitas Kristen Maranatha

DAFTAR 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

(8)

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

(9)

vii

Universitas Kristen Maranatha

Jenis 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

(10)

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.

(11)

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

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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.

(17)

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]

(18)

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

(19)

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 dapat

dilihat pada gambar 3.4 dan gambar 3.5.

3.

Penambahan Tile

Sistem 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 Tile

Untuk 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

(20)

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

(21)

17

Universitas Kristen Maranatha

3.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

(22)

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

(23)

19

Universitas Kristen Maranatha TileChunk ChunkManager Membandingkan nilai chunkCol dan currentChunkCol Mengecek perbedaan nilai apakah lebih kecil atau lebih besar

Penentuan 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]

(24)

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

(25)

21

Universitas Kristen Maranatha

TileBlock 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]

(26)

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

(27)

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%]

(28)

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

(29)

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 normalisasi

Mengalkulasi 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]

(30)

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

(31)

27

Universitas Kristen Maranatha

Apps 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]

(32)

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]

(33)
[image:33.595.105.493.98.392.2]

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 *
(34)

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:

(35)

85

Universitas Kristen Maranatha

DAFTAR 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.

(36)

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

Gambar

Tabel 3.1 Perbandingan Fitur Framework
Gambar 3.1 Use Case Diagram Framework
Gambar 3.2 Sequence Diagram Pemotongan Peta Dunia
Gambar 3.3Activity Diagram Pemotongan Peta Dunia
+7

Referensi

Dokumen terkait

Karena banyaknya siswa yang ada serta tempat belajar yang sudah kurang memadai dan kurang maksimal,maka dari itu Pengurus Yayasan serta DKM Masjid bermaksud untuk

Identifikasi berdasarkan karakter morfologi sporocarp dan basidiospora dari specimen yang dikoleksi dari bawah tegakan alam, tanaman maupun persemaian merbau dan dengan

Dengan adanya ektomikoriza yang terbentuk oleh kehadiran fungi EcM Scleroderma sp., peningkatan keragaan anakan sapih merbau hasil dari perbanyakan melalui biji dapat mencapai

Penelitian ini dilakukan dengan tujuan untuk mengetahui bagaimana pelaksanaan audit internal pada perusahaan serta melihat pelaksanaan pengendalian manajemen

Dengan memanjatkan puji dan syukur ke hadirat Allah SWT serta atas segala rahmat dan karunia-Nya pada penulis, akhirnya penulis dapat menyelesaikan penyusunan Tesis yang

Beberapa hasil samping dari olahan bahan pangan nabati buah dan sayur yang masih bisa dimanfaatkan sebagai benda kerajinan diantaranya kulit jagung, pelepah

Dari perhitungan bilangan reynolds didapat nilai 3219414084,5, dengan hasil perhitungan tersebut lebih dari 4000 maka aliran yang terdapat pada jaket adalah aliran terbulen

Uap atom bebas tersebut akan menyerap energi radiasi yang berasal dari lampu katoda cekung pada panjang gelombang yang khas dan karakteristik untuk setiap unsur..