Jump to content
zsuperxtreme

Kelab Bina Game: Tutorial Membuat Game 3d

Recommended Posts

Ha ah. boleh buat kat dalam tu. Tapi kalau nak power lagi pakai OGRE. FREE. Tapi dari development team dia kata, library game takde, kena cari atau buat sendirik. Kalau nak Shadow, lighting, power power guna OGRE, tapi tutorial kat sini still pakai irrlicht. hehe. Simple.

Share this post


Link to post
Share on other sites

maaf jika soalan aku ni kelihatan seperti bodoh skit...

Game engine ni sebenarnya untuk apa?

Apa fungsi dia?

Share this post


Link to post
Share on other sites

TUTORIAL

COLLISION DETECTION (LEVEL TUTORIAL: SEDERHANA)

Ok kalau kita nak buat collision (langgar dinding, panjat tangga, gravity) maka kita guna kaedah di bawah. Kod ini sebelum while

collision.jpg

Kod untuk buat collision detection, sebelum while.

//Memasukkan model ke dalam game

    scene::IAnimatedMesh* q3levelmesh = smgr->getMesh("dunia.3ds");
    scene::ISceneNode* q3node = 0;
    
    if (q3levelmesh)
        q3node = smgr->addOctTreeSceneNode(q3levelmesh->getMesh(0));


//Letak kamera FPS dan buat collision detection
    scene::ICameraSceneNode* camera = 
        smgr->addCameraSceneNodeFPS(0, 100.0f, 300.0f, -1, 0, 0, true);
    camera->setPosition(core::vector3df(-100,50,-150));

    scene::ISceneNodeAnimator* anim = smgr->createCollisionResponseAnimator(
        selector, camera, core::vector3df(30,50,30),
        core::vector3df(0,-3,0), 
        core::vector3df(0,50,0));
    camera->addAnimator(anim);
    anim->drop();


Ok Izmal, byk lagi kita dapat explore makin menarikkan? hehehe.. tu la

MENJAWAB SOALAN

Game engine ni sebenarnya untuk apa?

Game engine ni membantu mengurangkan kod yang perlu dibuat. Contohnya kalau nak buat animasi guna CORE PROGRAMMING, memang panjang, adala dalam 1000 line. Tapi kalau pakai game/graphic engine, cuma paling koman 2 3 line je. Selain itu sesetengah game engine sediakan fizik game yang membantu membuat pegerakan dan bermacam-macam lagi. contoh irrlicth sediakan pegerakan FPS, cuma 1 line sahaja, Kalau code sendiri mau tulang belakang patah. Hehehe. Dan banyak lagi fungsi-fungsi yang memudahkan pembangunan game.

Apa fungsi dia?

Membantu menyediakan fizik, animasi, modelling, texturing, material dan map lebih mudah berbanding core programming.

Sebelum kita pergi lebih lanjut, adalah lebih baik kita diskus mengenai COLLISION, info diatas tu ringkas je... any question? Jwb soalan lagi bagus. senang sikit nak jelas.

Share this post


Link to post
Share on other sites

Dalam semua game engine, kita seringkali diberitahu bahawa adanya feature 'collision detection'. Apakah definisi sebenar collision detection dalam sesebuah game. Kalo ikut pengetahuan orang biasa:

(1) Collision - perlanggaran/ pertembungan/ penghampiran

(2) Detection - pengesanan

Cikgu Zsuperxtreme boleh terangkan lebih lanjut tak?

Share this post


Link to post
Share on other sites

MENJAWAB SOALAN

DEFINISI

(1) Collision - perlanggaran/ pertembungan/ penghampiran

Collision (Pelanggaran) adalah suatu method dimana sesuatu objek adalah terpaut dengan teori-teori fizik graviti dan pelanggaran pada sesuatu permukaan yang tidak boleh ditembusi. Oleh itu dengan adanya pengiraan "collision" ini objek tidak dapat menembusi dinding, pokok, kereta, dan objek-objek lain seumpama dunia realiti. Selain itu dengan adanya teknik ini juga, objek dapat berkedudukan pada lokasi begraviti dimana ia boleh memanjat tangga, jatuh dari bangunan dan menggelonsor dari permukaan curam. Dengan adanya teknik "collision" ini game akan kelihatan lebih realistik. Berikut adalah bagaimana "collision detection dapat dijelaskan dalam bentuk gambarajah. Garisan Kuning menandakan kawasan yang telah disetkan ke dalam model agar objek tidak menembusi ruangan tersebut, dan terdapat ruangan yang boleh ditembusi.

