BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum...

41
24 BAB IV PEMBUATAN & PEMBAHASAN GAME 4.1 Pembuatan Konsep Game Pembuatan game diawali dengan perencanaan konsep dasar game serta melakukan pencarian referensi dari konsep game serupa di Google Play Store. Game tersebut dibuat dengan menggunakan platform Android. Referensi game lalu dikaji sehingga game yang dibuat dapat memiliki ciri khasnya tersendiri dibanding referensi game pembanding. Adapun referensi game pembanding adalah sebagai berikut : a.) Pemburu Koruptor Gambar 4.1 Pemburu Koruptor Gameplay (Sumber : http://www.gadgetgaul.com/wp-content/uploads/2014/09/SS71.jpg ) Pesan melawan korupsi terlihat pada saat player menyerang koruptor dengan melemparkan kepala kucing seperti pada game Angry Bird. Game ini menunjukan bahwa perlu adanya musuh yang jelas di dalam game untuk melawan perilaku korupsi. Pada game ini musuh tersebut adalah koruptor yang melarikan

Transcript of BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum...

Page 1: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

24

BAB IV

PEMBUATAN & PEMBAHASAN GAME

4.1 Pembuatan Konsep Game

Pembuatan game diawali dengan perencanaan konsep dasar game serta

melakukan pencarian referensi dari konsep game serupa di Google Play Store.

Game tersebut dibuat dengan menggunakan platform Android. Referensi game lalu

dikaji sehingga game yang dibuat dapat memiliki ciri khasnya tersendiri dibanding

referensi game pembanding. Adapun referensi game pembanding adalah sebagai

berikut :

a.) Pemburu Koruptor

Gambar 4.1 Pemburu Koruptor Gameplay

(Sumber : http://www.gadgetgaul.com/wp-content/uploads/2014/09/SS71.jpg )

Pesan melawan korupsi terlihat pada saat player menyerang koruptor

dengan melemparkan kepala kucing seperti pada game Angry Bird. Game ini

menunjukan bahwa perlu adanya musuh yang jelas di dalam game untuk melawan

perilaku korupsi. Pada game ini musuh tersebut adalah koruptor yang melarikan

Page 2: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

25

diri dari penjara dan konsep melawan musuh ini diambil sebagai referensi dalam

penyusunan konsep game.

b.) Tap Koruptor

Gambar 4.2 Tap Koruptor Gameplay

(Sumber : http://img.duniaku.net/wp-content/uploads/2016/09/duniaku-

tapkoruptor-2.jpg )

Game bernama Tap Koruptor ini memberikan pesan melawan korupsi

dengan sangat jelas. Konsep dari game Tap Koruptor ini menunjukan bahwa pelaku

korupsi digambarkan sebagai sosok yang buruk, musuh masyarakat. Penggambaran

Page 3: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

26

tokoh koruptor yang buruk tersebut diambil sebagai referensi dalam penyusunan

konsep game.

c.) Fate Grand Order (FGO)

Gambar 4.3 Fate Grand Order (FGO)

(Sumber :https://assets.rpgsite.net/images/images/000/055/586/original/fgo_axpre

sskit_%2812%29.jpg )

Fate Grand Order merupakan game seri Fate yang terbit pada tahun 2015.

Fate Grand Order diluncurkan pertama kali dalam versi bahasa Jepang dan pada

tahun 2017 Fate Gand Order diluncurkan dalam versi bahasa Inggris. Game ini

memiliki unsur Visual Novel (VN) dimana pembawaan cerita game yang

menggunakan tokoh-tokoh terkenal dalam sejarah dapat menonjolkan karakter dari

masing-masing tokoh seiring dengan perkembangan cerita. Game ini memiliki

pengajaran sejarah yang mudah diingat karena sejarah dari masing-masing karakter

memiliki andil dalam cerita game. Penggunaan Visual Novel untuk penyampaian

pesan diambil sebagai referensi dalam penyusunan konsep game.

Page 4: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

27

d.) TableZombies AR

Gambar 4.4 TableZombies AR Gameplay

