teknologi game game genres / aliran...

50
Teknologi Game ratnokustiawan.wordpress.com Page 1 Game Genres / Aliran Permainan Digunakan untuk mengkategorikan game berdasarkan pada perbedaan cara bermain daripada perbedaan secara visual atau naratif. Sebuah aliran dari permainan didefinisikan oleh sekumpulan tantangan. Beberapa genre yang ada antara lain 1. Action Sebuah game dengan jenis Action membutuhkan pemain untuk menggunakan reflek yang cepat, akurasi, dan waktu untuk mengatasi rintangan. Hal ini mungkin yang paling dasar aliran game ini. Game action cenderung memiliki gameplay dengan penekanan pada pertempuran. Ada banyak subgenre game action, seperti “figting games” dan “first person shooter”. 2. Adventure Tidak seperti film-film petualangan, game petualangan tidak didefinisikan oleh cerita atau konten. Sebaliknya, petualangan menjelaskan cara permainan tanpa adanya tantangan refleks atau tindakan. Mereka biasanya meminta pemain untuk memecahkan berbagai teka-teki dengan berinteraksi dengan orang atau lingkungan, paling sering dalam cara non-konfrontatif. 3. Role Playing Sebuah role-playing game (RPG) adalah permainan di mana pemain mengatur suatu karakter. Pemain bertanggung jawab untuk mengarahkan karakter sesuai narasi, baik melalui akting harfiah, atau melalui proses pengambilan keputusan terstruktur atau pengembangan karakter. Tindakan yang dilakukan dalam permainan berhasil atau gagal akan ditentukan menurut pedoman yang berlaku 4. Simulation Konstruksi dan simulasi manajemen (CMS/Construction Simulation Management) adalah suatu jenis permainan simulasi di mana pemain membangun, memperluas atau mengelola komunitas fiktif atau proyek-proyek dengan sumber daya terbatas. Permainan strategi kadang-kadang menggabungkan aspek-aspek CMS ke dalam perekonomian permainan mereka, sebagai pemain harus mengelola sumber daya sementara memperluas proyek mereka. Tapi murni CMS berbeda dari game game strategi, "tujuan pemain tidak untuk mengalahkan musuh, tetapi untuk membangun sesuatu dalam konteks dari proses yang berkelanjutan. Permainan dalam kategori ini kadang-kadang juga disebut" manajemen game 5. Strategy Strategi game fokus pada permainan yang membutuhkan pemikiran yang cermat dan terampil dan perencanaan dalam rangka mencapai kemenangan. Dalam permainan strategi yang paling video, kata Andrew Hollings, "pemain diberikan pandangan atas dari dunia permainan, secara tidak langsung mengendalikan unit-unit di bawah komandonya." Hollings juga mencatat bahwa "Asal usul permainan strategi berakar di dekat sepupu mereka, permainan papan. "permainan strategi yang biasanya mengambil salah satu dari empat bentuk pola dasar, tergantung pada apakah permainan ini adalah turn-based atau real-time dan apakah fokus permainan adalah

Upload: lecong

Post on 10-Mar-2019

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 1

Game Genres / Aliran Permainan Digunakan untuk mengkategorikan game berdasarkan pada perbedaan cara bermain daripada

perbedaan secara visual atau naratif. Sebuah aliran dari permainan didefinisikan oleh sekumpulan

tantangan. Beberapa genre yang ada antara lain

1. Action

Sebuah game dengan jenis Action membutuhkan pemain untuk menggunakan reflek yang cepat,

akurasi, dan waktu untuk mengatasi rintangan. Hal ini mungkin yang paling dasar aliran game

ini. Game action cenderung memiliki gameplay dengan penekanan pada pertempuran. Ada

banyak subgenre game action, seperti “figting games” dan “first person shooter”.

2. Adventure

Tidak seperti film-film petualangan, game petualangan tidak didefinisikan oleh cerita atau

konten. Sebaliknya, petualangan menjelaskan cara permainan tanpa adanya tantangan refleks

atau tindakan. Mereka biasanya meminta pemain untuk memecahkan berbagai teka-teki

dengan berinteraksi dengan orang atau lingkungan, paling sering dalam cara non-konfrontatif.

3. Role Playing

Sebuah role-playing game (RPG) adalah permainan di mana pemain mengatur suatu karakter.

Pemain bertanggung jawab untuk mengarahkan karakter sesuai narasi, baik melalui akting

harfiah, atau melalui proses pengambilan keputusan terstruktur atau pengembangan karakter.

Tindakan yang dilakukan dalam permainan berhasil atau gagal akan ditentukan menurut

pedoman yang berlaku

4. Simulation

Konstruksi dan simulasi manajemen (CMS/Construction Simulation Management) adalah suatu

jenis permainan simulasi di mana pemain membangun, memperluas atau mengelola komunitas

fiktif atau proyek-proyek dengan sumber daya terbatas. Permainan strategi kadang-kadang

menggabungkan aspek-aspek CMS ke dalam perekonomian permainan mereka, sebagai pemain

harus mengelola sumber daya sementara memperluas proyek mereka. Tapi murni CMS berbeda

dari game game strategi, "tujuan pemain tidak untuk mengalahkan musuh, tetapi untuk

membangun sesuatu dalam konteks dari proses yang berkelanjutan. Permainan dalam kategori

ini kadang-kadang juga disebut" manajemen game

5. Strategy

Strategi game fokus pada permainan yang membutuhkan pemikiran yang cermat dan terampil

dan perencanaan dalam rangka mencapai kemenangan. Dalam permainan strategi yang paling

video, kata Andrew Hollings, "pemain diberikan pandangan atas dari dunia permainan, secara

tidak langsung mengendalikan unit-unit di bawah komandonya." Hollings juga mencatat bahwa

"Asal usul permainan strategi berakar di dekat sepupu mereka, permainan papan. "permainan

strategi yang biasanya mengambil salah satu dari empat bentuk pola dasar, tergantung pada

apakah permainan ini adalah turn-based atau real-time dan apakah fokus permainan adalah

Page 2: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 2

pada strategi atau taktik militer. Game real time strategi sering merupakan pilihan permainan

unit ganda (beberapa karakter permainan dapat dipilih sekaligus untuk melakukan tugas yang

berbeda, sebagai lawan hanya memilih satu karakter pada satu waktu) dengan melihat langit

(melihat melihat ke bawah dari atas) tetapi beberapa permainan terakhir seperti Tom Clancy

EndWar, adalah unit pilihan tunggal dan melihat sebagai sisi orang ketiga. Seperti game banyak

RPG.

6. Casual

Sebuah permainan kasual biasanya ditargetkan oleh khalayak massa gamer kasual. Game kasual

dapat memiliki semua jenis permainan, dan cocok di genre apapun. Mereka biasanya dibedakan

