Anda di halaman 1dari 13

PEMBUATAN GAME RACING 2D “SAFETY RIDING”

DENGAN PENERAPAN ALGORITMA PERLIN NOISE UNTUK


MEMBUAT PETA DENGAN UNITY
Moh.Ibnu Nadhir1, Ari Kurniawan2
Manajemen Informatika, Program Vokasi
Universitas Negeri Surabaya, Surabaya, Indonesia
1moh.19020@mhs.unesa.ac.id, 2arikurniawan@unesa.ac.id

Abstrak— Game merupakan sebuah permainan dengan adanya dilakukan oleh Olsson dan Frank pada 2017, mereka berhasil
sistem yang melibatkan player dengan konflik buatan yang telah menghasilkan sebuah kota yang layak menggunakan Perlin
ditentukan atau adanya peraturan untuk memberikan hasil yang Noise.
terukur dan adanya interaksi antara player dengan sistem didalam Tujuan penelitian ini adalah membangun game racing
permainan tersebut. Aplikasi permainan terbagi menjadi dua yaitu
dengan pembuatan map atau daratan menggunakan algoritma
aplikasi permainan 2D (dua dimensi) dan 3D (tiga dimensi). Metode
Perlin Noise merupakan teknik yang digunakan untuk Perlin Noise. Game ini bernama "Safety Riding" dan juga
mensimulasikan sesuatu yang terlihat berantakan dan natural. Peta berfungsi untuk mengedukasi masyarakat dan pemain game
merupakan rancangan dua dimensi yang berskala medium dari agar lebih berhati-hati dan patuh terhadap peraturan berkendara.
kumpulan objek untuk membuat suatu jalan, tempat, untuk Pembuatan game ini menggunakan PCG untuk menghasilkan
mengetahui apa saja yang ada disekitar, biasanya digunakan untuk konten secara otomatis dalam bentuk 2D.
titik tujuan.Map sangat penting dalam permainan petualangan.
Genre permainan petualangan adalah genre dengan setting tempat II. METODOLOGI PENELITIAN
yang luas untuk menjelajahi suatu tempat atau wilayah. Unity
merupakan software yang dapat digunakan untuk pengembangan A. Pendekatan Penelitian
game yang digunakan diberbagai platform.. Pendekatan ini menggunakan metode pengembangan
waterfall. Metode pengembangan dari pendekatan yang
Kata kunci— Game, Perlin Noise, Petualangan, Unity, Map digunakan dalam penelitian deskriptif-kualitatif. Metode
Waterfall ini merupakan metode pengembangan pada
I. PENDAHULUAN perangkat lunak yang diterapkan secara beruntun, yang
Menurut [1]sebanyak 1,24 juta orang meninggal setiap tahun dianggap seperti air terjun dengan melewati fase-fase beruntun
di seluruh dunia akibat kecelakaan lalu lintas, sementara 20–50 mulai dari analisa kebutuhan (Reqruirements), desain,
juta orang mengalami luka-luka. Kecelakaan lalu lintas juga implementasi dan testing.
menjadi penyebab utama kematian anak di seluruh dunia,
B. Sumber Data Penelitian
dengan rata-rata 1000 anak dan remaja meninggal setiap
harinya dalam rentang usia 10–24 tahun. Di Indonesia, Peneliti mengumpulkan data sekunder. Berikut adalah
kecelakaan lalu lintas merupakan penyebab kematian terbesar metode yang digunakan dalam mencari dan mengumpulkan
ketiga setelah penyakit jantung koroner dan tuberkulosis, data sumber sekunder.
menurut penilaian WHO.[2]. C. Studi Literatur
Perkembangan teknologi di industri game menghasilkan
variasi game yang semakin beragam. Saat ini, topik yang Pada tahap awal penelitian ini, dimulai dengan membuat
banyak diteliti oleh peneliti dalam pembuatan konten game studi literatur yang digunakan untuk menemukan suatu masalah
adalah AI, terutama menggunakan metode Procedural Content dan mencari sumber-sumber terkait dengan penelitian yang
Generation (PCG). Metode ini sukses diterapkan dalam sedang dilakukukan,beberapa tinjauan pustaka yang digunakan
berbagai genre game seperti RPG, Petualangan, Platformer, sebagai acuan untuk memulai penelitian ini. Terkait literatur
Racing, SandBox, dan Simulation. yang dilakukan oleh peneliti menggunakan internet dengan
Dalam pembuatan game racing, elemen pentingnya adalah menggunakan beberapa situs jurnal-jurnal seperti Google
pembuatan map secara otomatis tanpa batasan tertentu. Scholar, ScientDirect dan masih banyak lagi dengan
Penggunaan metode PCG dengan algoritma Perlin Noise menggunakan kata kunci seperti “perlin noise”,”game dengan
menjadi solusi untuk menghasilkan map yang terlihat natural genre racing”,”pembuatan map dengan perlin
karena mengikuti bentuk gradien yang halus daripada noise”,”kecelakaan lalu lintas di indonesia” dan lainnya.
pembuatan acak. Penelitian sebelumnya telah berhasil D. Alur Penelitian
menciptakan kota layak menggunakan Perlin Noise.
Perlin Noise dapat mempresentasikan bentuk daratan yang
lebih terlihat natural dibandingakan dengan membuatnya
secara acak karena dapat menghasilkan angka acak terstruktur
mengikuti bentuk gradien yang halus. Pada penelitian yang