(Sumber : https://play.google.com/store/apps/details?id=com.srg.tzcards )

TableZombies AR ini memiliki Gameplay yang mudah dipahami. Player

hanya perlu menembak setiap zombie yang muncul di layar. Desain game dari

TableZombies AR ini diambil sebagai referensi dalam penyusunan konsep dasar

game.

Setelah membandingkan dan mempelajari game-game referensi, game yang

dibuat tersebut merupakan game edukasi dengan genre Augmented Reality. Adapun

pesan yang akan disampaikan kepada pemain adalah tentang hubungan korupsi dan

karakter mahasiswa, pesan untuk tidak menunda-nunda pekerjaan, pesan tidak

memberi contekan, serta pesan untuk tidak bertidak pasif dalam kerja kelompok.

4.2 Pembuatan Asset Game

Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai

dengan konsep game yang telah dibuat. Asset tersebut berupa gambar (karakter,

background, animasi, icon) dan beberapa asset 3D yang diambil dari

assetstore.unity3d.com. Pengerjaan game akan menggunakan Unity sebagai game

Page 5: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

28

engine karena adanya plugin seperti Vuforia yang mempermudah pengerjaan

pembuatan serta memiliki kinerja yang stabil untuk game bergenre Augmented

Reality.

Pembuatan game dimulai dengan menentukan judul game. Setelah

mempertimbangkan konsep dan tujuan game, judul game tersebut adalah Mental of

Corrupt.

Gambar 4.5 Mental of Corrupt

Adapun gambar icon dan button yang telah dibuat :

Tabel 4.1 Icon, Splash Screen, dan Tombol

Obyek 2D Keterangan

Icon Game

Splash Screen

Splash Screen

Page 6: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

29

Splash Screen

Menu Button

Icon Loading

Back Button

Adapun gambar bakground adalah sebagai berikut :

Tabel 4.2 Background

Obyek 2D Keterangan

Pintu Masuk / Lobi

Laboraorium

Page 7: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

30

Ruangan Prof. Julius

Laboratorium

Adapun karakter yang telah dibuat :

Tabel 4.3 Karakter

Obyek 2D Keterangan

Player

Page 8: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

31

Prof. Julius

Adi

(Pemilik permasalahan menunda pekerjaan)

Beta

(Pemilik permasalahan memberi contekan)

Charlie

(Pemilik permasalahan tidak bekerja dalam

kerja kelompok)

Page 9: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

32

Researcher

(Asisten Prof. Julius)

Adapun asset 3D yang digunakan adalah sebagai berikut[21][22][23]:

Tabel 4.4 Aset Obyek 3D

Obyek 3D Keterangan

Perwujudan kebiasaan buruk :

menunda-nunda pekerjaan

Perwujudan kebiasaan buruk :

Memberi Contekan

Page 10: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

33

Perwujudan kebiasaan buruk :

tidak bekerja dalam kerja

kelompok

Assets tersebut lalu dikumpulkan dalam satu folder Assets yang terdapat di

folder project Unity.

Gambar 4.6 Assets Folder

4.3 Pembuatan Game

4.3.1 Pembuatan Menu Utama

Pembuatan game dimulai dengan pembuatan menu utama. Menu utama ini

berguna untuk mengakses Button Start, Button Credit, dan Button Exit. Button Start

berguna untuk mengakses Game Stage. Button Credit berguna untuk mengakses

Page 11: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

34

Scene berisi ucapan terima kasih kepada pihak-pihak yang telah membantu serta

ikut dalam pembuatan game. Button Exit berguna untuk menutup aplikasi game.

Pembuatan game menggunakan Unity Engine 5.6.1f1. Menu utama dibuat

pada scene dengan nama CS. Pada scene CS kolom Hierarchy, obyek Canvas dibuat

dan di dalam Canvas tersebut berisi Button, Text, dan Image. Button, Text, dan

Image tersebut lalu diposisikan sesuai dengan kebutuhan dan tujuan.

Gambar 4.7 Menu Utama Hierarchy

Adapun script yang digunakan adalah sebagai berikut :

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

}

Page 12: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

35

public void taptap()

{

title.SetBool("hidden2", true);

tap.SetActive(false);

start.SetActive(true);

credit.SetActive(true);

exit.SetActive(true);

}

public void OpenSettings()

{

startButton.SetBool("hidden", false);

creditButton.SetBool("hidden", false);

exitButton.SetBool("hidden", false);

title.SetBool("hidden", true);

if (startButton.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1 && !startButt

on.IsInTransition(0)){

Story_chapter.SetActive(true);

prologue.SetActive(true);

chone.SetActive(true);

chtwo.SetActive(true);

chthree.SetActive(true);

}

if (title.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 && !title.IsInTransitio

n(0)){

back.SetActive(true);

}

}

public void backButton()

{

title.SetBool("hidden", false);

startButton.SetBool("hidden", true);

creditButton.SetBool("hidden", true);

exitButton.SetBool("hidden", true);

Story_chapter.SetActive(false);

prologue.SetActive(false);

chone.SetActive(false);

chtwo.SetActive(false);

chthree.SetActive(false);

back.SetActive(false);

title.SetBool("hidden2", true);

tap.SetActive(false);

start.SetActive(true);

credit.SetActive(true);

exit.SetActive(true);

}

public void loadzero() {

SceneManager.LoadScene(1);

Page 13: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

36

}

public void loadlvone() {

SceneManager.LoadScene(7);

}

public void loadlvtwo() {

SceneManager.LoadScene(11);

}

public void loadlvthree() {

SceneManager.LoadScene(15);

}

public void loadcredit() {

SceneManager.LoadScene(17);

}

public void excit() {

Application.Quit();

}

}

Gambar 4.8 Listing Program MainMenu

Fungsi taptap() berguna untuk memulai permainan dari Touch Screen.

Fungsi Opensettings() berguna untuk peralihan dari Button Start yang ditekan

pemain ke pemilihan stage. Fungsi backButton() berguna untuk peralihan dari

pemilihan stage ke menu utama yang berisikan Button Start, Button Credit, dan

Button Exit. Fungsi loadzero() berguna untuk berpindah ke scene 1 yang merupakan

Level : Prologue. Fungsi loadlvone() berguna untuk berpindah ke scene 7 yang

merupakan Level : Chapter 1. Fungsi loadlvtwo() berguna untuk berpindah ke scene

11 yang merupakan Level : Chapter 2. Fungsi loadlvthree() berguna untuk

berpindah ke scene 15 yang merupakan Level : Chapter 3. Fungsi loadcredit()

berguna untuk berpindah ke scene 17 yang merupakan scene Credit. Fungsi Excit()

berguna untuk keluar atau menutup aplikasi game.

Page 14: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

37

Gambar 4.9 Tampilan Menu Utama

Gambar 4.10 Tampilan Menu Utama Button Start

Page 15: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

38

Gambar 4.11 Tampilan Menu Utama Button Credit

4.3.2 Pembuatan Level : Prologue

Pembuatan Level : Prologue terbagi menjadi 2 scene. Scene pertama

berfungsi untuk menyampaikan pesan melawan kebiasaan buruk mahasiswa dalam