dengan aturan sederhana mereka dan tidak diperlukan kompleksitas seperti pada game lain.

Mereka tidak memerlukan komitmen jangka panjang waktu atau keahlian khusus untuk

bermain, dan ada relatif produksi rendah dan biaya distribusi bagi produsen .

Casual game biasanya dimainkan pada komputer pribadi secara online di web browser,

meskipun sekarang mulai menjadi populer di konsol game dan ponsel juga. Gamer kasual

biasanya lebih tua dari gamer komputer tradisional, dan lebih sering dimainkan perempuan,

dengan lebih dari 74% dari gamer kasual adalah perempuan .

7. Educational

Game pendidikan adalah permainan yang telah dirancang untuk mengajar orang tentang topik

tertentu, memperluas konsep, memperkuat pembangunan, memahami sebuah peristiwa

sejarah atau budaya, atau membantu mereka dalam belajar keterampilan karena mereka

bermain.

Dan masih banyak sekali jenis game yang belum dijelaskan disini.

Page 3: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 3

Istilah dalam Game Programming 1. Sprite

Dalam grafik komputer, sebuah sprite adalah gambar dua dimensi atau animasi yang terintegrasi

ke dalam adegan yang lebih besar. Digunakan untuk mendeskripsikan setiap objek dalam game

yang memiliki gambar dan karakteristik. Anda dapat membayangkan sprite sebagai suatu

gambar yang terletak di suatu tempat di layar, yang mana gambar tersebut dapat bergerak,

beranimasi, dan memiliki karakteristiknya masing-masing.

2. Tile Set/Sprite Sheet

koleksi gambar kecil yang disusun menyerupai ubin (biasanya ukuran seragam) yang kemudian

digabungkan menjadi sebuah gambar yang lebih besar tunggal. Tile set sering digunakan dalam

video game 2D untuk membuat peta yang kompleks. Menggunakan tile sets mengurangi jumlah

memori sistem yang diperlukan untuk menampilkan peta karena memungkinkan untuk ubin

yang sama untuk digunakan kembali beberapa kali dalam peta. Hal ini juga mengurangi jumlah

karya seni yang dibutuhkan. Agar peta terbuat dari tile sets tampak lebih khas, permainan

biasanya menampilkan mereka dengan ubin yang berbeda yang ditetapkan untuk setiap

lingkungan yang unik.

Page 4: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 4

Instalasi Android SDK

SDK manager dapat diperoleh di http://developer.android.com/index.html, anda juga dapat

memperolehnya sewaktu kuliah. Gambar dibawah ini menunjukkan paket yang sudah di

download, kurang lebih 3,26 GB.

Eclipse

Pada praktikum digunakan eclipse versi 3.7.1, bagi anda yang hendak menggunakan versi

dibawahnya atau versi 64 bit tidak menjadi masalah selama eclipse tersebut mendukung ADT

12.0.0

ADT

Android Development Tools (ADT) adalah plugin untuk Eclipse IDE yang dirancang untuk

memberikan Anda lingkunganyang terintegrasi untuk membangun aplikasi Android.

ADT memperluas kemampuan Eclipse untuk mempermudah anda mengatur proyek-proyek baru

Android, membuat UI aplikasi, menambahkan komponen berdasarkan Kerangka Android API,

debug aplikasi Anda menggunakan alat SDK Android, dan bahkan ekspor file APL. File APK untuk

mendistribusikan aplikasi Anda.

Pengembangan aplikasi android dalam Eclipse dengan ADT adalah sangat dianjurkan dan

merupakan cara tercepat untuk memulai. Dengan dipandu setup proyek, serta integrasi alat,

Page 5: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 5

XML editor, dan panel ouput debug, ADT memberikan Anda sebuah peningkatan yang luar biasa

dalam mengembangkan aplikasi Android. Untuk tutorial instalasi dapat anda ikuti pada link

berikut ini http://developer.android.com/sdk/eclipse-adt.html.

Page 6: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 6