1
Gambar 1 Alur Penelitian
Gambar 3 Wireframe Pilih Level
1. Analisa Kebutuhan (Requirements)
Pada tahap selanjutnya dalam proses penelitian Pada gambar 3 merupakan tampilan setelak
adalah menganalisa kebutuhan yang dibutuhkan untuk mengklik button play dari main menu, terdapat pilihan
membuat sebuah game. Analisa kebutuhan yang level stage, player dapat memilih level stage untuk
pertama yaitu melakukan studi literatur tentang dimainkan. Jika belum menyelesaikan lavel
membuat map atau peta dengan perlin noise, peraturan sebelumnya, maka level selanjutnya tidak terbuka.
berkendara yang aman dan mencari gagasan ide untuk
game yang bergenre racing dua dimensi. Selanjutnya
merinci seluruh kebutuhan yang dibutuhkan pada
proses perancangan desain asset game dan lainnya.
2. Perancangan Desain (Design)
Semua kebutuhan yang sudah didapatkan pada
proses sebelumnya kemudian diimplementasikan
kedalam bentuk desain sistem. Proses perancangan
pada desain game dengan membuat sebuah wireframe
dari game yang akan dibuat, mulai dari tampilan awal
mulai, sampai dengan akhir game dapat dilihat pada
wireframe.

Gambar 4 Wireframe Menu Shop


Gambar 4 merupakan wireframe dari store yang
ada di main menu, yang digunakan untuk membeli
kendaraan dengan coin yang sudah didapatkan
didalam permainan.

Gambar 2 Wireframe Main Menu


Gambar 2 merupakan tampilan dari main menu
setelah mengklik button start pada scene awal, pada
scene main menu ini terdapat button play, store,
setting, credits, coin dan quit. Untuk tampilan lainnya
terdapat logo dari game dan gambar icon game.
Gambar 5 Wireframe Menu Setting

2
Pada gambar 5 merupakan wireframe dari setting
menu, pada tampilan setting menu, player dapat
mengatur music volume dari game.

Gambar 8 Wireframe In Game


Gambar 8 menjelaskan tampilan wireframe dari inti
Gambar 6 Wireframe Keluar Game permainan, yang dimana scene setelah memilih
kendaraan. Untuk button terdapat button gas dan rem,
Pada gambar 3.6 merupakan wireframe confirm dari lalu lintasan atau map yang sudah dibuat dengan perlin
quit untuk keluar dari game, player mengkonfirmasi noise.
ulang jika mau keluar dari game. 3. Implementasi
Implementasi sistem adalah tahapan implementasi
dari materi hasil pada tahapan sebelumnya.Pertama
implementasi dilakukan dengan membuat tahap
pembangunan sejumlah resource game yang
dibutuhkan, membuat tilesmap menggunakan
algoritma perlin noise. Selanjutnya adalah melakukan
proses pembuatan game yang menggunakan software
unity dengan bahasa pemrograman C#.

4. Testing
Pengujian game merupakan tahap akhir dari
penelitian ini. Pengujian game dilakukan dengan
menguji hasil rancangan sesuai dengan analisis
kebutuhan awal. Pengujian ini bertujuan untuk
mengetahui hasil dari pembentukan dunia game yang
Gambar 7 Wireframe Pause Menu sudah dibuat,apakah map untuk berkendara yang
Gambar 7 merupakan wireframe dari pause menu dihasilkan sudah terstruktur rapi dan terlihat natural.
didalam game yang terdapat button resume untuk Bentuk dari rancangan game yang pertama adalah
melanjutkan game, restart untuk mengulang permainan menentukan variabel jangkauan noise yang akan
dan exit untuk keluar dari permainan. membentuk sebagai pondasi perlin noise. Hasil dari
perlin noise yang diperoleh akan diimplementasikan
kedalam sebuah bentuk tile map untuk memperoleh
bentuk dunia.

III. HASIL DAN PEMBAHASAN


A. Hasil Penelitian
Berdasarkan alur penelitian tahap analisa kebutuhan
(requirement), tahap perancangan desain (design). Tahap
implementasi, dan tahap pengujian (testing), langkah
selanjutnya adalah implementasi Game Racing “Safety Riding”
di android. Game dibuat berdasarkan tahap perancangan desain.
1. Implementasi Menu Utama

3
Pada tampilan menu utama terdapat tombol Play, bagian bawah ada tombol X untuk keluar dari menu
tombol Shop, tombol Setting, dan tombol Keluar. setting ke menu utama.
Pengguna dapat memilih tombol play jika ingin
langsung memainkannya, untuk menuju menu memilih
new game dan continue. Tombol Setting sebelah kanan
pengguna digunakan untuk mengatur besar kecilnya
volume backsound atau musik yang ada didalam game.
Tombol shop sebelah kiri pengguna digunakan untuk
memilih kendaraan untuk bermain. Pada bagian atas
terdapat logo dari game yaitu Safety Riding. Pada
bagian kiri atas terdapat tulisan yang menandakan coin
yang diperoleh oleh pengguna dalam bermain dan Gambar 11 Tampilan Menu Setting
digunakan untuk membeli kendaraan pada menu shop,
pada bagian pojok kanan bawah adalah menu untuk 4. Implementasi Menu Tutorial
melihat peraturan dan tombol yang digunakan didalam Tampilan Tutorial muncul ketika player mengklik
game, dan pada bagian kanan atas terdapat tombol tombol tutorial pada bagian pojok kanan bawah dimenu
keluar digunakan untuk keluar dari game. utama. Tutorial berfungsi untuk melihat peraturan yang
ada didalam game dan tombol yang digunakan. Pada
bagian bawah ada tombol X untuk keluar dari menu
setting ke menu utama.