pendidikan anti korupsi. Scene pertama memiliki genre visual novel. Scene kedua

merupakan Augmented Reality melawan musuh yaitu perwujudan kebiasaan

menunda pekerjaan.

Gambar 4.12 Scene #1 Penyampaian Pesan

Page 16: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

39

Adapun Script prologue.cs yang digunakan pada scene pertama adalah

sebagai berikut:

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

switch (a) {

case 1 :

dialogue.text ="Jadi ini... ";

fscreen.SetActive(false);

break;

case 2 :

mc01.SetActive(false);

professora1.SetActive(true);

...

}

public void textchange() {

if(a!=5 && a!=8 && a!=10 && a!=19 && a!=25 && a!=54 && a!=37) {

a=a+1;

} else {a=a+2;}

}

public void btnchoice1() {

a=a+1;

}

public void btnchoice2() {

a=a+2;

}

}

Gambar 4.13 Listing Program Prologue

Fungsi Update() berguna untuk mengganti Image karakter serta Text seiring

perkembangan cerita yang menyampaikan pesan. Fungsi textchange() berguna

untuk menambah variabel int a yang berhubungan dengan fungsi Update(). Fungsi

btnchoice1() berguna untuk menamah variabel int a ketika pemain memilih

jawaban. Fungsi btnchoice2() memiliki guna yang sama dengan fungsi

btnchoice1(). Int a sendiri berguna untuk mengganti perintah swicth-case sesuai

dengan perubahan int a.

Page 17: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

40

Gambar 4.14 Scene #2 Game Augmented Reality

Pada Scene kedua, hal pertama yang perlu dilakukan adalah mengimpor

Vuforia Package. Pilih Assets -> import package -> custom package, lalu pilih

Vuforia Package yang telah diunduh. Hapus obyek Camera pada kolom Hierarchy,

lalu pada kolom project -> Assets -> Vuforia -> Prefabs -> ARCamera. Drag

ARCamera kekolom Hierarchy.

Pada obyek ARCamera , lihatlah kolom Inspector dan masukan Vuforia

Licence Key. Vuforia Licence Key dapat ditemukan saat membuat project di

Vuforia’s developer portal. Ubah World Center Mode menjadi Device_tracking

sehingga Smart Phone Android nantinya dapat melakukan track pada obyek yang

tampil di layar.

Page 18: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

41

Gambar 4.15 Pengaturan Vuforia ARCamera

Obyek ARCamera harus memiliki Position x, y, z bernilai 0 sebab posisi 0

itu berarti terletak tepat dikamera Smart Phone. Pada kolom Hierarchy dibuat

obyek 3D Cube. Adapun kode programan menggunakan bahasa C#

(SpawnScript.cs) yang berguna untuk melakukan Spawn Cube atau membuat Cube

bermunculan dalam waktu berkala dan batas tertentu :

// Use this for initialization

void Start () {

// Initializing spawning loop

StartCoroutine( SpawnLoop() );

// Initialize Cubes array according to

// the desired quantity

mCubes = new GameObject[ mTotalCubes ];

}

// Update is called once per frame

void Update () {

}

// Define the position if the object

// according to ARCamera position

Page 19: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

42

private bool SetPosition() {

// get the camera position

Transform cam = Camera.main.transform;

// set the position 10 units forward from the camera position

transform.position = cam.forward * 10;

return true;

}

// We'll use a Coroutine to give a little

// delay before setting the position

private IEnumerator ChangePosition() {

yield return new WaitForSeconds(0.2f);

// Define the Spawn position only once

if ( !mPositionSet ){

// change the position only if Vuforia is active

if ( VuforiaBehaviour.Instance.enabled )

SetPosition();

}

}

// Loop Spawning cube elements

private IEnumerator SpawnLoop()

{

// Defining the Spawning Position

StartCoroutine( ChangePosition() );

yield return new WaitForSeconds(0.2f);

// Spawning the elements

int i = 0;

while ( i <= (mTotalCubes-1) ) {

mCubes[i] = SpawnElement();

i++;

yield return new WaitForSeconds(Random.Range(mTimeToSpawn, mTimeToSpawn*3));

}

}

// Spawn a cube

private GameObject SpawnElement()

{

// spawn the element on a random position, inside a imaginary sphere

GameObject cube = Instantiate(mCubeObj, (Random.insideUnitSphere*4) + transform.positi

on, transform.rotation ) as GameObject;

// define a random scale for the cube

float scale = Random.Range(0.5f, 1f);

// change the cube scale

cube.transform.localScale = new Vector3( scale, scale, scale );

return cube;

}

}

Gambar 4.16 Listing Program SpawnScript

Page 20: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

43

Buat folder baru dengan nama Prefabs. Drag obyek Cube kefolder Prefabs

dan drag obyek Cube yang ada pada folder Prefabs ke M Cube Obj pada kolom

Inspector.

Gambar 4.17 Cube Pada Folder Prefabs

Gambar 4.18 Drag Cube ke M Cube Obj

Buat kode program dengan bahasa C# dan beri nama CubeBehaviorScript.

CubeBehaviorScript ini berguna untuk menentukan HP (Health Point) dari obyek

Cube serta ukuran dan pergerakan Cube. Adapun script CubeBehaviorScript adalah

sebagai berikut :

// Use this for initialization

void Start () {

CubeSettings();

}

// Update is called once per frame

void Update () {

RotateCube();

// scale cube if needed

Page 21: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

44

if ( !mIsCubeScaled )

ScaleObj();

}

// Set initial cube settings