collision1.jpg

(2) Detection - pengesanan

Pengesanan collision ini terbahagi kepada banyak peringkat

1. Sphere Collision Detection

Objek bulat mewakili mana mana objek untuk mengesan 2 objek bulat berlanggar antara satu sama lain

2. Box Collision Detection

Pengesanan pelanggaran dua objek melalui kekotak

3. Triangle Collision Detection

Pelanggaran ditentukan dengan samada objek memasuk ruangan segitiga yang telah disetkan.

Implementasi pengesanan pelanggaran

Pengesanan sesuatu pelanggaran boleh dilakukan dengan kaedah begini, pada kedudukan masa t1, t2 disemak samada berada di ruangan pelanggaran atau tidak, seperti rajah dibawah.

c1.gif

Berikut adalah contoh bagaimana penggunaan sphere collision detection

c2.gif

Selain itu collision sphere ni boleh dikecilkan lagi untuk permukaan yang bukan bulat

c3.gif

Kaedah yang dipakai oleh game engin (advance) adalah seperti berikut dan mempunyai algorithma pokok yang kompleks

c4.gif

Walaubagaimanapun, game engine dah sediakan algorithma collision untuk kita so don't worry, unless korang nak buat core programming, memang sakit kepala nak buat mcm nie.

Share this post


Link to post
Share on other sites

Terima kasih, dah paham dah sikit2...

Soalan Selanjutnya.

Adakah objek seperti peluru yang ditembak ke arah 'monster', laser, dan implementasi 'particle system' (letupan, api, air, awan, habuk etc.) adalah juga menggunakan collision detection?

Edited by LanoG

Share this post


Link to post
Share on other sites

MENJAWAB SOALAN

Adakah objek seperti peluru yang ditembak ke arah 'monster', laser, dan implementasi 'particle system' (letupan, api, air, awan, habuk etc.) adalah juga menggunakan collision detection?

Ya, objek yang ditembak (peluru) menggunakan collision detection pada monster yand ditembak. Pengesanan ini boleh dilakukan dengan cara mudah iaitu sphere detection atau susah tree detection. Gambar di bawah menjelaskan bagaimana implementasi tembakan pada monster

cdshoot.jpg

Bagi particle system pulak, normally particle yang dihasilkan di dalam game tidak melibatkan collision detection. Particle itu bebas dari collision detection tetapi mempunyai code yang diset untuk pergerakan particle dari segi graviti. Ini kerana particle yang menembusi objek dikira (hilang).

Mengenai Air dan Awan. Pegerakan yang disetkan adalah pada TEXTURE ANIMATION, bukan collision detection. Dan Air dan Awan tidak terikat pada struktur graviti code. Kerana Texture air contohnya air terjun telahpun dilukis awal-awal, dan pegerakannya hanya bergantung pada animasi yang di set. Jika air itu mempunyai particle (percikan air) penambahan kod particle diletakkan pada permukaan hentaman dan tiada collision detection.

Share this post


Link to post
Share on other sites

TUTORIAL

CODE PELANGGARAN MUDAH (LEVEL TUTORIAL : MUDAH)

Ok ini ada serba sedikit contoh bagaimana pelanggaran kekotak dengan satu titik dijalankan. Walaubagaimanapun jika kita guna game enjin, kod sebegini telah pun direka untuk kita. kita just panggil sahaja, contoh semaklanggar(). Simpel, jadi tutorial kali ini sekadar untuk pemahaman sahaja.

cdbox.jpg

Share this post


Link to post
Share on other sites

OUTSOURCE TUTORIAL

SEMAKAN PELANGGARAN ( LEVEL TUTORIAL: SUSAH )

Artikel dibuat oleh Kasper Fauerby, artikel ini mempunyai pelbagai jenis semakan yang sangat bagus dari segi pelanggaran, vektor dan normal pegerakan.

DOWNLOAD [754kb]: Collision Detection

Ok ada kat sapa-sapa kat sini dah catchup dengan semua tutorial yang aku buat ke?

Share this post


Link to post
Share on other sites

assalamualaikum...