Gambar 9 Tampilan Menu Utama

2. Implementasi Menu Shop Gambar 12 Tampilan Menu Tutorial


Tampilan shop muncul ketika player mengklik tombol
shop dimenu utama. Shop berfungsi untuk membeli 5. Implementasi Menu Keluar Game
kendaraan yang digunakan sebagai karakter didalam Tampilan keluar game muncul ketika player mengklik
game. Pada bagian tengah tampilan shop terdapat tombol X pada pojok kanan atas dimenu utama. Tombol
tombol kanan dan kiri berfungsi untuk memilih X berfungsi untuk keluar dari game. Terdapat dua
kendaraan yang ingin dibeli. Dibagian tengah ada tombol yes dan no jika player mengklik tombol yes akan
tombol price beserta harga untuk kendaraan berfungsi keluar dari game. Jika player mengklik no maka akan
sebagai tombol untuk pembelian kendaraan ketika coin kembali didalam game dan ke menu utama.
sudah mencukupi. Pada bagian bawah terdapat tombol
back atau kembali yang berfungsi untuk kembali ke
menu utama.

Gambar 13 Tampilan Menu Keluar Game


6. Implementasi Menu Game Over
Tampilan game over muncul ketika player gagal
Gambar 10 Tampilan Menu Shop melewati rintangan yang ada didalam game contohnya
3. Implementasi Menu Settinh jika menerobos lampu merah, terjatuh ketika terlalu
Tampilan setting muncul ketika player mengklik cepat melaju, dan terkena pohon yang tumbang. Pada
tombol setting dimenu utama. Setting berfungsi untuk bagian tengah terdapat tombol untuk mengulang game
mengatur besar kecilnya volume bakcsound yang ada dari awal.
didalam game dengan cara menggeser kiri atau kekanan
slider pada bagian tengah yang berwarna orange. Pada

4
6. public class TerrainCreator : MonoBehaviour
7. {
8. public SpriteShapeController shape;
9. public int scale = 50;
10. public int numofPoints = 100;
11.
12. private void Start()
13. {
14. shape =
GetComponent<SpriteShapeController>();
Gambar 14 Tampilan Menu Game Over 15. float distanceBwtnpoints = (float)scale /
(float)numofPoints;
7. Implementasi Menu Winner
16. shape.spline.SetPosition(2,
Tampilan winner muncul ketika player berhasil shape.spline.GetPosition(2) + Vector3.right *
menuju finish dan melewati semua rintangan yang ada. scale);
Pada menu winner terdapat tombol untuk mengulangi 17. shape.spline.SetPosition(3,
permainan dan melanjutkan permainan ke level shape.spline.GetPosition(3) + Vector3.right *
selanjutnya. scale);
18.
19. for (int i = 0; i < 100; i++)
20. {
21. float xPos = shape.spline.GetPosition(i
+ 1).x + distanceBwtnpoints;
22. shape.spline.InsertPointAt(i + 2, new
Vector3(xPos, 5 * Mathf.PerlinNoise(i *
Random.Range(5.0f, 15.0f), 0)));
23. }
24.
Gambar 15 Tampilan Menu Winner 25. for (int i = 2; i < 102; i++)
26. {
8. Implementasi Sebelum diterapkan Perlin Noise di Map 27. shape.spline.SetTangentMode(i,
atau Jalan ShapeTangentMode.Continuous);
Tampilan sebelum diterapkan perlin noise, map 28. shape.spline.SetLeftTangent(i, new
berbentuk seperti persegi yang mempunyai empat sisi. Vector3(-2, 0, 0));
29. shape.spline.SetRightTangent(i, new
Vector3(2, 0, 0));
30. }
31.
32.
33. }

Gambar 16 Tampilan Map Sebelum diterapkan Perlin 34. }


Noise
Pada kode program 4.1 merupakan sebuah skrip dalam
9. Implementasi Sesudah diterapkan Perlin Noise di Map bahasa pemrograman C# yang digunakan dalam Unity
atau Jalan Engine untuk membuat terrain menggunakan
Tampilan sesudah diterapkan perlin noise, map atau SpriteShapeController. Berikut adalah penjelasan kode
jalan memanjang ke samping pada sisi sebelah kanan tersebut:
atas dan bawah dan membentuk gelombang yang Metode Start () akan dipanggil saat permainan dimulai.
berbeda-beda setiap kali game berlangsung. Di dalam metode ini, kita menginisialisasi variable
shape dengan mengambil komponen
SpriteShapeController dari game object ini sendiri.
Gambar 17 Tampilan Map Sesudah diterapkan Perlin
Kemudian kita menghitung jarak antara setiap titik
Noise
dengan membagi scale dengan numofPoint dan
menyimpannya dalam variabel distanceBwtnpoints.
Kode Program 1 Penerapan Perlin Noise ke dalam
Selanjutnya, kita memindahkan posisi titik ke-2 dan ke-
Map
3 sejauh scale ke arah kanan.
Selanjutnya melakukan pengulangan sebanyak 100
1. using System.Collections; kali untuk menambahkan titik-titik baru ke dalam spline.
2. using System.Collections.Generic;
Didalam pengulangan, kita menghitung posisi
3. using UnityEngine;
4. using UnityEngine.U2D;
horizontal xPos untuk setiap titik baru dengan
5. menambahkan jarak antar titik (distanceBwtnpoints) ke