private void CubeSettings(){

// defining the anchor point as the main camera

mOrbitAnchor = Camera.main.transform;

// defining the orbit direction

float x = Random.Range(-2f,2f);

float y = Random.Range(-2f,2f);

float z = Random.Range(-2f,2f);

mOrbitDirection = new Vector3( x, y , z );

// defining speed

mOrbitSpeed = Random.Range( 1f, mOrbitMaxSpeed );

// defining scale

float scale = Random.Range(mScaleMin, mScaleMax);

mCubeMaxScale = new Vector3( scale, scale, scale );

// set cube scale to 0, to grow it lates

transform.localScale = Vector3.zero;

// cube colour

GetComponent<Renderer>().material.color = new Color(255, 10, 10);

}

// Makes the cube rotate around a anchor point

// and rotate around its own axis

private void RotateCube(){

// rotate cube around camera

transform.RotateAround(

mOrbitAnchor.position, mOrbitDirection, mOrbitSpeed * Time.deltaTime);

// rotating around its axis

transform.Rotate( mOrbitDirection * 30 * Time.deltaTime);

}

// Scale object from 0 to 1

private void ScaleObj(){

// growing obj

if ( transform.localScale != mCubeMaxScale )

transform.localScale = Vector3.Lerp( transform.localScale, mCubeMaxScale, Time.deltaTi

me * mGrowingSpeed );

else

mIsCubeScaled = true;

}

// Cube got Hit

// return 'false' when cube was destroyed

public bool Hit( int hitDamage ){

mCubeHealth -= hitDamage;

if ( mCubeHealth >= 0 && mIsAlive ) {

StartCoroutine( DestroyCube());

return true;

Page 22: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

45

}

return false;

}

// Destroy Cube

private IEnumerator DestroyCube(){

mIsAlive = false;

// Make the cube desappear

GetComponent<Renderer>().enabled = false;

// we'll wait some time before destroying the element

// this is usefull when using some kind of effect

// like a explosion sound effect.

// in that case we could use the sound lenght as waiting time

yield return new WaitForSeconds(1f);

Destroy(gameObject);

}

}

Gambar 4.19 Listing Program CubeBehaviorScript

Pada kolom Hierarchy dibuat empty object dengan nama _PlayerController

dan satu buah empty object lagi didalamnya dengan nama _LaserController. Buat

C# Script dengan nama LaserScript.cs dan drag C# script tersebut keobyek

_LaserController. Adapun kode program LaserScript.cs adalah sebagai berikut :

// Use this for initialization

void Start () {

// getting the Line Renderer

mLaserLine = GetComponent<LineRenderer>();

}

// Update is called once per frame

void Update () {

if ( Input.GetButton("Fire1") && Time.time > mNextFire ){

Fire();

}

}

// Shot the Laser

private void Fire(){

// Get ARCamera Transform

Transform cam = Camera.main.transform;

// Define the time of the next fire

mNextFire = Time.time + mFireRate;

// Set the origin of the RayCast

Page 23: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

46

Vector3 rayOrigin = cam.position;

// Set the origin position of the Laser Line

// It will always 10 units down from the ARCamera

// We adopted this logic for simplicity

mLaserLine.SetPosition(0, transform.up * -10f );

// Hold the Hit information

RaycastHit hit;

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hit

mLaserLine.SetPosition(1, hit.point );

boom.SetActive(true);

a=a+1;

} else {

// Set the enfo of the laser line to be forward the camera

// using the Laser range

mLaserLine.SetPosition(1, cam.forward * mFireRange );

}

// anterior code supressed for simplicity

// Show the Laser using a Coroutine

StartCoroutine(LaserFx());

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hitted

mLaserLine.SetPosition(1, hit.point );

// Get the CubeBehavior script to apply damage to target

CubeBehaviorScript cubeCtr = hit.collider.GetComponent<CubeBehaviorScript>();

if ( cubeCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

cubeCtr.Hit( mLaserDamage );

}

}

// Get the CubeBehavior script to apply damage to target

pig pigCtr = hit.collider.GetComponent<pig>();

if ( pigCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

pigCtr.Hit( mLaserDamage );

}

1

Page 24: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

47

}

}

}

// Show the Laser Effects

private IEnumerator LaserFx(){

mLaserLine.enabled = true;

if(a==4) {

CanvasTutorial2.SetActive(true);

a=5;

}

// Way for a specific time to remove the LineRenderer

yield return mLaserDuration;

mLaserLine.enabled = false;

yield return new WaitForSeconds(2.0f);

boom.SetActive(false);

}

}

Gambar 4.20 Listing Program LaserScript

Pada lingkaran 1 dijelaskan bahwa ketika obyek _LaserController

bersentuhan dengan obyek pig maka HP dari obyek pig akan berkurang. Pada folder

asset 3D Pigman yang telah diunduh, drag PigmanAnimated ke kolom Hierarchy.

Setelahnya dibuat kode program C# dengan nama pig. Adapun kode program pig.cs

adalah sebagai berikut :

void Start () {

CubeSettings();

orc.SetBool("normal", false);

orc.SetBool("attacks", true);

}

// Update is called once per frame

void Update () {

//tes

if (transform.position.x >= -5 && aone==true) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

atwo=true;

} else if (transform.position.x <= 5 && atwo==true) {

transform.Translate(Vector3.left * movementSpeed * Time.deltaTime);

aone=false;

} else if (transform.position.x >= 5) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

aone=true;

Page 25: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

48

}

if (transform.position.x <= 5 && transform.position.x >= 2) {

hpbar.SetActive(false);

if(red==true){

myCG.SetActive(true);

} else if (red==false) {myCG.SetActive(false);}

}

if (transform.position.x >= 3) {

red=false;

}

}