AndEngine (http://code.google.com/p/andengine/) AndEngine adalah Engine permainan berbasiskan OpenGL 2D gratis untuk platform Android. Dibuat oleh

Nicolas Gramlich.

Android Virtual Device Android Virtual Device (AVD) adalah emulator yang konfigurasi memungkinkan Anda memiliki model

perangkat yang sebenarnya dengan mendefinisikan pilihan hardware dan software yang akan ditiru oleh

Emulator Android. Untuk keterangan selengkapnya klik link berikut ini

http://developer.android.com/guide/developing/devices/index.html

1. Buka eclipse anda

2. Cek apakah Eclipse anda sudah terkoneksi dengan

Android SDK melalui Window Android SDK and AVD Manager

Bila muncul pesan berikut

Page 7: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 7

Menandakan bahwa Android SDK anda belum terkoneksi dengan eclipse, maka pilih menu

Window Preferences, maka akan muncul window preferences sebagai berikut

Pilih Android

Page 8: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 8

Pada SDK Location isi lokasi dari folder SDK Manager.exe, contohnya ditempat saya adalah

F:\android-sdk_r11-windows\android-sdk-windows, kemudian tekan Apply. Maka akan muncul

daftar dari list SDK anda.

Lalu tekan OK

3. Cek kembali melalui menu berikut :

Android SDK melalui Window Android SDK and AVD Manager, maka muncul window berikut

Page 9: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 9

4. Untuk membuat Android Virtual Device silahkan ikuti petunjuk pada manual SDK Manager atau

link berikut ini http://developer.android.com/guide/developing/devices/managing-avds.html.

5. Yang perlu anda ingat adalah

a. Target

Disini saya akan menggunakan Android 2.2 – API Level 8, dengan tujuan agar

mendukung APP to SD tanpa melakukan root terhadap device apabila nanti aplikasi kita

dideploy.

b. Size

Saya beri 100 MiB

c. Snapshot

Saya beri nilai false atau tanpa tanda check, bila anda beri tanda check maka anda

mengaktifkan mode untuk menyimpan state terakhir dari virtual device anda

d. Skin

Disini saya pilih Built-in kemudian HVGA

e. Hardware

i. Max VM Application Head Size

Saya beri nilai 256 MB

ii. Device ram size

Saya beri nilai 512 MB

Tampak seperti gambar berikut

Klik create AVD, maka pada Android SDK and AVD Manager tampak seperti gambar berikut ini

Page 10: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 10

6. Silahkan anda pilih device anda kemudian klik Tombol Start

7. Pada Launch Options, beri tanda check pada Checkbox bertuliskan Scale display to real size, ini

agar device anda disesuaikan dengan ukuran sesungguhnya,

a. Untuk Screen Size beri nilai 4, disini saya mengambil ukuran sama dengan LG Optimus

Black, silahkan sesuaikan dengan kebutuhan anda

8. Pilih Launch

Page 11: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 11

Project Android Standard di Eclipse Pada bagian ini kita akan mencoba untuk membuat project android, project yang kita buat adalah

project standard bawaan ADT

1. Jalankan Eclipse anda

2. File New Android Project

3. Setelah muncul window New Android Project, beri nama project HelloAndroid. Pada Content

pilih Create new project in workspace, beri tanda check pada use Default Location.

4. Untuk build target pilih Android 2.2

5. Untuk ApplicationName pastikan namanya HelloAndroid, untuk package name berinama

com.teknogame atau terserah anda yang penting minimal 2 kata yang dipisahkan tanda titik.

Lalu Pilih Finish

6. Pastikan tampilan eclipse anda seperti gambar dibawah ini

Jika belum maka klik menu Window Show View Project Explorer

Page 12: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 12

7. Pastikan anda mendapatkan tampilan seperti gambar berikut

8. Disana terdapat file HelloAndroidActivity, Apakah Activity itu ??

Activity

komponen aplikasi yang memberikan tampilan dimana pengguna bisa dengan aplikasi untuk

memerintahkan suatu perintah. Sebuah aplikasi biasanya terdiri dari banyak activity. Umumnya,

satu activity dalam aplikasi berlaku sebagai main activity (activity utama) yang akan tampil

pertama kali ketika pengguna menjalankan aplikasi untuk pertama kalinya.

Tiap activity dapat menjalankan activity yang lain untuk menjalankan suatu aksi yang berbeda.

Setiap kali suatu activity dijalankan, maka activity sebelumnya akan dalam kondisi “stop”, tapi

system tetap menjaga activity yang distop dalam stack. Ketika suatu activity baru mulai

dijalankan, maka activity baru ini akan diposisikan di tumpukan teratas dan menjadi tampilan

yang akan difokuskan ke pengguna.

Jadi ketika pengguna sudah selesai beurusan dengan activity yang aktif saat ini dengan menekan

tombol back, maka activity yang aktif saat ini dan terletak di tumpukan paling atas akan

dihancurkan dan menampilkan activity sebelumnya.

Biasanya sebuah Activity semisal HelloAndroidActivity, adalah turunan dari Activity, dalam

AndEngine adalah turunan dari BaseGameActivity.

9. Disana terdapat file AndroidManifest.xml, Apakah AndroidManifest??

Android manifest

file yang dimiliki Setiap aplikasi android didalam root directory. Manifest ini menyimpan

informasi mengenai aplikasi kepada sistem Android, informasi kepada sistem harus ada sebelum

aplikasi dapat dijalankan.

Page 13: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 13

Page 14: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 14

10. Silahkan anda jalankan project HelloAndroid anda dengan cara klik kanan HelloAndroid RunAs

Android Application.

11. Tampilan ketika booting sistem operasi Android

Sambil menunggu diharap juga sebagai sarana belajar sabar

Page 15: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 15

12. Tampilan android anda ketika sudah running

13. Sampai saat ini anda sudah berhasil membuat Hello World, HelloAndroidActivity.

Page 16: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 16

Latihan 1.1 (Background) AndEngine, Menampilkan Gambar Background

1. Buat project android standard dengan nama HoneyCombRush, build target pilih Android 2.2

2. Paket name beri nama com.teknogame.honey

3. Finish

4. Klik kanan project HoneyCombRush Properties

5. Pilih Java Build Path Libraries Add External Jars

Cari file andengine.jar anda, sehingga library andengine.jar terdaftar pada libraries project anda

Page 17: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 17

Lalu ok

6. Pada referenced libraries tampak andengine.jar

7. Silahkan anda buka HoneyCombRushActivity

8. Ganti extends Activity menjadi BaseGameActivity

9. Hapus method onCreate, hasilnya seperti berikut

Penjelasan kode program 1.1 :

o package com.teknogame.honey;

Kode program diatas maksudnya adalah kelas HoneyCombRushActivity terletak pada

paket com.teknogame.honey

o import org.anddev.andengine.ui.activity.BaseGameActivity;

Mengimport kelas BaseGameActivity dari paket org.anddev.andengine.ui.activity,

import ini berguna agar kelas HoneyCombRushActivity dapat menggunakan kelas

BaseGameActivity entah sebagai kelas induk, field atau yang lain.

o public class HoneyCombRushActivity extends BaseGameActivity

Kode program diatas maksudnya adalah kelas HoneyComRushActivity merupakan

turunan dari kelas BaseGameActivity

package com.teknogame.honey; import org.anddev.andengine.ui.activity.BaseGameActivity; import android.app.Activity; import android.os.Bundle; public class HoneyCombRushActivity extends BaseGameActivity { /** Called when the activity is first created. */ }

Page 18: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 18

10. Tampak pada eclipse terdapat error

11. Klik bohlam yang menyala, kemudian pilih add unimplemented method

Disini kita akan mengimplementasikan method yang wajib diimplemetasikan ketika kita

membuat sebuah kelas (dalam hal ini HoneyComRush) menjadi turunan dari BaseGameActivity.

Method tersebut adalah

a. onLoadComplete

b. onLoadEngine

c. onLoadResources

d. onLoadScene

12. Tambahkan 2 attribut untuk menentukan resolusi lebar dan tinggi pada kelas HoneyCombRush

Penjelasan kode program 1.2 :

Maksud dari 2 baris kode program diatas adalah kita menambahkan 2 buah attribut yang

sifatnya statis, memiliki modifier private, bersifat final (tidak bisa diubah ketika saat runtime).

Attribut pertama bernama CAMERA_WIDTH untuk menyimpan lebar layar dan attribut kedua

bernama CAMERA_HEIGHT untuk menyimpan tinggi layar.

13. Tambahkan 4 buah variabel ini di kelas HoneyCombRush

Penjelasan kode program 1.3

Texture

Digunakan untuk menyimpan image background di memory. 1 Texture dapat menyimpan lebih

dari 1 image

Texture Region

Mendefinisikan kotak atau batasan dari texture. TextureRegion digunakan oleh sprite untuk

menentukan bagian mana dari texture yang akan ditampilkan

private static final int CAMERA_WIDTH = 720; private static final int CAMERA_HEIGHT = 480;

private Texture textureBackground; private TextureRegion regionBackground; protected Camera camera; private Scene scene;

Page 19: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 19

Camera

Digunakan untuk menentukan area mana yang akan digambar di layar.

Scene

Adalah root container bagi semua objek yang akan digambar di layar

14. Import yang anda butuhkan sampai saat ini adalah

15. Untuk method onLoadEngine, isi dengan kode program dibawah ini

Penjelasan kode program 1.4 :

Inisialisasi object camera

camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);

Maksud dari kode program diatas adalah membuat objek camera, dimana camera mengambil

posisi awal x dan y adalah 0 dan memiliki panjang dan lebar mengikuti nilai dari attribut