5
posisi x titik sebelumnya. Kemudian, kita menggunakan tombol keluar digunakan untuk kembali ke menu new
Mathf.PerlinNoise untuk menghasilkan nilai vertical y game dan continue game.
berdasarkan perhitungan perlin noise dengan input
berdasarkan nilai i * Random.Range(5.0f,15.0f).
Hasil perlin noise ini kemudian dikalikan dengan 5
agar mendapatkan variasi yang lebih besar pada tinggi
terrain. Titik baru dengan posisi(xPos,y) ditambahkan
ke spline menggunakan shape.spline.InsertPointAt().

Gambar 20 Tampilan Menu Pilih Level Satu


10. Implementasi Menu Game Pause
Tampilan Game Paused muncul ketika player 13. Implementasi Menu Stage Game
mengklik tombol pause dibagian pojok kanan atas Pada menu stage game terdapat beberapa tampilan
didalam game. Pada bagian game pause terdapat tiga tombol-tombol untuk menjalankan karakter yang
tombol yang pertama adalah tombol play sebelah kiri berupa kendaraan atau vehicle. Pada bagian kanan
untuk melanjutkan permainan. Kedua pada bagian bawah adalah tombol gas yang digunakan menggerakan
tengah adalah tombol restart untuk mengulang karakter atau kendaraan melaju kedepan. Pada bagian
permainan. Ketiga adalah tombol home sebelah kanan kiri bawah adalah tombol brake yang digunakan untuk
untuk kembali ke menu utama. menggerakan karakter atau kendaraan mundur ke
belakang. Player diharuskan mencapai garis finish
untuk lanjut kelevel dua. Pada bagian kiri atas adalah
icon coin yang didapat oleh pengguna didalam game
dan digunakan untuk membeli karakter di menu shop.
Bagian kanan atas adalah tombol pause untuk berhenti
sejenak. Background stage pada level satu bewarna biru
langit cerah dan jalannya berwarna kuning setiap stage
jalan atau map berbeda-beda. Terdapat rintangan
didalam game player harus melewati rintangan tidak
Gambar 18 Tampilan Menu Game Pause boleh tertabrak jika menabrak maka game berakhir
11. Tampilan Menu Play
Pada tampilan sesudah mengklik tombol play,
terdapat menu new game dan continue. Pada tombol
new game digunakan untuk memulai game baru dengan
memilih level permainan. Pada bagian bawah tombol
new game, terdapat tombol continue yang digunakan
untuk meneruskan atau melanjut permainan dengan
memilih level yang sudah dimainkan. Tombol keluar
pada bagian kanan atas digunakan untuk kembali ke
Gambar 21 Tampilan Stage Game
menu utama.
14. Implementasi Rintangan Lampu Lalu Lintas
Pada menu stage game level satu terdapat rintangan
yaitu lampu lalu lintas, jika lampu lalu lintas berwarna
merah maka player harus berhenti dan menunggu lampu
berwarna hijau, jika player melanggar maka game akan
berakhir.

Gambar 19 Tampilan Menu Play


12. Tampilan Menu Pilih Level Satu
Tampilan pilih level muncul setelah pengguna
mengklik tombol new game, selanjutnya akan muncul
scene memilih level satu sampai enam, level yang
terbuka pertama kali adalah level satu, pengguna harus
menyelesaikan level pertama untuk membuka level Gambar 22 Tampilan Lampu Lalu Lintas
kedua dan seterusnya. Pada bagian kanan atas terdapat