private void CubeSettings(){

// get the camera position

Transform cam = Camera.main.transform;

// set the position 10 units forward from the camera position

transform.position = cam.forward * 11;

}

// Cube got Hit

// return 'false' when cube was destroyed

public bool Hit( int hitDamage ){

mCubeHealth -= hitDamage;

ebar.transform.localScale -= new Vector3(1,0,0);

//orc.SetBool("attacks", true);

if ( mCubeHealth <= 0 && mIsAlive ) {

ebar.SetActive(false);

orc.SetBool("death", true);

canvas4.SetActive(true);

StartCoroutine(DestroyCube());

return true;

}

return false;

}

private IEnumerator DestroyCube(){

mIsAlive = false;

// Make the cube desappear

yield return new WaitForSeconds(2.0f);

}

}

Gambar 4.21 Listing Program Pig

Kode program pig.cs tersebut berguna untuk mengatur gerakan obyek 3D

PigmanAnimated , HP , dan pola serangan. Pemain harus menembak musuh dengan

memposisikan musuh tepat di tengah layar. Musuh yang merupakan perwujudan

Page 26: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

49

kebiasaan menunda pekerjaan memiliki HP dan pola serangan yang perlu

diwaspadai pemain. Pemain berhasil menyelesaikan game ketika pemain dapat

menghacurkan musuh dengan membuat HP-barnya menjadi nol.

4.3.3 Pembuatan Level : Chapter 1

Pembuatan Level : Chapter 1 terbagi menjadi 2 scene. Scene pertama

berfungsi untuk menyampaikan pesan melawan kebiasaan buruk mahasiswa dalam

pendidikan anti korupsi. Scene pertama memiliki genre visual novel. Scene kedua

merupakan Augmented Reality melawan musuh yaitu perwujudan memberi

contekan.

Gambar 4.22 Scene #1 Penyampaian Pesan

Adapun Script lvone.cs yang digunakan pada scene pertama adalah sebagai

berikut :

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

switch (a) {

case 1 :

name.text = "+ Prof. Julius +";

dialogue.text ="Iyaaah, kau benar-benar menolong kami. ";

fscreen.SetActive(false);

break;

case 2 :

dialogue.text="Aku tak tahu bagaimana kami bisa berterima kasih padamu.";

Page 27: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

50

break;

case 3 :

choice1Btn.SetActive(true);

choice2Btn.SetActive(true);

...

}

public void btnchoice1() {

a=a+1;

}

public void btnchoice2() {

a=a+1;

}

public void textchange() {

a=a+1;

}

}

Gambar 4.23 Listing Program Lvone

Tanpa memiliki perbedaan yang significant dengan script prologue.cs,

fungsi Update() berguna untuk mengganti Image karakter serta Text seiring

perkembangan cerita yang menyampaikan pesan. Fungsi textchange() berguna

untuk menambah variabel int a yang berhubungan dengan fungsi Update(). Fungsi

btnchoice1() berguna untuk menamah variabel int a ketika pemain memilih

jawaban. Fungsi btnchoice2() memiliki guna yang sama dengan Fungsi

btnchoice1(). Int a sendiri berguna untuk mengganti perintah swicth-case sesuai

dengan perubahan int a.

Gambar 4.24 Scene #2 Game Augmented Reality

Page 28: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

51

Oleh karena Unity telah mengimport Vuforia package pada pembuatan

Level : Prologue maka tidak perlu dilakukan import untuk kedua kalinya.

Pembuatan SpawnScript.cs dan CubeBehaviorScript.cs juga telah dilakukan

sebelumnya sehingga tidak perlu membuat kode pemrogamannya lagi dan dapat

langsung diaplikasikan pada pembuatan Level : Chapter 1 ini. Akan tetapi perlu

dilakukan perubahan terhadap Laserscript.cs karena adanya bug yang ditakutkan

dapat menganggu kinerja game. Adapun kode program Laserscript2.cs adalah

sebagai berikut :

// Use this for initialization

void Start () {

// getting the Line Renderer

mLaserLine = GetComponent<LineRenderer>();

}

// Update is called once per frame

void Update () {

if ( Input.GetButton("Fire1") && Time.time > mNextFire ){

Fire();

}

}

// Shot the Laser

private void Fire(){

// Get ARCamera Transform

Transform cam = Camera.main.transform;

// Define the time of the next fire

mNextFire = Time.time + mFireRate;

// Set the origin of the RayCast

Vector3 rayOrigin = cam.position;

// Set the origin position of the Laser Line

// It will always 10 units down from the ARCamera

// We adopted this logic for simplicity

mLaserLine.SetPosition(0, transform.up * -10f );

// Hold the Hit information

RaycastHit hit;

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hit

mLaserLine.SetPosition(1, hit.point );

boom.SetActive(true);

} else {

// Set the enfo of the laser line to be forward the camera

Page 29: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

52

// using the Laser range

mLaserLine.SetPosition(1, cam.forward * mFireRange );

}

// Show the Laser using a Coroutine

StartCoroutine(LaserFx());

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hitted

mLaserLine.SetPosition(1, hit.point );

// Get the CubeBehavior script to apply damage to target

CubeBehaviorScript cubeCtr = hit.collider.GetComponent<CubeBehaviorScript>();

if ( cubeCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

cubeCtr.Hit( mLaserDamage );

}

}

//get the sphere shield damage

shield shieldCtr = hit.collider.GetComponent<shield>();

if ( shieldCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

shieldCtr.Hit( mLaserDamage );

}

}

//get the knight damage

knight knightCtr = hit.collider.GetComponent<knight>();

if ( knightCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

knightCtr.Hit( mLaserDamage );

}

}

}

}

}

// Show the Laser Effects

private IEnumerator LaserFx(){

mLaserLine.enabled = true;

// Way for a specific time to remove the LineRenderer

yield return mLaserDuration;

mLaserLine.enabled = false;

yield return new WaitForSeconds(2.0f);

1

2

Page 30: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

53

boom.SetActive(false);

}

}

Gambar 4.25 Listing Program LaserScript2

Perbedaan Laserscript2.cs dengan Laserscript.cs terlihat pada lingkaran1

dan lingkaran2 yaitu saat laser bersentuhan dengan obyek knight dan shield. Pada

folder asset 3D ToonRTS_demo_Knight yang telah diunduh, drag

ToonRTS_demo_Knight ke kolom Hierarchy. Setelahnya dibuat kode program C#

dengan nama knight.cs. Adapun kode program knight adalah sebagai berikut:

// Use this for initialization

void Start () {

CubeSettings();

}

// Update is called once per frame

void Update () {

if (transform.position.x <= 4 && aone==true) {

transform.Translate(Vector3.left * movementSpeed * Time.deltaTime);

transform.Translate(Vector3.down * movementSpeed * Time.deltaTime);

atwo=true;

}

else if (transform.position.x >= -3 && atwo==true ) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

aone=false;

}

else if (transform.position.x >= -4 && transform.position.y <= 2) {

transform.Translate(Vector3.left * movementSpeed * Time.deltaTime);

transform.Translate(Vector3.up * movementSpeed * Time.deltaTime);

atwo=false;

} else if (transform.position.x >= -4 && transform.position.y >= 2) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

aone=true;

}

if (transform.position.x >= 5) {

atwo=true;

}

}

private void CubeSettings(){

// defining the anchor point as the main camera

//mOrbitAnchor = Camera.main.transform;

// get the camera position

Transform cam = Camera.main.transform;

Page 31: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

54

// set the position 10 units forward from the camera position

transform.position = cam.forward * 11;

}

// Cube got Hit

// return 'false' when cube was destroyed

public bool Hit( int hitDamage ){

mCubeHealth -= hitDamage;

ebar.transform.localScale -= new Vector3(1,0,0);

//orc.SetBool("attacks", true);

if ( mCubeHealth <= 0 && mIsAlive ) {

ebar.SetActive(false);

//orc.SetBool("death", true);

canvas4.SetActive(true);

StartCoroutine(DestroyCube());

return true;

}

return false;

}

// Destroy Cube

private IEnumerator DestroyCube(){

mIsAlive = false;

// Make the cube desappear yield return new WaitForSeconds(1.0f);

Destroy(gameObject);

}

}

Gambar 4.26 Listing Program Knight

Kode program knight.cs tersebut berguna untuk mengatur gerakan obyek

3D ToonRTS_demo_Knight, HP , dan pola serangan. Pemain harus menembak

musuh dengan memposisikan musuh tepat di tengah layar. Musuh yang merupakan

perwujudan memberi contekan memiliki HP dan pola serangan yang perlu

diwaspadai pemain. Pemain berhasil menyelesaikan game ketika pemain dapat

menghacurkan musuh dengan membuat HP-barnya menjadi nol.

4.3.4 Pembuatan Level : Chapter 2

Pembuatan Level : Chapter 1 terbagi menjadi 2 scene. Scene pertama

berfungsi untuk menyampaikan pesan melawan kebiasaan buruk mahasiswa dalam

pendidikan anti korupsi. Scene pertama memiliki genre visual novel. Scene kedua

merupakan Augmented Reality melawan musuh yaitu perwujudan memberi

contekan.

Page 32: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

55

Gambar 4.27 Scene #1 Penyampaian Pesan

Adapun Script lvtwo.cs yang digunakan pada scene pertama adalah sebagai

berikut :

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

switch (a) {

case 1 :

name.text = "+ Prof. Julius +";

dialogue.text ="Untung pada akhirnya kita bisa memotivasi Beta. Haha...";

fscreen.SetActive(false);

break;

case 2 :

dialogue.text="Sepertinya, kita berdua bisa menjadi tim yang hebat.";

break;

case 3 :

choice1Btn.SetActive(true);

choice2Btn.SetActive(true);

dialgueBtn.SetActive(false);

...

}

public void btnchoice1() {

a=a+1;

}

public void btnchoice2() {

Page 33: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

56

a=a+1;

}

public void textchange() {

a=a+1;

}

}

Gambar 4.28 Listing Program Lvtwo

Gambar 4.29 Scene #2 Game Augmented Reality

Oleh karena Unity telah mengimpor Vuforia package pada pembuatan

Level: Prologue maka tidak perlu dilakukan import untuk kedua kalinya.

Pembuatan SpawnScript.cs dan CubeBehaviorScript.cs juga telah dilakukan

sebelumnya sehingga tidak perlu membuat kode pemrogamannya lagi dan dapat

langsung diaplikasikan pada pembuatan Level: Chapter 2 ini. Adapun kode

program Laserscript3.cs adalah sebagai berikut:

void Start () {

// getting the Line Renderer

mLaserLine = GetComponent<LineRenderer>();

}

// Update is called once per frame

void Update () {

if ( Input.GetButton("Fire1") && Time.time > mNextFire ){

Fire();

}

}

Page 34: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

57

// Shot the Laser