CAMERA_WIDTH dan CAMERA_HEIGHT.

Inisialisasi object engine

Engine engine=new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.camera));

Maksud dari kode program diatas adalah membuat object engine, dimana object tersebut

memiliki options sebagai berikut

a. True berarti fullscreen

b. ScrrenOrientation.LANDSCAPE orientasi layar untuk landscape (HP android di

miringkan)

c. new RatioResolutionPolicy bahwa resolusi yang dipakai sama dengan resolusi camera

d. this.camera camera yang digunakan sebagai acuan

import org.anddev.andengine.engine.Engine; import org.anddev.andengine.engine.camera.Camera; import org.anddev.andengine.entity.scene.Scene; import org.anddev.andengine.opengl.texture.Texture; import org.anddev.andengine.opengl.texture.region.TextureRegion; import org.anddev.andengine.ui.activity.BaseGameActivity;

camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); Engine engine=new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.camera)); return engine;

Page 20: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 20

16. Import yang ditambahkan adalah sebagai berikut

17. Pada method onLoadResources kita tambahkan kode program berikut

Penjelasan kode program 1.5 :

Inisialisasi object textureBackground

textureBackground = new Texture(2048, 2048, TextureOptions.BILINEAR);

Inisialisasi object textureBackground dengan ukuran 2048x2048 dan jenis texture Bilinier.

Inisialisasi object regionBackground

regionBackground = TextureRegionFactory .createFromAsset(textureBackground, this, "background/titleScreen.png", 0, 0);

Inisialisasi object regionBackground dengan memanggil static method createFromAsset dari

kelas TextureRegionFactory. Parameternya diisi :

o textureBackground tempat menyimpan gambar di memory

o this context dari game

o background/titleScreen.png file background yang akan di load

o 0 posisi x dan y di textureBackground

Load Texture

mEngine.getTextureManager().loadTexture(this.textureBackground);

melakukan load texture dari object textureBackground dengan menggunakan method

loadTexture yang didapat dari object TextureManager yang dipanggil dari method

getTextureManager di object mEngine.

18. Pastikan anda sudah menambahkan 2 buah import dibawah ini

import org.anddev.andengine.engine.options.EngineOptions; import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation; import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;

textureBackground = new Texture(2048, 2048, TextureOptions.BILINEAR); regionBackground = TextureRegionFactory .createFromAsset(textureBackground, this, "background/titleScreen.png", 0, 50); mEngine.getTextureManager().loadTexture(this.textureBackground);

import org.anddev.andengine.opengl.texture.TextureOptions; import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;

Page 21: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 21

19. Pada method onLoadScene tambahkan kode program berikut ini

Penjelasan kode program 1.6 :

Inisialisasi object scene

scene=new Scene(1);

melakukan inisialisasi object scene

Inisialisasi object spBackground

Sprite spBackground=new Sprite(0, 0, regionBackground);

Melakukan deklarasi object spBackground dengan type Sprite kemudian melakukan inisialisasi

dengan posisi x dan y adalah 0 dimana sprite ini akan menampilkan gambar yang dipetakan oleh

regionBackground

Penambahan object spBackground ke scene

scene.getLastChild().attachChild(spBackground);

Menambahkan object spBackground ke scene

20. Pada folder asset tambahkan folder background kemudian beri file titleScreen.png

Menambahkan file gambar di folder asset

scene=new Scene(1); Sprite spBackground=new Sprite(0, 0, regionBackground); scene.getLastChild().attachChild(spBackground);

return scene;

Page 22: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 22

21. Jalankan project HoneyCombRush anda, maka hasilnya seperi gambar berikut

Hasil dari latihan 1

Coba tekan CTRL + F11

Selamat, anda sudah berhasil menampilkan halaman awal dari project game ini.

Latihan 1.2

a. Buat 1 buah activity lagi dengan nama InstructionsActivity

b. Tampilkan file instructions.png

c. Pada file AndroidManifest.xml,

<activity android:name=".HoneyCombRushActivity" android:label="@string/app_name">

Ubah tulisan .HoneyCombRushActivity menjadi .InstructionsActivity agar file

InstructionsActivity menjadi activity yang pertama kali dijalankan (main activity)

d. Selamat mencoba

Latihan 1.3

a. Buat 1 buah activity lagi dengan nama PlayActivity

b. Tampilkan file GamePlayBackground.png

c. Lakukan perintah latihan 1.2 bagian c dan sesuaikan nama Activity menjadi PlayActivity

d. Selamat mencoba

Page 23: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 23

Latihan 2.1 (HUD) HUD adalah singkatan dari head-up display dan mewakili semua bagian-bagian dari antarmuka

pengguna yang ditempatkan pada posisi yang tetap pada layar. Dalam permainan ini biasanya mencakup

lifebars, jumlah amunisi, peta, level dll. Andengine memiliki dukungan yang mudah bagi HUD dan

kontrol pada layar.

1. Pastikan bahwa anda sudah menambahkan file buttonBackground.png pada folder assets

background

2. Deklarasikan attribut dengan nama hudPlay dan hudExit pada kelas HoneyCombRushActivity,

kedua attribut tersebut bertype HUD.

Penjelasan kode program :

Kode program diatas maksudnya

a. kita mendeklarasikan attribut yang bernama hudMenu, attribut ini memiliki tipe HUD

dimana satu buah tipe HUD digunakan untuk menamping 1 atau banyak sprite yang

biasanya berfungsi sebagai tombol.

b. Kita mendeklarasikan attribut yang bernama regionButton, attribut ini memiliki tipe

TextureRegion, attribut ini nantinya digunakan untuk menamping image tombol

Jangan lupa tambahkan import berikut ini

3. Pada method onLoadResources, tambahkan kode program dibawah ini sesudah baris kode

program berikut

private HUD hudMenu; private TextureRegion regionButton;

import org.anddev.andengine.engine.camera.hud.HUD;

mEngine.getTextureManager().loadTexture(this.textureBackground);

Page 24: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 24

Kode program yang ditambahkan yaitu

a. Inisialisasi attribut regionButton

Maksud dari kode program diatas adalah objek regionButton diinisialisasi dengan cara

memanggil method createFromAsset dari kelas TextureRegionFactory.

Objek regionButton akan diinisialisasi dengan gambar dari file buttonBackground.png

yang nantinya di memory akan diletakkan berdampingan dengan regionBackground di

objek textureBackground.

Angka 735 menandakan bahwa gambar di file buttonBackground akan terletak di kanan

dari regionBackground yang memiliki panjang 735.

b. Inisialisasi hudMenu

c. Deklarasi local variabel bernama spPlay dengan tipe Sprite

Deklarasi local variabel bernama spExit dengan tipe Sprite

Kode program diatas maksudnya inisialisasi local variabel bernama spExit yang typenya