6
Proses untuk menerapkan perlin noise kedalam map 49. spriteRenderer.sprite = redSprite;
menggunakan kode program yang sudah dibuat dengan 50. }
Bahasa C# sebagai berikut: 51. else if (spriteRenderer.sprite ==
yellowSprite)
52. {
1. using System.Collections;
53. spriteRenderer.sprite = greenSprite;
2. using System.Collections.Generic;
54. }
3. using UnityEngine;
55. }
4.
56.
5. public class TraficLightController : MonoBehaviour
57. void OnTriggerEnter2D(Collider2D other)
6. {
58. {
7. public GameObject losserObject;
59. if (other.transform.tag == "Player")
8. private GameObject myGameObject1, myGameObject2,
60. {
myGameObject3, myGameObject4;
61.
9. PlayerMovement componentPlayer;
62. if (spriteRenderer.sprite == redSprite)
10. public enum LightColor
63. {
11. {
64. if (myGameObject1 != null)
12. Red,
65. {
13. Yellow,
66. myGameObject1.SetActive(false);
14. Green
67. losserObject.SetActive(true);
15. }
68. componentPlayer.traficRed =
16. public LightColor CurrentLight { get; private
true;
set; }
69. AudioManager.instance.Play("Game
17. public Sprite greenSprite;
Over");
18. public Sprite yellowSprite;
70. }
19. public Sprite redSprite;
71.
20.
72. if (myGameObject2 != null)
21. private SpriteRenderer spriteRenderer;
73. {
22.
74. myGameObject2.SetActive(false);
23. private void Awake()
75. losserObject.SetActive(true);
24. {
76. componentPlayer.traficRed =
25. spriteRenderer =
true;
GetComponent<SpriteRenderer>();
77. AudioManager.instance.Play("Game
26. }
Over");
27.
78. }
28. private void Start()
79.
29. {
80. if (myGameObject3 != null)
30. // Mulai animasi dengan memanggil fungsi
81. {
ChangeLight setelah jeda waktu tertentu
82. myGameObject3.SetActive(false);
31. InvokeRepeating("ChangeLight", 0f, 3f);
83. losserObject.SetActive(true);
32. componentPlayer =
84. componentPlayer.traficRed =
FindObjectOfType<PlayerMovement>();
true;
33. myGameObject1 =
85. AudioManager.instance.Play("Game
GameObject.Find("Player01(Clone)");
Over");
34. myGameObject2 =
86. }
GameObject.Find("Player02(Clone)");
87.
35. myGameObject3 =
88. if (myGameObject4 != null)
GameObject.Find("Player03(Clone)");
89. {
36. myGameObject4 =
90. myGameObject4.SetActive(false);
GameObject.Find("Player04(Clone)");
91. losserObject.SetActive(true);
37. }
92. componentPlayer.traficRed =
38.
true;
39.
93. AudioManager.instance.Play("Game
40. private void ChangeLight()
Over");
41. {
94. }
42. // Ganti Sprite berdasarkan urutan lampu
95.
(merah - kuning - hijau)
96. }
43. if (spriteRenderer.sprite == redSprite)
97.
44. {
98. }
45. spriteRenderer.sprite = yellowSprite;
99. }
46. }
100. }
47. else if (spriteRenderer.sprite ==
greenSprite)
48. {

7
Kode Program 2 Penerapan Lampu Lalu Lintas
Kode di atas adalah sebuah skrip dalam bahasa
pemrograman C# yang digunakan dalam Unity Engine
untuk mengontrol lampu lalu lintas dalam permainan.
Berikut adalah penjelasan singkat dari kode tersebut:
a) Variabel losserObject adalah objek game yang akan
diaktifkan saat player bertabrakan dengan lampu
merah.
b) Variabel myG ameObject1, myGameObject2,
Gambar 23 Tampilan Pohon Tumbang
myGameObject3 dan myGameObject4 adalah objek
game player. 1. using System.Collections;
c) Variabel componentPlayer adalah komponen 2. using System.Collections.Generic;
PlayerMovement yang digunakan untuk mengakses 3. using UnityEngine;
fungsi-fungsi pada skrip PlayerMovement. 4.
5. public class tertimpa : MonoBehaviour
d) enum LightColor mendefinisikan kemungkinan warna 6. {
lampu lalu lintas: Merah (Red), Kuning (Yellow) dan 7. private GameObject myGameObject1, myGameObject2,
Hijau (Green). myGameObject3, myGameObject4;
e) Properti CurrentLight merupakan properti pembaca 8.
9. PlayerManager componentPlayer;
yang memberikan nilai warna lampu saat ini. 10. void Start()
f) greenSprite, yellowSprite, dan redSprite adalah sprite 11. {
untuk masing-masing warna lampu lalu lintas. 12. componentPlayer =
FindObjectOfType<PlayerManager>();
g) spriteRenderer adalah komponen SpriteRenderer yang
13. myGameObject1 =
digunakan untuk mengubah sprite pada objek ini. GameObject.Find("Player01(Clone)");
Dalam metode Start(), InvokeRepeating() 14. myGameObject2 =
digunakan untuk memanggil fungsi ChangeLight() GameObject.Find("Player02(Clone)");
15. myGameObject3 =
secara berulang setiap 3 detik, yang mengubah sprite
GameObject.Find("Player03(Clone)");
lampu lalu lintas secara berurutan. 16. myGameObject4 =
Selain itu, dalam metode Start(), variabel GameObject.Find("Player04(Clone)");
componentPlayer diinisialisasi dengan menemukan 17. }
18.
komponen PlayerMovement pada game object yang ada
19. // Update is called once per frame
di dalam scene. 20.
Selain itu, variabel myGameObject1, 21. void OnTriggerEnter2D(Collider2D other)
myGameObject2, myGameObject3, dan 22. {
23. if (other.transform.tag == "Player")
myGameObject4 diinisialisasi dengan mencari game 24. {
object dengan nama yang sesuai. 25. if (componentPlayer.tertimpa == false)
Dalam metode ChangeLight(), sprite lampu lalu lintas 26. {
berubah sesuai dengan urutan (merah - kuning - hijau). 27. if (myGameObject1 != null)
28. {
Dalam metode OnTriggerEnter2D(Collider2D other), 29. myGameObject1.SetActive(false);
jika objek yang bersentuhan memiliki tag "Player" dan 30. componentPlayer.tertimpa = true;
sprite lampu lalu lintas adalah merah, maka objek player 31. }
akan dinonaktifkan, losserObject akan diaktifkan, dan 32.
suara "GameOver" akan diputar menggunakan 33. if (myGameObject2 != null)
AudioManager. Hal ini menunjukkan bahwa player 34. {
bertabrakan dengan lampu merah dan kalah dalam 35. myGameObject2.SetActive(false);
permainan. 36. componentPlayer.tertimpa = true;
15. Implementasi Pohon Tumbang 37. }
38.
Rintangan pada level dua sama halnya seperti pada
39. if (myGameObject3 != null)
level satu. Hal yang berbeda adalah jumlah rintangan
40. {
pohon tumbang bertambah banyak. 41. myGameObject3.SetActive(false);
42. componentPlayer.tertimpa = true;
43. }
44.
45. if (myGameObject4 != null)

8
46. { semua fungsi game dan mecatatnya dalam
47. myGameObject4.SetActive(false); tabel. Berikut tabel hasil pengujian alpha.
48. componentPlayer.tertimpa = true;
49. } Table 1
50. }
Pengujian Alpha Menu Utama
51.
52. AudioManager.instance.Play("GameOver"); Langkah Hasil yang Hasil
53. Kasus Uji
Pengujian diterapkan uji
54. }
Tombol Tekan Menampilkan Berhasil
55. }
Play tombol cerita yang
56. }
icon play menandakan
game
Kode Program 3 Pohon Tumbang dimulai
Kode di atas adalah sebuah skrip dalam bahasa Tombol Tekan Menampilkan Berhasil
pemrograman C# yang digunakan dalam Unity Engine Setting tombol setting
untuk menangani tabrakan antara player (dengan tag icon setting volume
"Player") dan objek tertentu. Berikut adalah penjelasan Tombol Tekan Menampilkan Berhasil
singkat dari kode tersebut: Shop tombol menu
icon shop pembelian
Variabel myGameObject1, myGameObject2,
kendaraan
myGameObject3, dan myGameObject4 adalah objek Tombol Tekan Menampilkan Berhasil
game player. Keluar tombol konfirmasi
Variabel componentPlayer adalah komponen icon keluar keluar
PlayerManager yang digunakan untuk mengakses ya atau tidak
variabel dan fungsi pada skrip PlayerManager.
Dalam metode Start(), variabel componentPlayer
diinisialisasi dengan mencari komponen PlayerManager
Pada table 1 pengujian berupa tombol
pada game object yang ada didalam scene. Play,Setting,Shop,Keluar yang ada dimenu utama
Selain itu, variabel myGameObject1, myGameObject2, game.Tombol tersebut telah diuji dan berhasil semua.
myGameObject3, dan myGameObject4 diinisialisasi
Table 2
dengan mencari game object dengan nama yang sesuai.
Dalam metode OnTriggerEnter2D (Collider2D other), Pengujian Menu Play
jika objek yang bersentuhan memiliki tag "Player" dan Kasus Langkah Hasil yang Hasil
componentPlayer.tertimpa adalah false, maka objek player Uji Pengujian diterapkan uji
akan dinonaktifkan dan componentPlayer.tertimpa diubah Tombol Tekan Memulai Berhasil
menjadi true. Hal ini menunjukkan bahwa player tertimpa New tombol game baru
oleh objek tertentu dalam permainan. Game icon new dan
game menampilkan
Setelah itu, AudioManager.instance.Play("GameOver")
menu pilih
dipanggil untuk memutar suara "GameOver". level
Dengan menggunakan kode diatas, kita dapat menangani Tombol Tekan Melanjutkan Berhasil
tabrakan antara player dan objek tertentu dalam permainan, Continue tombol game yang
menonaktifkan player dan mengubah status tertimpa pada icon sudah
PlayerManager continue dimainkan
B. Pembahasan dan
menampilkan
1. Pengujian menu pilih
Tahap pengujian (testing) adalah tahap untuk level
menguji beberapa fungsi utama yang ada pada game, Pengujian berupa tombol New Game dan Continue
apakah fungsi tersebut berfungsi sesuai yang yang ada dimenu play game. Tombol tersebut telah
diharapkan atau tidak. Pengujian yang dilakukan pada diuji fungsinya dan berhasil semua.
game “Safety Riding” adalah dengan pengujian alpha
dan pengujian beta. Table 3
a) Pengujian Alpha Pengujian Alpha Menu Pilih Level
Dalam pengujian ini penulis menguji
langsung game dengan menjalankan Kasus Langkah Hasil yang Hasil
Uji Pengujian diterapkan uji