err tak sempat tanya itu ari.. :huh:

1. dalam code post #9:

//Menambahkah model ke dalam game

IAnimatedMesh* mesh = smgr->getMesh("../../media/kotak.md2");

IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

apsal guna model .md2 bukan .3ds?

2. sumer code2 yg dh ditunjukkan tu masukkan dlm irrlicht ker? maksudnya dev c++ blum guna lagi?

3. collision detection tu sama ke dgn 'Hit Boxes' (model halflife guna istilah tu)

Share this post


Link to post
Share on other sites

Walalaikumsalam

MENJAWAB SOALAN

1. Apsal guna model .md2 bukan .3ds?

Semua jenis format yang boleh dipakai untuk mesh dalam irrlicht:

3D Studio meshes (.3ds)

B3D files (.b3d)

Alias Wavefront Maya (.obj)

Cartography shop 4 (.csm)

COLLADA (.xml, .dae)

DeleD (.dmf)

FSRad oct (.oct)

Irrlicht scenes (.irr)

Microsoft DirectX (.x) (binary & text)

Milkshape (.ms3d)

My3DTools 3 (.my3D)

OGRE meshes (.mesh)

Pulsar LMTools (.lmts)

Quake 3 levels (.bsp)

Quake 2 models (.md2)

2. sumer code2 yg dh ditunjukkan tu masukkan dlm irrlicht ker? maksudnya dev c++ blum guna lagi?

Code tu dibuat dalam Dev C++, selepas install irrlicht dan configure Include dan Library irrlicht pada Dev C++.

Contoh nak configure Dev C++ untuk irrlicht : http://irrlicht.sourceforge.net/tut_devcpp.html

3. collision detection tu sama ke dgn 'Hit Boxes' (model halflife guna istilah tu)

Actually bagi half life dia guna teknik box collision = hit boxes, tapi sebenarnya teknik collision ni luas, selain tu kita ada sphere, triangle, plane, dan berbagai-bagai lagi.

Edit : Waalaikumsalam, lupa plak... hehehe.

Edited by zsuperxtreme

Share this post


Link to post
Share on other sites

TUTORIAL LINK

IrrWizard : Game Engine (LEVEL TUTORIAL : Sangat Susah)

LINK : http://irrwizard.sourceforge.net/

Ok setelah kita pelajari bagaimana nak buat grafik dengan IrrLicht, kita pergi kepada yang lebih advace, FPS wizard, so dengan wizard nie korang bleh buat FPS game guna irrlicht. Dari teknik grafik yang kita pelajari sebelum ini kita dapat jadikan impian untuk membuat game menjadi kenyataan dengan IrrWizard nie. Sebelum kita get through kepada IrrWizard, better korang study dulu introduction dan cara nak guna sebelum kita diskus.

irrWizard.jpg

Edited by zsuperxtreme

Share this post


Link to post
Share on other sites

Bagus2... hehehe.

Aku cadangkan en. ZX buat dulu flowchart yang simple, iaitu aliran proses yang digunakan sampai lah ke tahap sekarang. Ini secara tidak langsung akan memudahkan pemahaman konsep secara visual. Contohnya mula2 apa nak buat BUAT OBJEK (pakai Anim8or)----> MASUKKAN OBJECT dalam SCENE (pakai irrlitch) dan seterusnya........

Share this post


Link to post
Share on other sites

Actually yang sebelum nie kita belajar simple je.... lepas nie harder and more harder... so aku takkan proceed lagi selagi member kat sini tak ready for the next next next tutorial yang lebih complex. So any question?

Share this post


Link to post
Share on other sites

assalamualaikum...

waa..nanti jap

camner nk settingkn dev c++ terima enjin irrlicht tuhh? link yg zx bagi tu aku dh try, tpi xbleh pon. aku slh dl file ker?

dlm tutorial tu dia suruh linkkan 3 file nih dlm 'parameters - linker' devc++.

libIrrlicht.a -- the Irrlicht library

libjpeg.a -- the Independant JPEG group library

libz.a -- the zlib compression library

tpi aku jumpa file yg atas tu jer. mana lagi 2?

lagi satu dia asik klua:

confirm - there doesn't seem to be GNU make file in PATH or in devc++ Bin path.....bla bla panjang arr

tulungg..

* ko tulis 'Sangat Susah' kt ats tu mnakutkn aku la. hee