private void Fire(){

// Get ARCamera Transform

Transform cam = Camera.main.transform;

// Define the time of the next fire

mNextFire = Time.time + mFireRate;

// Set the origin of the RayCast

Vector3 rayOrigin = cam.position;

// Set the origin position of the Laser Line

// It will always 10 units down from the ARCamera

// We adopted this logic for simplicity

mLaserLine.SetPosition(0, transform.up * -10f );

// Hold the Hit information

RaycastHit hit;

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hit

mLaserLine.SetPosition(1, hit.point );

boom.SetActive(true);

} else {

// Set the enfo of the laser line to be forward the camera

// using the Laser range

mLaserLine.SetPosition(1, cam.forward * mFireRange );

}

// anterior code supressed for simplicity

// Show the Laser using a Coroutine

StartCoroutine(LaserFx());

// Checks if the RayCast hit something

if ( Physics.Raycast( rayOrigin, cam.forward, out hit, mFireRange )){

// Set the end of the Laser Line to the object hitted

mLaserLine.SetPosition(1, hit.point );

// Get the CubeBehavior script to apply damage to target

CubeBehaviorScript cubeCtr = hit.collider.GetComponent<CubeBehaviorScript>();

if ( cubeCtr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

cubeCtr.Hit( mLaserDamage );

}

}

//get the rhino1 damage

Page 35: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

58

rhino1 rhino1Ctr = hit.collider.GetComponent<rhino1>();

if ( rhino1Ctr != null ) {

if ( hit.rigidbody != null ) {

// apply force to the target

hit.rigidbody.AddForce(-hit.normal*mHitForce);

// apply damage the target

rhino1Ctr.Hit( mLaserDamage );

}

}

}

}

// Show the Laser Effects

private IEnumerator LaserFx(){

mLaserLine.enabled = true;

// Way for a specific time to remove the LineRenderer

yield return mLaserDuration;

mLaserLine.enabled = false;

yield return new WaitForSeconds(2.0f);

boom.SetActive(false);

}

}

Gambar 4.30 Listing Program LaserScript3

Pada lingkaran3 terlihat perbedaan antara kode program Laserscript.cs dan

Laserscript2.cs yang telah dibuat sebelumnya. Pada folder asset 3D Rhino yang

telah diunduh, drag Rhino ke kolom Hierarchy. Setelahnya dibuat kode program

C# dengan nama rhino. Adapun kode program rhino.cs adalah sebagai berikut:

void Start () {

CubeSettings();

orc.SetBool("attacks", true);

}

// Update is called once per frame

void Update () {

if (transform.position.x >= -7 && aone==true) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

atwo=true;

} else if (transform.position.x <= 7 && atwo==true) {

transform.Translate(Vector3.left * movementSpeed * Time.deltaTime);

aone=false;

} else if (transform.position.x >= 7) {

transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);

aone=true;

}

3

Page 36: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

59

//attack

if (transform.position.x <= 5 && transform.position.x >= 2) {

hpbar.SetActive(false);

if(red==true){

myCG.SetActive(true);

} else if (red==false) {myCG.SetActive(false);}

}

if (transform.position.x >= 3) {

red=false;

}

}

private void CubeSettings(){

Transform cam = Camera.main.transform;

transform.position = cam.forward * 11;

}

public bool Hit( int hitDamage ){

mCubeHealth -= hitDamage;

if(mCubeHealth>=700) {

ebar2.transform.localScale -= new Vector3(1,0,0);

}

else if (mCubeHealth<700) {

ebar.transform.localScale -= new Vector3(1,0,0);

}

//orc.SetBool("attacks", true);

if ( mCubeHealth <= 0 && mIsAlive ) {

ebar.SetActive(false);

canvas4.SetActive(true);

StartCoroutine(DestroyCube());

return true;

}

return false;

}

private IEnumerator DestroyCube(){

mIsAlive = false;

yield return new WaitForSeconds(1.0f);

Destroy(gameObject);

}

}

Gambar 4.31 Listing Program Rhino

Kode program rhino.cs tersebut berguna untuk mengatur gerakan obyek 3D

Rhino, HP , dan pola serangan. Pemain harus menembak musuh dengan

Page 37: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

60

memposisikan musuh tepat di tengah layar. Musuh yang merupakan perwujudan

tidak bekerja dalam kerja kelompok memiliki HP dan pola serangan yang perlu

diwaspadai pemain. Pemain berhasil menyelesaikan game ketika pemain dapat

menghacurkan musuh dengan membuat HP-barnya menjadi nol.

4.3.5 Pembuatan Level : Epilogue

Level : Epilogue merupakan kesimpulan dari Level : Prologue , Level :

Chapter 1 , Level : Chapter 2. Level : Epilogue ini disajikan dalam bentuk visual

novel dan pada akhirnya diberikan credit roll yang berisi ucapan terima kasih

kepada pihak-pihak yang telah membantu pembuatan game.

Gambar 4.32 Level : Epilogue

Adapun Script epilogue.cs yang digunakan adalah sebagai berikut :

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

switch (a) {

case 1 :

name.text = "+ Prof. Julius +";

dialogue.text ="Oh benar, apakah kamu mendapat informasi yang berguna untuk penelitia

Page 38: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

61

nmu ?";

fscreen.SetActive(false);

break;

case 2 :

choice1Btn.SetActive(true);

choice2Btn.SetActive(true);

dialgueBtn.SetActive(false);

professora1.SetActive(false);

mc01.SetActive(true);

name.text= "+ Player +";

chtext1.text = "Ya, aku mendapatkan semua informasi yang kubutuhkan.";

chtext2.text = "Ya, bahkan aku bekerja langsung didalamnya.";

break;

case 3 :

//scrollview.SetActive(false);

mc01.SetActive(false);

choice1Btn.SetActive(false);

choice2Btn.SetActive(false);

...

}