9
Tombol Tekan Memulai Berhasil Tombol Tekan Mengulang Berhasil
Level tombol game sesuai Restart tombol game dari
icon level level yang icon restart awal
dipilih Pada table 5 pengujian berupa tombol Next, dan
Tombol Tekan Mengunci Berhasil Restart yang ada dimenu Winner Tombol tersebut
Kunci tombol level yang telah diuji berhasil semua dan sesuai dengan
Level icon kunci belum fungsinya.
level diselesaikan
Table 6
Tombol Tekan Kembali ke Berhasil
Kembali tombol Menu play Pengujian Alpha Game Over
icon
kembali Kasus Langkah Hasil yang
Hasil uji
Pada table 3 pengujian berupa tombol Level, Kunci Uji Pengujian diterapkan
Level dan Kembali yang ada dimenu Pilih Tombol Tekan Mengulang Berhasil
Level .Tombol tersebut telah diuji fungsinya dan Restart tombol game dari
berhasil semua. icon restart awal
Pada table 6 pengujian berupa tombol Restart yang
ada dimenu Game Over Tombol tersebut telah diuji
berhasil semua dan sesuai dengan fungsinya.

Table 7
Table 4 Pengujian Alpha Menu Setting
Pengujian Alpha Menu Game Pause Kasus Langkah Hasil yang
Hasil uji
Kasus Langkah Hasil yang Uji Pengujian diterapkan
Hasil uji Slider Geser Mengatur Berhasil
Uji Pengujian diterapkan
Tombol Tekan Melanjutkan Berhasil slider volume
Play tombol game yang untuk music game
icon play diapause mengatur
besar
Tombol Tekan Mengulang Berhasil
kecilnya
Restart tombol game dari
backsound
icon awal
restart Tombol Tekan Kembali ke Berhasil
Kembali tombol menu utama
Tombol Tekan Kembali ke Berhasil
icon
Home tombol menu utama
kembali
icon home
Pada table 7 pengujian berupa slider dan tombol
Pada table 4 pengujian berupa tombol Play, Restart,
Kembali yang ada dimenu Setting Tombol tersebut
dan Home yang ada dimenu Game Paused. Tombol
telah diuji berhasil semua dan sesuai dengan
tersebut telah diuji berhasil semua dan sesuai dengan
fungsinya.
fungsinya.
Table 8
Table 5
Pengujian Alpha Menu Shop
Pengujian Alpha Menu Winner
Kasus Langkah Hasil yang
Kasus Langkah Hasil yang Hasil uji
Hasil uji Uji Pengujian diterapkan
Uji Pengujian diterapkan
Tombol Tekan Bergerak Berhasil
Tombol Tekan Melanjutkan Berhasil
Arah tombol maju ke
Next tombol ke level
Kanan iicon arah kanan
icon play selanjutnya
kanan
dan menuji ke
menu pilih Tombol Tekan Bergerak Berhasil
level Arah tombol mundur ke
Kiri kiri

