Selasa, 27 April 2010

Game Edukasi "Simetri" menggunakan flash

Game edukasi yang dibuat dalam project ini adalah game yang mengasah otak sebuah karakteristik dari bidang geometri, persamaan dan objek lainnya atau byasa disebut dengan simetri. Dalam game ini anda akan disuruh mencari jalan dengan menekan tombol arah pada keyboard. Apabila anda dapat mencari jalan dngan tepat maka permainan tersebut aan menuju level selanjutnya. Dalam permainann ini juga terdapat waktu untuk menyelesaikannya. Jika ssampai pada waktu yang ditentukan anda belum bisa menemukan jalan yang benar maka permainan berakhir.

Dalam perancangan game ini kami kerjakan secara berkelompok :
1. Arnoldus Billy
2. Danang Panji
3. Johanes Paulus
4. Sendy Y Samarani Dachi
5. Taufik Umar

Dalam pembuatan game ini hal pertama yang harus dilakukan adalah membuat perancangan tampilan. Setelah itu kita masukan beberapa koding dalam pembuatan aplikasi ini agar aplikasi tersebut dapat dijalankan dengan lebih baik lagi.

Langkah - langkah pembuatan koding :

1. Pada Layer Action di Scene utama atau pada halaman utama, kita buat sebuah key frame baru. setelah itu masukkan koding :

level = 1;
function Variabel_Baris_1()
{
_root.baris0 = "XXXXXXXXXXXXXXXXX";
_root.baris1 = "XOOOOOOOXOOOOOOOX";
_root.baris2 = "XXXXXOXXXXXOXXXXX";

_root.baris3 = "XOOOOOOOXOOOOOOOX";
_root.baris4 = "XOXXXXXXXXXXOXXXX";
_root.baris5 = "XOOOOOOOXOOOOOOOX";
_root.baris6 = "XXXXOXXXXXXXOXXXX";
_root.baris7 = "XOO_OOOOXOOOOOOXX";
_root.baris8 = "XXXXXXXOXXOXXOXXX";
_root.baris9 = "XOOOOOOOXOOOOOOOX";
_root.baris10 = "XXXOXOXXXXXXXOXXX";
_root.baris11 = "XOOOOOOOXOOOOOOOX";
_root.baris12 = "XXXXXXXOXXXXXXXOX";
_root.baris13 = "XOOOOOOOXOOOOOOOX";
_root.baris14 = "XXXXOXXXXXXXXXOXX";

_root.baris15 = "XOOOOOOOXOOOOOOOX";
_root.baris16 = "XXXXXXXXXXXXXXXXX";
}


function Variabel_Baris_2()
{
_root.baris0 = "XXXXXXXXXXXXXXXXX";
_root.baris1 = "XOOOOOOOXOOOOOOOX";
_root.baris2 = "XXOXXXXXXXOXXXOXX";
_root.baris3 = "XOOOOOOOXOOOOOOOX";
_root.baris4 = "XXXOXOXXXXXXOXXXX";
_root.baris5 = "XOOOOOOOXOOOOOOOX";
_root.baris6 = "XXXXXOXXXXOXXXXXX";
_root.baris7 = "XOOOOOOOXOOOOOOOX";
_root.baris8 = "XXXXXOXXXXOXXXXOX";
_root.baris9 = "XOOOOOOOXOOOOOOOX";
_root.baris10 = "XXXXXOXXXXXOXXXOX";
_root.baris11 = "XOOOOOOOXOO_OOOOX";
_root.baris12 = "XXXXXOXXXXXXXOXOX";
_root.baris13 = "XOOOOOOOXOOOOOOOX";
_root.baris14 = "XXXXXXOXXXXXXXOXX";
_root.baris15 = "XOOOOOOOXOOOOOOOX";
_root.baris16 = "XXXXXXXXXXXXXXXXX";
}

Koding diatas merupakan koding untuk menampilkan batas atau tembok penghalang seperti pada gambar dibawah ini.



2. Langkah kedua adalah membuat koding untuk memberikan sebuah perubahan pada batas atau tembok penghalang jika permainan menuju level selanjutnya. koding yang diberikan adalah :

if (level == 1) {
_root.Variabel_Baris_1();
} else {
_root.Variabel_Baris_2();
}
jumlah = 0;
for (i=0; i<=16; i++) {
for (j=0; j<=17; j++) {
pos = substring(eval("baris"+i), j+1, 1);
if (pos == "X") {
duplicateMovieClip(rock, "rock"+jumlah, 100+jumlah);
setProperty("rock"+jumlah, _x, 20*j);
setProperty("rock"+jumlah, _y, 20*i);
jumlah++;
} else if (pos == "_") {
setProperty(jebakan, _x, 20*j);
setProperty(jebakan, _y, 20*i);
}
}
}
setProperty("rock", _visible, 0);

pada tampilan aplikasi setelah dijalankan akan membentuk seperti ini :



3. Langkah ke tiga adalah membuat sebuah koding agar objek tidak dapat melewati batas - batas dan pada aplikasi ini diberikan sebuah jebakan. Jadi apabila objek mengenai jebakan tersebut, maka permainan akan berhenti. Kodingnya adalah :