public void btnchoice1() {

a=a+1;

}

public void btnchoice2() {

a=a+1;

}

public void textchange() {

a=a+1;

}

}

Gambar 4.33 Listing Program Epilogue

Page 39: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

62

4.4 Pembahasan Statistik

Setelah game selesai dibuat, hipotesa dibangun untuk memprediksi apakah

game Mental of Corrupt mampu menyampaikan pesan anti korupsi. Berikut ini

hipotesa yang dibangun:

H1: Game Mental of Corrupt mampu menyampaikan pesan pendidikan korupsi ke

mahasiswa.

H2: Game Mental of Corrupt mampu menyampaikan pesan melawan sikap

menunda pekerjaan yang berkaitan dengan pendidikan korupsi.

H3: Game Mental of Corrupt mampu menyampaikan pesan melawan sikap

memberi contekan yang berkaitan dengan pendidikan korupsi.

H4: Game Mental of Corrupt mampu menyampaikan pesan melawan sikap tidak

bekerja dalam kerja kelompok yang berkaitan dengan pendidikan korupsi.

H5: Game Mental of Corrupt mampu menyampaikan pesan melawan kebiasaan

buruk dikalangan mahasiswa berkaitan dengan pendidikan korupsi.

Hipotesa yang diajukan perlu diuji dengan menggunakan metode survei

dengan menyebarkan kuesioner. Adapun pertayaan yang dibangun dalam kuesioner

disusun berdasar hipotesa yang diajukan untuk mengetahui apakah game Mental of

Corrupt mampu menyampaikan pesan anti korupsi. Berikut ini pertanyaan yang

dibangun berdasarkan hipotesa:

Q1) Setelah memainkan game Mental of Corrupt, berapa nilai yang anda berikan

untuk pesan hubungan korupsi dan karakter mahasiswa?

Q2) Setelah memainkan game Mental of Corrupt, berapa nilai yang anda berikan

untuk pesan tidak menunda-nunda pekerjaan?

Q3) Setelah memainkan game Mental of Corrupt, berapa nilai yang anda berikan

untuk pesan tidak memberi contekan?

Q4) Setelah memainkan game Mental of Corrupt, berapa nilai yang anda berikan

untuk pesan tidak bertindak pasif dalam kerja kelompok atau tidak berkerja

dalam kerja kelompok?

Page 40: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

63

Q5) Setelah memainkan game Mental of Corrupt, berikanlah nilai untuk game

pendidikan anti korupsi ber genre Augmented Reality (AR) tersebut dalam

menyampaikan pesan?

Hipotesa H5 dibatalkan dengan alasan bahwa pertanyaan kelima (Q5) yang

merupakan alat tes untuk hipotesa H5 tidak secara tepat mewakili pengukuran

melawan kebiasaan buruk.

Data hasil kuesioner tersebut lalu diolah menggunakan SPSS. Penghitungan

dilakukan dengan uji One-Sample T Test untuk membuktikan hipotesa yang

diajukan terpenuhi dan korelasi Pearson untuk membuktikan bahwa variabel

independent Q2, Q3, dan Q4 berkorelasi dengan variabel dependent Q1.

Berikut adalah hasil uji One- Sample T Test :

Tabel 4.5 One- Sample Statistics

One-Sample Statistics

N Mean Std. Deviation Std. Error Mean

Q1 30 3,9333 ,78492 ,14331

Q2 30 4,1000 ,88474 ,16153

Q3 30 4,1333 ,81931 ,14958

Q4 30 4,3000 ,70221 ,12821

Tabel 4.6 One- Sample Test

One-Sample Test

Test Value = 3

t df Sig. (2-tailed) Mean Difference

Q1 6,513 29 ,000 ,93333

Q2 6,810 29 ,000 1,10000

Q3 7,577 29 ,000 1,13333

Q4 10,140 29 ,000 1,30000

Berdasarkan tabel 4.5 dan 4.6 yang merupakan uji One- Sample T Test menunjukan

bahwa mean untuk variabel Q1, Q2, Q3 lebih dari 3 dan perbedaan dari nilai netral

Page 41: BAB IV PEMBUATAN & PEMBAHASAN GAMErepository.unika.ac.id/16191/5/13.07.0003 Pieter Santoso...Sebelum pembuatan game dimulai, dilakukan pembuatan asset sesuai dengan konsep game yang

64

3 menghasilkan angka positif. Dengan demikian, hipotesa H1, H2, H3, dan H4

terbukti (supported).

Untuk menunjukan kaitan/korelasi antara variabel independent Q2, Q3, Q4

dengan variabel dependent Q1 digubakan uji korelasi Pearson yang hasilnya

ditunjukan dalam tabel 4.7.

Tabel 4.7 Hasil Korelasi Menggunakan SPSS

Dari tabel 5.5 menunjukan bahwa variabel H1 memiliki korelasi atau

hubungan yang kuat dengan variabel H2, H3, H4. Dengan demikian dapat

disimpulkan bahwa variabel H2 berkorelasi kuat dengan H1, dengan kata lain

perilaku menunda pekerjaan memiliki kaitan yang kuat dengan (merupakan bagian

dari) perilaku korupsi. Variabel H3 memiliki korelasi yang kuat dengan H1, dengan

kata lain perilaku memberi contekan memiliki kaitan yang kuat dengan (merupakan

bagian dari) perilaku korupsi. Variabel H4 memiliki korelasi yang kuat dengan H1,

dengan kata lain perilaku tidak bekerja dalam kerja kelompok memiliki kaitan yang

kuat dengan (merupakan bagian dari) perilaku korupsi.