Share this post


Link to post
Share on other sites

Waalaikumsalam

Hehe... Cool down. ok aku ajar simple step

1. download Dev C++ dan Irrlicht 1.2 SDK

2. Install Dev C++ pada drive C:\ (contoh C:\Dev-CPP\)

3. Install Irrlicht pada drive C:\ (contoh C:\irrlicht-1.2\)

4. Open Dev C++, open empty project (File->New->Project...->Blank Project) Save

5. Klik Project->project option (Alt+p)

6. Pergi ke tab "directories", klik tab include, pastu add directory (C:\irrlicht-1.2\include)

7. pastu pergi ke tab "parameters" pastu add "library or object", pastu select file (C:\irrlicht-1.2\lib\Win32-gcc\libIrrlicht.a)

8. Ok.

Siap, pastu ko try la guna example yang ada untuk test. Itu sahaja. RUN -> Well done... hehehe

Erm, mengenai "sangat susah", ko jangan risau, kalau ko follow tutorial nie, tanpa lalai, atau buat tak tahu setiap step, ko pasti berjaya. Lagipun aku taknak tipu, aku mention sangat susah tu kerana tutorial kali ini tak mcm sebelum nie, yang sebelum nie simpel, lepas nie akan lagi detail dan banyak coding, mungkin ini punca kita takde game programmer 3d nie, mungkin sebab dorang tak suka FIZIK....yang penting, study, don't worry, selagi aku ada aku akan bantu.

EDIT: Susah kerana melibatkan AI, GAME, CORE, dan ENGINE, coding yang tak direct tapi pusing sana-pusing sini.

Edited by zsuperxtreme

Share this post


Link to post
Share on other sites

Oo... baru aku tau.. extension *.a tue untuk library dalam dev c++.. aku guna visual c++ jer dan guna library libIrrlitch.lib..

ZsuperXtreme.. Ada perbezaan ker dari segi coding dan output dalam visual c++ dengan dev c++??

Share this post


Link to post
Share on other sites

Definitely "takda langsung" perbezaan. Sama je....

Actually banyak program boleh guna irrlicth, tapi output semua sama sahaja, so tak kesah nak pakai apapun bahasa pengaturcaraan, yang penting kena tau bagaimana irrlicht berfungsi sebagai (Graphic Engine) dan bagaiaman irrWizard berfungsi sebagai (irrlicht Game Engine).

Share this post


Link to post
Share on other sites

Visual C++ dan Dev C++ beza cara install je, lain semua sama.

Better guna Dev C++ sebab free, Visual kena bayar. Lagipun sekarang nie kita tengah tumpu penggunaan open source, so bila korang buat game, takde la kena bayar, tak perlu modal, cuma sebiji pc je. Itu target aku.

Antara bahasa yang boleh digunakan

1. LUA

2. RUBY

3. BCX

4. JAVA

5. PYTHON

6. PUREBASIC

7. C++, Visual C++, C#

Edited by zsuperxtreme

Share this post


Link to post
Share on other sites

Yup! Aku sokong penggunaan Open Source sebagai alatan untuk pembangunan game nie. Lagipun, kalo kita pakai semua adalah percuma. Sedangkan kalo pakai yang komersial punya, mesti ada di kalangan kita tak mampu nak beli (dalam erti kata lain guna yang c*tak r*mpak)... di sini pun kita punya iltizam dan harapan dah terpesong sebab kita nak hapuskan lanun2 daripada muka bumi Malaysia nie. Itu lah harapan kita dan semua pihak terutama programmer2 yang telah memerah keringat menghasilkan program/games yang bermutu. Sekian, harap maklum.

Share this post


Link to post
Share on other sites

assalamualaikum...

hahaha..ropenye aku silap dload lar..dev c++ yg takder compiler punya (mingw ape ntah) dlm 2 MB. pastu aku dload skali lgi yg fullnyer (8 MB) baru boleh..

anyway..timekaseh zx bgi tutorial tuh..

*emm (tarik napas..)

Share this post


Link to post
Share on other sites

Sama,sama.

Oh, bagus-bagus, akhirnya boleh jugak. Aku rasa mana nie aku nampak MalaYneuMaya je yang dah sampai tahap install, yang lain aku nampak kat binarycode, ada sapa-sapa lagi dah instal ke?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...