Sprite, diinisialisasi dengan memanggil constructor yang meminta 3 parameter yaitu x,y

dan texture region.

Untuk x diberi nilai 400

Untuk y diberi nilai 300

Untuk parameter terakhir diberi nilai regionButton agar menampilkan gambar tombol.

d. Melekatkan spPlay dan spExit ke hudMenu

Kode program diatas maksudnya melekatkan spPlay dan spExit ke hudMenu agar ketika

game dijalankan maka tombol play dan exit muncul

e. Melekatkan hudMenu ke camera

Kode program diatas maksudnya melekatkan hudMenu ke camera agar ditampilkan

ketika game dijalankan.

4. Silahkan anda jalankan dan perhatikan apa yang terjadi pada project game anda.

regionButton=TextureRegionFactory .createFromAsset(textureBackground, this, "background/buttonBackground.png",735,0);

hudMenu=new HUD();

Sprite spPlay=new Sprite(100, 300, regionButton);

Sprite spExit=new Sprite(400, 300, regionButton);

hudMenu.getLastChild().attachChild(spPlay); hudMenu.getLastChild().attachChild(spExit);

camera.setHUD(hudMenu);

Page 25: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 25

Latihan 3.1 (Font) Dibagian ini kita akan mempelajari bagaimana caranya menampilkan tulisan di andengine dengan

memanfaatkan font.

1. Pastikan bahwa anda sudah menambahkan file imagica.ttf ke folder assets font

2. Silahkan anda deklarasikan attribut pada kelas HoneyCombRushActivity

a. Attribut font bertipe Font digunakan untuk menyimpan informasi font yang anda load

seperti warna dan ukuran

b. Attribut textureFont bertipe Texture digunakan untuk menyimpan font yang anda load

di memory

3. Pada method onLoadResource tambahkan kode program sesudah baris

Kode program yang ditambahkan adalah

a. Inisialisasi object textureFont

Kode program diatas maksudnya inisialisasi objek textureFont dengan ukuran 256x256

private Font font; private Texture textureFont;

camera.setHUD(hudMenu);

textureFont = new Texture(256, 256);

Page 26: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 26

b. Inisialisasi object font

Kode program diatas maksudnya inisialisasi objek font dengan memanggil method

createFromAsset dari kelas FontFactory, parameternya sebagai berikut

i. textureFont

objek yang digunakan untuk meyimpan font di memory

ii. This

Menunjukkan context dari game, biasanya berupa activity atau kelas

bersangkutan tempat melakukan load suatu resource atau image

iii. “font/Imagica.ttf”

Menunjukkan lokasi font dan font yang akan diload

iv. 48

Ukuran font yang ditentukan diawal

v. True

Apakah font akan diatur agar sifatnya AntiAlias (www.google.com)

vi. Color.Black

Warna dari font

c. Load textureFont dan font

Maksud dari kode program diatas adalah meload objek texture font dan melakukan load

objek font

d. Melekatkan Tulisan Play dan Exit di hudMenu

Karena tulisan play dan exit ini akan ditempatkan ditombol yang terletak di menu, maka

kita akan melekatkan objek Text di hudMenu pada posisi 140 dan 330 serta 460 dan 330

kemudian akan menampilkan tulisan Play dan Exit dimana keduanya menggunakan

huruf yang terdapat di objek font

font = FontFactory.createFromAsset(textureFont, this, "font/Imagica.ttf", 48, true, Color.BLACK);

mEngine.getTextureManager().loadTexture(textureFont); mEngine.getFontManager().loadFont(font);

hudMenu.getLastChild().attachChild(new Text(140, 330, font, "Start")); hudMenu.getLastChild().attachChild(new Text(460, 330, font, "Exit"));

Page 27: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 27

4. Hasil dari game anda ketika sudah dirunning adalah sebagai berikut

Tampilan yang didapat dari VirtualBox

Latihan 3.2

a. Buat 1 buah Activity lagi dengan nama PauseActivity

b. Tampilkan gambar pauseBackground.png sebagai latar belakang.

c. Berikan 2 buah tombol, yaitu Resume dan End Play

Latihan 4.1 (Event Handling) Dibagian ini kita akan mempelajari cara memberikan event handling di AndEngine.

a. Deklarasi sprite

Pindahkan deklarasi spPlay dan spExit keluar dari method onLoadResources, pindah keluar dari

method tersebut

b. Override method onAreaTouched pada objek spStart

Semula kode program anda seperti berikut

private Sprite spPlay,spExit;

Sprite spPlay = new Sprite(100, 300, regionButton);

Page 28: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 28

Silahkan anda ubah seperti berikut

c. Register sprite yang bertugas menangkap event handler

Register spStart sebagai objek yang dapat menangkap event touch pada method onLoadScene

d. Mengaktifkan touch area

Enable touch area

e. Mendaftarkan activity di manifest

i. Silahkan anda buka file AndroidManifest.xml

ii. Tambahkan tag dibawah ini sebelum tag </application>

Latihan 4.2

Tambahkan event untuk menutup game apabila menyentuh tombol exit.

Latihan 4.3

Tambahkan event ketika background di instructions di sentuh maka akan berpindah ke

instructions activity.