x_p2 = p2._x/20;
y_p2 = p2._y/20;
x_p1 = p1._x/20;
y_p1 = p1._y/20;
batas_kiri_p1 = substring(eval("baris"+y_p1),x_p1,1);
batas_kanan_p1 = substring(eval("baris"+y_p1),x_p1+2,1);
batas_bawah_p1 = substring(eval("baris"+Number(y_p1+1)),x_p1+1,1);
batas_atas_p1 = substring(eval("baris"+Number(y_p1-1)),x_p1+1,1);
batas_kiri_p2 = substring(eval("baris"+y_p2),x_p2,1);
batas_kanan_p2 = substring(eval("baris"+y_p2),x_p2+2,1);
batas_bawah_p2 = substring(eval("baris"+Number(y_p2+1)),x_p2+1,1);
batas_atas_p2 = substring(eval("baris"+Number(y_p2-1)),x_p2+1,1);
if (x_p1==9 && y_p1==1 && x_p2==7 && y_p2==1) {
gotoAndStop("You Win");
} else if ((p1._x==jebakan._x && p1._y==jebakan._y) || ((p2._x==jebakan._x && p2._y==jebakan._y)) || (timer.detik==0)) {
gotoAndStop("You Loose");
}

4. Lalu Langkah ke - empat adalah membuat key frame baru dan membuat koding untuk memulai aplikasi permainan tersebut :

gotoAndPlay("loop");

5. Berikutnya adalah membuat berikan tindakan apabila aplikasi tersebut telah selesai dijalankan atau objek melewati jebakan yang diberikan atau juga objek tidak dapat menyelesaikan permainan hingga waktu yang ditentukan selesai. Dengan koding :

stop();
for (i=0; i<=jumlah; i++) {
removeMovieClip("rock"+i);
}

6.
Setelah itu kita membuat waktu untuk permainan ini dengan koding :

onClipEvent (load) {
detik = 35;
timer = 12;
}
onClipEvent (enterFrame) {
timer--;
if (timer == 0) {
detik--;
timer = 12;
}
}


7. Kali ini kita akan membuat nilai awal untuk objek pada saat kita memulai permainan ini dengan koding :

Koding untuk Objek pertama :

onClipEvent (load) {
_x = 7*20;
_y = 15*20;
}

Koding untuk Objek kedua :

onClipEvent (load) {
_x = 9*20;
_y = 15*20;
}

8. Lalu untuk mengarahkan objek ini kita menggunakan kita menggunakan keyboard. untuk mengarahkan dengan keyboard dibutuhkan koding agar dapat di mengerti oleh aplikasi ini. kodingnya adalah :

on (keyPress "") {
if (batas_kanan_p1<>"X") {
p1._x = p1._x+20;
}
if (batas_kiri_p2<>"X") {
p2._x = p2._x-20;
}
}
on (keyPress "") {
if (batas_kiri_p1<>"X") {
p1._x = p1._x-20;
}
if (batas_kanan_p2<>"X") {
p2._x = p2._x+20;
}
}
on (keyPress "") {
if (batas_atas_p1<>"X") {
p1._y = p1._y-20;
}
if (batas_atas_p2<>"X") {
p2._y = p2._y-20;
}
}
on (keyPress "") {
if (batas_bawah_p1<>"X") {
p1._y = p1._y+20;
}
if (batas_bawah_p2<>"X") {
p2._y = p2._y+20;
}
}

9. Setelah itu kita membuat nilai awal untuk garis finish atau objek yang menyatakan bahwa objek - objek yang kita jalankan telah sampai di tujuannya.

Untuk Objek finish pertama :

onClipEvent (load) {
setProperty(this, _x, 7*20);
setProperty(this, _y, 20);
}

Untuk objek finish kedua :

onClipEvent (load) {
setProperty(this, _x, 9*20);
setProperty(this, _y, 20);
}

Setelah koding datas telah dimasukkan, maka aplikasi tersebut dapat dijalankan. Untuk mengetahui cara memainkan aplikasi ini, silahkan klik di sini.

Senin, 01 Maret 2010

Sekilas Tentang Teknologi PhysX

Pengertian PhysX : adalah efek – efek visual yang realistic dalam game yang merujuk pada hukum fisika (masssa, gravitasi, gesekan angin, aliran air, dll).




Sejarah teknologi PhysX
Teknologi PhysX pertama kali dikembangkan oleh Ageia dan kini telah di akuisisi oleh NVIDIA. Oleh karena itu physX terikat dengan kartu grafis dengan prosesor grafis NVIDIA. Kalkulasi physic oleh engine PhysX memerlukan 2 hal, software dan hardware. Hardware untuk menjalankannya disebut dg PPU (Physic Proccessing Unit), dulu PPU eksklusif hanya ada pada hardware 'Ageia PhysX PPU', namun sekarang oleh NVIDIA PPU tersebut diintegrasikan pada GPU GeForce-nya sehingga efek2 PhysX pada aplikasi tertentu dapat dijalankan hanya oleh NVIDIA GeForce saja. Pada software, kalkulasi physic oleh PhysX engine selain memerlukan driver PhysX, juga hanya akan bekerja pada software2 yg telah mengimplementasikan engine PhysX ini, jadi efek2 physic oleh PhysX engine HANYA akan bekerja pada software2(game2) yg didukung, dg driver yg sesuai, dan hardware yg yg mendukung.

Keunggulan dari PhysX
dengan menggunakan PhysX ini, kinerja prosesor tidak terbebani karena lebih mengoptimasikan kinerja GPU (Graphic Processing Unit).


Efek yang dirasakan dari PhysX dengan jelas adalah ketika pemain menjumpai sebuah ledakan dalam game.
Misalkan efek kehancuran yang ditimbulkan karena ledakan itu akan telihat lebih detail.
Contohnya, dalam game Gears of War ketika pemain melemparkan granat maka ledakan yang ditimbulakan tampak lebih alami, serpihan yang mencuat pun lebih nyata. Efek lainnya yaitu: reruntuhan yang reaktif, tampilan air yang sangat nyata dan tentunya karakter yang lebih hidup.

Di bawah ini adalah salah satu contoh dari game PhysX :