10
icon arah mempertahankan minat Anda dalam
kiri bermain?
Tombol Tekan Membeli Berhasil
Price tombol Kendaraan Seberapa puaskah anda terhadap fitur
icon price 11 kebebasan dalam memilih kendaraan di
Tombol Tekan Kembali ke Berhasil game racing 2D ini?
Back tombol menu utama Seberapa puaskah anda terhadap fitur stage
icon back 12 atau level yang berbeda-beda di dalam
Pada table 8 pengujian berupa tombol arah kanan, game racing 2D ini?
arah kiri, Price dan Back yang ada dimenu shop Bagaimana Anda menilai kualitas grafis
13
tombol tersebut telah diuji berhasil semua dan sesuai dalam game racing 2D ini?
dengan fungsinya. Seberapa puaskah anda terhadap kualitas
b) Pengujian Beta 14 suara dan efek suara dalam game racing 2D
Pengujian beta merupakan pengujian ini?
langsung kepada pengguna untuk Seberapa puaskah anda terhadap fitur
mencoba game dan mengisi kuesioner 15 mendapatkan coin dari bermain dan
mengenai game Safety Riding. Pengujian digunakan untuk membeli kendaraan?
ini dilakukan secara online dengan Seberapa puaskah anda terhadap jalan atau
membagikan link google form kepada 30 16 map dalam game racing yang tidak menentu
orang. Kuisioner terdiri dari 25 dan selalu berubah?
pertanyaan.Data yang didapat diuji secara Seberapa puaskah anda terhadap tingkat
statistik menggunakan spss. dari hasil uji 17
kesulitan game safety riding?
tersebut dapat dilihat kesimpulan Seberapa puaskan anda terhadap durasi
mengenai game Safety Riding yang telah 18 bermain yang diberikan di game racing 2D
dibuat. Berikut adalah daftar pertanyaan di ini?
kuisioner tersebut, dapat dilihat pada table
9 19 Seberapa puaskah anda terhadap alur cerita
game safety riding?
Table 9 Seberapa puaskah anda terhadap rambu lalu
Pertanyaan 20 lintas untuk memperingati banyaknya
tanjakan jalan?
No Pertanyaan Seberapa puaskah anda terhadap rintangan
Seberapa puaskan anda terhadap tampilan 21 pohon tumbang yang ada didalam game
1
game racing safety riding ini? safety riding?
Seberapa puaskan anda terhadap kecocokan Seberapa puaskah anda terhadap asset
2
tema game dan tampilannya? 22 karakter atau kendaraan dalam game racing
Sebarapa puaskah anda terhadap 2D ini?
3 pengalaman visual yang diberikan oleh Seberapa puaskah anda terhadap game
tampilan game ini? 23 racing 2D ini yang hanya dimainkan secara
Seberapa puaskah anda terhadap offline?
4 kemudahan untuk mengontrol kendaraan di Seberapa puaskah anda terhadap
game racing 2D ini? 24
Lampu lalu lintas pada game safety riding?
Seberapa puaskah anda terhadap aturan dan Seberapa puaskah anda terhadap
5
tujuan dalam game racing 2D ini? 25 keseluruhan game safety riding, mulai dari
Seberapa puaskan anda terhadap tantangan gameplay, tampilan dan alur cerita?
6 yang diberikan saat memainkan game Pertanyaan kuisioner mempunyai indikator penilaian
racing 2D ini? sebagai berikut:
Seberapa puaskah anda terhadap fitur yang
7
dimiliki oleh game racing 2D ini? Nilai Keterangan
Seberapa puaskah anda terhadap efek visual
8
di game racing 2D ini? 1 Tidak Memuaskan
Seberapa puaskah anda terhadap efek visual
2 Kurang Memuaskan
di game racing 2D ini untuk memberikan
9 3 Cukup Memuaskan
pengalaman bermain yang lebih
menyenangkan? 4 Memuaskan
Seberapa puaskan anda terhadap fitur yang 5 Sangat Memuaskan
10
dimiliki game racing 2D ini untuk