spPlay = new Sprite(100, 300, regionButton) { @Override public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { // TODO Auto-generated method stub startActivity(new Intent(HoneyCombRushActivity.this, InstructionActivity.class)); return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); } };

scene.registerTouchArea(spPlay);

scene.setTouchAreaBindingEnabled(true);

<activity android:name=".InstructionActivity"></activity>

Page 29: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 29

Latihan 5.1 (Entity) Digunakan untuk mengelompokkan sprite yang nantinya akan dirender berulang kali, memadukan

beberapa sprite serta sprite yang berhubungan dengan suatu objek seperti actor. Sebuah entity dalam

game bisa berupa apapun yang diturunkan dari kelas yang akan menampung informasi dasar yang ada

dalam game anda (http://nfostergames.com/Lessons/GameEntityManagement.htm).

a. paket com.teknogame.honey.entity

b. Kelas BeeKeeper

kelas ini digunakan untuk mengelola animasi dari pencari madu. Buat agar BeeKeeper adalah

turunan dari Entity

package com.teknogame.honey.entity;

import org.anddev.andengine.entity.Entity;

public class BeeKeeper extends Entity{

}

c. Deklarasikan texture di BeeKeeper

untuk menyimpan gambar sprite berjalan, mengambil madu dan menuangkan madu.

private static Texture textureWalkTorso;

tambahkan import berikut

import org.anddev.andengine.opengl.texture.Texture;

Page 30: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 30

d. Deklarasikan TiledTextureRegion di BeeKeeper

untuk menyimpan informasi gambar tangan, gambar kaki, gambar mengambil madu dan gambar

menuangkan madu.

private static TiledTextureRegion regionWalkTorso;

private static TiledTextureRegion regionWalkLegs;

private static TiledTextureRegion regionCollect;

private static TiledTextureRegion regionDeposit;

Tambahkan import berikut

import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;

e. Deklarasikan AnimatedSprite di BeeKeeper

untuk mengimpan gerakan tangan, kaki, mengambil madu dan menuangkan madu.

private AnimatedSprite spriteTorso;

private AnimatedSprite spriteLegs;

private AnimatedSprite spriteCollect;

private AnimatedSprite spriteDeposit;

Tambahkan import berikut

import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;

f. Tambahkan 1 buah constructor pada kelas BeeKeeper

public BeeKeeper(BaseGameActivity baseGameActivity) {

}

g. Tambahkan folder texture

untuk menampung gambar BeeKeeper

Page 31: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 31

h. Tambah file image

Tambahkan collect.png, deposit.png, walkLegs.png dan walkTorso.png di folder texture

i. Pengaturan path

Atur agar secara otomatis path yang diambil adalah texture, panggil method setAssetBasePath

dikelas TextureRegionFactory. Letakkan kode program di konstruktor

TextureRegionFactory.setAssetBasePath("texture/");

j. Inisialisasi Texture

dengan width 4096 dan height 1024 di konstruktor

if (texture == null)

texture = new Texture(4096, 1024);

Page 32: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 32

k. Inisialisasi RegionWalkTorso

untuk gambar berjalan sambil mengayunkan tangan

if (regionWalkTorso == null)

regionWalkTorso = TextureRegionFactory.createTiledFromAsset(texture,

baseGameActivity, "walkTorso.png", 0, 0, 16, 4);

0,0 berarti gambar ini akan diletakkan di texture pada posisi x=0 dan y=0

16 berarti banyaknya gambar secara horisontal (kolom), 4 berarti banyaknya gambar secara

vertikal (baris)

l. Inisialisasi RegionWalkLegs

Untuk gambar berjalan sambil menggerakkan kaki

if (regionWalkLegs == null)

regionWalkLegs = TextureRegionFactory.createTiledFromAsset(texture,

baseGameActivity, "walkLegs.png", 1030, 0, 16, 4);

1030,0 berarti gambar ini akan diletakkan di texture pada posisi x = 1030 and y = 0 dikarenakan

disisi kiri sudah terdapat gambar walkTorso.

16 berarti banyaknya gambar secara horisontal (kolom), 4 berarti banyaknya gambar secara

vertikal (baris)

Page 33: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 33

m. Inisialisasi RegionCollect

Untuk gambar animasi mengambil madu

if (regionCollect == null)

regionCollect = TextureRegionFactory.createTiledFromAsset(texture,

baseGameActivity, "collect.png", 0, 400, 4, 1);

0,400 berarti gambar ini diletakkan di texture pada posisi x = 0 dan y = 400 sehingga terletak

dibawah walkTorso

4 berarti banyaknya gambar secara horisontal (kolom), 1 berarti banyaknya gambar secara

vertical (baris)

n. Inisialisasi RegionDeposit

Untuk gambar animasi menyimpan madu di tempat penyimpanan

if (regionDeposit == null)

regionDeposit = TextureRegionFactory.createTiledFromAsset(texture,

baseGameActivity, "deposit.png", 300, 450, 4, 1);

300,450 berarti gambar ini diletakkan di texture pada posisi x = 300 dan y = 400 sehingga

terletak di kanan dari collect

4 berarti banyaknya gambar secara horisontal (kolom), 1 berarti banyaknya gambar secara

vertical (baris)

o. Load texture

Load texture menggunakan texture manager

if(texture!=null)

baseGameActivity.getEngine().getTextureManager().loadTexture(texture);

Page 34: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 34

p. Tambahkan method onLoadScene

Method ini dipanggil di method onLoadScene di PlayActivity

public void onLoadScene(){

}

q. Inisialisasi Sprite

Sprite yang akan di inisialisasi adalah spriteTorso, spritelegs, spriteCollect dan spriteDeposit

spriteTorso = new AnimatedSprite(mX, mY, regionWalkTorso);

spriteLegs = new AnimatedSprite(mX, (mY + 2), regionWalkLegs);

spriteCollect = new AnimatedSprite(mX, mY, regionCollect);

spriteCollect.setVisible(false);

spriteDeposit = new AnimatedSprite(mX, mY, regionDeposit);

spriteDeposit.setVisible(false);

r. Attach sprite ke Entity

Agar sprite anda menyatu dengan entity, maka perlu disatukan dengan perintah berikut

attachChild(spriteTorso);

attachChild(spriteLegs);

attachChild(spriteCollect);

attachChild(spriteDeposit);

s. Deklarasikan attribut beeKeeper di kelas PlayActivity

private BeeKeeper beeKeeper;

t. Inisialisasi attribut beeKeeper pada method onLoadResources

beeKeeper = new BeeKeeper(this);

u. Panggil method onLoadScene dan attach ke scene agar beeKeeper tampil

beeKeeper.onLoadScene();

scene.getLastChild().attachChild(beeKeeper);

Page 35: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 35

Latihan 6.1 (OnScreen Control) a. Folder Thumbstick

Buat folder thumbstick di folder asset

b. File OnScreenControl

Tambahkan file onscreen_control_base.png dan onscreen_control_knop.png

c. Paket Thumbstick

Tambahkan paket thumbstick pada paket com.teknogame.honey

Page 36: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 36

d. Tambahkan kelas Thumbstick.java ke paket com.teknogame.honey.thumbstick

e. Implementasikan Interface IAnalogOnScreenControlListener di kelas PlayActivity

public class PlayActivity extends BaseGameActivity implements

IAnalogOnScreenControlListener {

f. Tambahkan 2 method berikut pada kelas PlayActivity

public void onControlChange(BaseOnScreenControl arg0, float arg1, float arg2) {

// TODO Auto-generated method stub

}

public void onControlClick(AnalogOnScreenControl arg0) {

// TODO Auto-generated method stub

}

g. Deklarasikan attribut Thumbstick pada kelas PlayActivity

private Thumbstick thumbstick;

h. Inisialisasi variabel thumbstick pada method onLoadResources

thumbstick = new Thumbstick(this, camera, this);

i. Tambahkan ke scene pada method onLoadScene

scene.setChildScene(thumbstick.onLoadScene());

Page 37: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 37

j. Pastikan tampilan game anda seperti berikut

Atau setidaknya mirip

Page 38: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 38

Latihan 7.1 (Menggerakan Sprite) a. Deklarasi attribute PhysicsHandler di kelas BeeKeeper

Attribut ini digunakan untuk menangani pergerakan sprite ketika pengguna menggerakkan

thumbstick.

private PhysicsHandler physTorso;

private PhysicsHandler physLegs;

b. Menghubungkan PhysicsHandler dengan AnimatedSprite

Tambahkan kode program berikut pada method onLoadScene, sebelum perintah pemanggilan

method attach

physTorso = new PhysicsHandler(spriteTorso);

spriteTorso.registerUpdateHandler(physTorso);

physLegs = new PhysicsHandler(spriteLegs);

spriteLegs.registerUpdateHandler(physLegs);

c. Method moveTo dan Stop

i. Method MoveTo

Digunakan untuk menggerakkan animated sprite mengikuti arahan dari thumbstick,

tambahkan method ini di BeeKeeper

public void moveTo(float x,float y){

float speed=75;

if(x==0 && y==0){

stop();

return;

}

physTorso.setVelocity(x * speed, y * speed);

physLegs.setVelocity(x * speed, y * speed);

}

ii. Method Stop

Digunakan untuk menghentikan pergerakan animated sprite

public void stop(){

physTorso.setVelocity(0);

physLegs.setVelocity(0);

}

Page 39: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 39

Latihan 8.1 (Animasi) a. Kelas Direction

Tambahkan kelas Direction ke paket com.teknogame.honey.entity

b. Attribut Direction dan Duration di kelas BeeKeeper

i. Attribut Direction ini digunakan untuk menyimpan arah dari sprite saat ini.

private int[] currentDirection;

ii. Attribut Duration ini digunakan untuk menyimpan durasi per frame

private long[] duration = new long[] { 100, 100, 100, 100, 100, 100, 100, 100 };

c. Method moveChecker

Digunakan untuk mengatur gambar sprite yang akan kita render, kedepannya bisa digunakan

untuk mengecek tumbukan dengan sarang madu dan tangki madu.

public void moveChecker(float x,float y){

}

Page 40: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 40

d. Kode program untuk mendeteksi arah animasi gambar, letakkan di method moveChecker

int[] tempDirection = null;

if (x > 0.2f) {

// kanan

if (y > 0.2f) {

tempDirection = Direction.SOUTH_EAST;

} else if (y < -0.2f) {

tempDirection = Direction.NORTH_EAST;

} else {

tempDirection = Direction.EAST;

}

} else if (x < -0.2f) {

// kiri

if (y > 0.1f) {

tempDirection = Direction.SOUTH_WEST;

} else if (y < -0.2f) {

tempDirection = Direction.NORTH_WEST;

} else {

tempDirection = Direction.WEST;

}

} else {

if (y > 0.2f) {

tempDirection = Direction.SOUTH;

} else {

tempDirection = Direction.NORTH;

}

}

if (currentDirection == tempDirection

&& !spriteTorso.isAnimationRunning()) {

spriteTorso.animate(duration, currentDirection[0],

currentDirection[1], true);

spriteLegs.animate(duration, currentDirection[0],

currentDirection[1], true);

}

if (currentDirection != tempDirection) {

currentDirection = tempDirection;

spriteTorso.animate(duration, currentDirection[0],

currentDirection[1], true);

Page 41: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 41

spriteLegs.animate(duration, currentDirection[0],

currentDirection[1], true);

}

e. Pemanggilan moveChecker

Panggil method moveChecker di method onControlChange di kelas PlayActivity, panggil sebelum

pemanggilan method beeKeeper.moveTo

beeKeeper.moveChecker(arg1, arg2);

Sehingga kode program pada method onControlChange seperti berikut

public void onControlChange(BaseOnScreenControl arg0, float arg1, float arg2) {

if(beeKeeper==null)

return;

beeKeeper.moveChecker(arg1, arg2);

beeKeeper.moveTo(arg1, arg2);

}

f. Coba anda jalankan game anda dan jalankan karakter anda dengan cara mengendalikan

thumbstick.

Page 42: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 42

Latihan 9.1 (BeeHive) a. Tambahkan kelas BeeHive pada paket com.teknogame.honey.entity

Jangan lupa tambahkan file beeHive.png ke folder texture

b. Deklarasi BeeHive di kelas PlayActivity

private BeeHive hiveKanan,hiveKiri,hiveAtas,hiveKananAtas,hiveKiriAtas;

c. Inisialisasi BeeHive

Lakukan inisialisasi BeeHive di method onLoadResources kelas PlayActivity

hiveAtas=new BeeHive(this);

hiveAtas.setPosition(335, 15);

hiveKananAtas=new BeeHive(this);

hiveKananAtas.setPosition(575, 15);

hiveKiriAtas=new BeeHive(this);

hiveKiriAtas.setPosition(100,15);

hiveKanan=new BeeHive(this);

hiveKanan.setPosition(580,220);

hiveKiri=new BeeHive(this);

hiveKiri.setPosition(100,220);

Page 43: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 43

d. Attach BeeHive ke scene

Tambahkan kode program berikut di method onLoadScene kelas PlayActivity

hiveAtas.onLoadScene();

hiveKananAtas.onLoadScene();

hiveKiriAtas.onLoadScene();

hiveKanan.onLoadScene();

hiveKiri.onLoadScene();

scene.getLastChild().attachChild(hiveAtas);

scene.getLastChild().attachChild(hiveKananAtas);

scene.getLastChild().attachChild(hiveKiriAtas);

scene.getLastChild().attachChild(hiveKanan);

scene.getLastChild().attachChild(hiveKiri);

e. Samakan isi method onLoadResource seperti kode program dibawah ini

public void onLoadResources() {

// TODO Auto-generated method stub

textureBackground = new Texture(2048, 2048, TextureOptions.BILINEAR);

regionBackground = TextureRegionFactory.createFromAsset(

textureBackground, this,

"background/GamePlayBackground.png",

0, 0);

mEngine.getTextureManager().loadTexture(this.textureBackground);

beeKeeper = new BeeKeeper(this);

beeKeeper.setPosition(170, 170);

thumbstick = new Thumbstick(this, camera, this);

hiveAtas=new BeeHive(this);

hiveAtas.setPosition(170, 15);

hiveKananAtas=new BeeHive(this);

hiveKananAtas.setPosition(290, 15);

hiveKiriAtas=new BeeHive(this);

hiveKiriAtas.setPosition(50,15);

hiveKanan=new BeeHive(this);

Page 44: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 44

hiveKanan.setPosition(290,110);

hiveKiri=new BeeHive(this);

hiveKiri.setPosition(50,110);

}

f. Hasilnya tampak seperti gambar berikut

Disarankan agar attach semua beeHive baru kemudian attach beeKeeper, atau dengan kata lain

proses attach pada method onLoadScene kelas PlayActivity yang dirender beeHive dulu baru

beeKeeper.

Page 45: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 45

Latihan 10.1 (Vat) a. Tambahkan kelas Vat pada paket com.teknogame.honey.entity

Jangan lupa tambahkan file vat.png ke folder texture

b. Deklarasi Vat

Lakukan deklarasi vat di kelas PlayActivity

private Vat vat;

c. Inisialisasi Vat

Lakukan inisialisasi vat di method onLoadResources dan letakkan di lokasi x = 170, y=170

vat=new Vat(this);

vat.setPosition(170,170);

Ubah agar nilai Y dari beeKeeper menjadi 120

d. Attach Vat ke scene

vat.onLoadScene();

scene.getLastChild().attachChild(vat);

Page 46: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 46

Latihan 11.1 (Collision Detection) a. Mendeteksi Collision Detection

Untuk mendeteksi collision detection, cara yang paling sederhana adalah dengan menggunakan

Rectangle di BeeKeeper, BeeHive dan Vat, kemudian mendeteksi apakah rectangle – rectangle

tersebut saling berpotongan.

b. Deklarasi Rectangle di BeeHive

Pertama tama kita alokasikan rectangle pada beeHive

private Rectangle rect;

c. Inisialisasi Rect

Inisialisasi rect di method onLoadScene kemudian attach di scene

rect = new Rectangle(mX, mY, regionSarang.getWidth(),

regionSarang.getHeight());

rect.setColor(1, 0, 0);

attachChild(rect);

d. Sourcecode onLoadScene

Sehingga pada method onLoadScene di method onLoadScene seperti berikut

public void onLoadScene() {

rect = new Rectangle(mX, mY, regionSarang.getWidth(),

regionSarang.getHeight());

rect.setColor(1, 0, 0);

attachChild(rect);

spriteSarang = new Sprite(mX, mY, regionSarang);

attachChild(spriteSarang);

}

e. Hasil di Game

Bila anda jalankan tampak seperti gambar berikut

Page 47: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 47

f. Deklarasi rect di Vat

Pada kelas Vat.java, deklarasikan juga rectangle

private Rectangle rect;

g. Inisialisasi rect

Inisialisasi rect di method onLoadScene kemudian attach di scene

rect = new Rectangle(mX, mY, regionSarang.getWidth(),

regionVat.getHeight());

rect.setColor(1, 0, 0);

attachChild(rect);

h. Sourcode onLoadScene

Sehingga pada method onLoadScene di method onLoadScene seperti berikut

public void onLoadScene() {

rect = new Rectangle(mX, mY, regionVat.getWidth(),

regionVat.getHeight());

rect.setColor(1, 0, 0);

attachChild(rect);

spriteVat = new Sprite(mX, mY, regionVat);

attachChild(spriteVat);

}

i. Hasil di Game

Sehingga tampak seperti gambar berikut

Page 48: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 48

j. Deklarasi rectangle di BeeKeeper

private Rectangle rect;

private Rectangle rectLegs;

k. Inisialisasi rect di method onLoadScene kelas BeeKeeper

rectLegs = new Rectangle(mX + (regionWalkLegs.getTileWidth() / 3), mY

+ (regionWalkLegs.getTileHeight() / 2) + 30,

regionWalkLegs.getTileWidth() / 3,

(regionWalkLegs.getTileHeight() / 3) / 2);

rectLegs.setColor(0, 1, 0);

attachChild(rectLegs);

rect = new Rectangle(mX + (regionWalkLegs.getTileWidth() / 3), mY

+ (regionWalkLegs.getTileHeight() / 2) + 30,

regionWalkLegs.getTileWidth() / 3,

(regionWalkLegs.getTileHeight() / 3) / 2);

rect.setColor(0, 1, 2);

attachChild(rect);

l. Ubah lokasi dari rectLegs

Dengan cara menambahkan kode program berikut di method moveTo kelas BeeKeeper

rectLegs.setPosition(spriteLegs.getX()

+ (regionWalkLegs.getTileWidth() / 3), spriteLegs.getY()

+ (regionWalkLegs.getTileHeight() / 2) + 30);

Page 49: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 49

m. Ubah lokasi dari rect

Tambahkan kode program berikut di method moveChecker, sesudah pengecekan arah sebelum

logika

if (currentDirection == tempDirection) {

if (tempDirection == Direction.EAST) {

rect.setPosition(rectLegs.getX() + rectLegs.getWidth(),

rectLegs.getY());

} else if (tempDirection == Direction.NORTH) {

rect.setPosition(rectLegs.getX(), rectLegs.getY()

- rectLegs.getHeight());

} else if (tempDirection == Direction.NORTH_EAST) {

rect.setPosition(rectLegs.getX() + rectLegs.getWidth(),

rectLegs.getY() - rectLegs.getHeight());

} else if (tempDirection == Direction.NORTH_WEST) {

rect.setPosition(rectLegs.getX() - rectLegs.getWidth(),

rectLegs.getY() - rectLegs.getHeight());

} else if (tempDirection == Direction.SOUTH) {

rect.setPosition(rectLegs.getX(), rectLegs.getY()

+ rectLegs.getHeight());

} else if (tempDirection == Direction.SOUTH_EAST) {

rect.setPosition(rectLegs.getX() + rectLegs.getWidth(),

rectLegs.getY() + rectLegs.getHeight());

} else if (tempDirection == Direction.SOUTH_WEST) {

rect.setPosition(rectLegs.getX() - rectLegs.getWidth(),

rectLegs.getY() + rectLegs.getHeight());

} else if (tempDirection == Direction.WEST) {

rect.setPosition(rectLegs.getX() - rectLegs.getWidth(),

rectLegs.getY());

}

n. Ubah agar method moveChecker kembaliannya bukan void tapi Rectangle

public Rectangle moveChecker(float x, float y) {

dan diakhiri dengan kode program

return rect;

Page 50: Teknologi Game Game Genres / Aliran Permainanelearning.amikom.ac.id/index.php/download/materi/190302158-DT070-89... · 3. Role Playing Sebuah role-playing game (RPG) adalah permainan

Teknologi Game

ratnokustiawan.wordpress.com

Page 50

o. Method isCannotMove di kelas BeeHive

public boolean isCannotMove(Rectangle rect) {

return this.rect.collidesWith(rect);

}

p. Ubah method onControlChange pada kelas PlayActivity agar dapat digunakan untuk mendeteksi

tumbukan

public void onControlChange(BaseOnScreenControl arg0, float arg1, float arg2) {

if (beeKeeper == null)

return;

Rectangle rect = beeKeeper.moveChecker(arg1, arg2);

if(hiveAtas.isCannotMove(rect)){

beeKeeper.stop();

return;

}

if(hiveKanan.isCannotMove(rect)){

beeKeeper.stop();

return;

}

if(hiveKiri.isCannotMove(rect)){

beeKeeper.stop();

return;

}

if(hiveKananAtas.isCannotMove(rect)){

beeKeeper.stop();

return;

}

if(hiveKiriAtas.isCannotMove(rect)){

beeKeeper.stop();

return;

}

beeKeeper.moveTo(arg1, arg2);

}

q. Coba anada jalankan game anda