11
Selanjutnya hasil pengisian kuisioner tersebut Table 10
dihitung validitas dan reliabilitasnya menggunakan SPSS.
Frekuensi hasil kuisioner
Berikut adalah hasil dari perhitungan menggunakan SPSS:
Hasil nilai korelasi antara skor item dengan skor Jawaban

konstruk (loading factor) dari indikator-indikator yang Buti


Tidak
Memu
Kurang
Memuask
Cukup
Memuaska
Memuaska
Sangat
Memuas
Total
r n
mengukur konstruk tersebut bernilai di atas 0.5 (> 0.5). askan an n kan

Dengan demikian dapat disimpulkan bahwa seluruh item n % n % n % n % n % n %


23 10
telah memenuhi syarat validitas. Hasil nilai composite 1 - - - - 14 46.7 9 30 7
.3
30
0
reliability keenam variabel penelitian bernilai di atas 0.7. 2 - - - - 14 46.7 8 26.7 8
26
30
10
.7 0
Dengan demikian dapat disimpulkan bahwa instrumen 26 10
3 - - - - 12 40 10 33.3 8 30
.7 0
telah memenuhi persyaratan validitas dan reliabilitas.[3] 26 10
4 - - - - 12 40 10 33.3 8 30
.7 0
3. 26 10
5 1 1 3.3 6 20 14 46.7 8 30
3 .7 0
10
6 - - 1 3.3 14 46.7 9 30 6 20 30
0
3. 23 10
7 1 - - 13 43.3 9 30 7 30
3 .3 0
3. 26 10
8 1 - - 10 33.3 11 36.7 8 30
3 .7 0
23 10
9 - - 1 3.3 11 36.7 11 36.7 7 30
.3 0
10
10 - - - - 9 30 12 40 9 30 30
0
10
11 - - - - 11 36.7 10 33.3 9 30 30
0
23 10
12 - - - - 8 26.7 15 50 7 30
.3 0
3. 23 10
13 1 - - 11 36.7 11 36.7 7 30
3 .3 0
10
14 - - - - 9 30 12 40 9 30 30
0
3. 26 10
15 1 2 6.7 9 30 10 33.3 8 30
3 .7 0
3. 23 10
16 1 1 3.3 13 43.3 8 26.7 7 30
3 .7 0
3. 23 10
17 1 1 3.3 8 26.7 13 43.3 7 30
3 .3 0
3. 26 10
18 1 1 3.3 8 26.7 12 40 8 30
3 .7 0
Gambar 24 Reliabillity 23 10
19 - - 1 3.3 10 33.3 12 40 7 30
.3 0
10
20 - - - - 11 36.7 13 43.3 6 20 30
0
33 10
21 - - - - 8 26.7 12 40 10 30
.3 0
10
22 - - - - 9 30 12 40 9 30 30
0
33 10
23 - - 1 3.3 10 33.3 9 30 10 30
.3 0
10
24 - - - - 13 43.3 8 26.7 9 30 30
0
10
25 - - - - 11 36.7 10 33.3 9 30 30
0

Dari hasil pengisian kuisioner manfaatnya adalah rintangan


yang ada digame safety riding menerapkan aturan umum untuk
berkendara, mulai dari tidak melanggar lampu lalu lintas,
menaati rambu lalu lintas, tampilan game safety riding yang
menarik, map atau jalan selalu berubah setiap kali bermain.
Kekurangannya ada minimnya fitur yang dimiliki game safety
riding.

IV. PENUTUP
A. Kesimpulan
1. Penerapan perlin noise pada source code dan sisi map
yang digenerate secara otomatis sehingga map
Gambar 25 Validitas
mempunyai variasi ketinggian yang berbeda-beda.
Nilai dari corrected item correlation semuanya nilai diatas 0,5.

12
2. Penerapan alogaritma perlin noise kedalam map
disetiap level menghasilkan map yang berbeda-beda
setiap akan memulai game.
3. Penerapan unsur Safety Riding ke dalam game racing
dengan menambahkan rambu tanjakan agar pemain
berhati-hati, menaati aturan lampu lintas,
menggunakan helm, jaket, dan sepatu saat berkendara
B. Saran
Karena keterbatasan game yang dibuat masih 2
dimensi sehingga menyebabkan penerapan unsur dari safety
riding kurang, dan map pada game selalu berubah
menyebabkan beberapa asset game didalamnya tidak tepat
dalam peletakannya.

REFERENSI
[1] World Health Organization., Global status report on
road safety : time for action. World Health
Organization, 2013.
[2] Badan Intelijen Negara Republik Indonesia,
“Kecelakaan Lalu Lintas menjadi Pembunuh Terbesar
Ketiga,” 2014. <http://www.bin.go.id/
awas/detil/197/4/21/03/2013/kecelakaan-lalulintas-
menjadi-pembunuh-terbesar-ketiga> (accessed Jan.
10, 2023).
[3] R. A. T. Kala’tiku, Arifuddin, and Syamsuddin,
“BRAINSTORMING SEBAGAI
PEMODERASIPENGARUHPENGALAMAN,
PELATIHAN,SKEPTISISME PROFESIONAL DAN
INTEGRITAS TERHADAP KEMAMPUAN
MENDETEKSIKECURANGAN,” vol. 7, pp. 81–90,
2018.

13

Anda mungkin juga menyukai