Sabtu, 05 Juni 2010

Contoh Aplikasi Ogre 3D

Berikut adalah source code untuk pembuatan aplikasi : 

#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {
public:
            BelajarOgre(){
            }
            ~BelajarOgre(){
            }
protected:
            void createScene(void){
Entity *ent1;
            Entity *ent2;
        mSceneMgr->setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE); 
      mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");
                        mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
     
SceneNode* headNode = mSceneMgr->getRootSceneNode()-> createChildSceneNode();
                        ent1 = mSceneMgr->createEntity("Ufo","ufo.mesh");
                        ent2 = mSceneMgr->createEntity("Ufo2","ufo.mesh");
            ent1->setCastShadows(true);
            ent2->setCastShadows(true);
             Plane plane(Vector3::UNIT_Y, 0);   
             MeshManager::getSingleton().createPlane("ground",
           ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
           1500,1500,20,20,true,1,3,5,Vector3::UNIT_Z);
          Entity *ent12 = mSceneMgr->createEntity("GroundEntity", "ground");       
      mSceneMgr->getRootSceneNode()->createChildSceneNode()-> attachObject(ent12);
               ent12->setMaterialName("Examples/Rockwall");
       ent12->setCastShadows(false);
Light *light;
               light = mSceneMgr->createLight("Light1");
       light->setType(Light::LT_POINT);
       light->setPosition(Vector3(0, 450, 450));
               light->setDiffuseColour(1.0, 0.0, 0.0);
       light->setSpecularColour(1.0, 0.0, 0.0);
                light = mSceneMgr->createLight("Light2");
       light->setType(Light::LT_SPOTLIGHT);
       light->setDiffuseColour(ColourValue(.25, .25, 0));
       light->setSpecularColour(ColourValue(.25, .25, 0));
        light->setDirection(Vector3( 0, -1, 1 ));             
SceneNode *node1 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode",Vector3(0,50,300));
SceneNode *node2 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode2", Vector3(200,250,200))
            node1->attachObject(ent1);
            node2->attachObject(ent2);
            mCamera->setPosition(200,250,730);
                        mCamera->lookAt(-100,75,0);
            }
};

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main(int argc, char **argv)
#endif
{
            //bikin objek aplikasi
            BelajarOgre app;
            try {
                        app.go();
            } catch (Exception e) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
                        MessageBoxA(NULL,e.what(),"Terjadi Error!",MB_OK | MB_ICONERROR |MB_TASKMODAL);
#else
                        fprintf(stderr,"Terjadi Error = %s\n",e.what());
#endif
            }
            return 0;
}
 

Penjelasan Source Code

Aplikasi yang dibuat  merupakan aplikasi yang menampilkan objek ufo.mesh kedalam suatu layout background bergambar planet. Pada ufo itu terjadi pencahayaan hingga memiliki bayangan. Objek ufo tersebut ada dua, dimana peletakan koordinat ufo tersebut berbeda sehingga berbeda posisi. Posisi cahaya yang datang terletak diatas kedua ufo tersebut. Sehingga menimbulkan bayangan. Dan karena letak ufo itu berbeda jarak dengan cahaya yang datang, maka bayangan yang dihasilkanpun berbeda.

Berikut penjelasan source code tersebut diatas :



#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {

public:

            BelajarOgre(){

            }

            ~BelajarOgre(){

            }





Pertama kita mendeklarasikan header file. Header file tersebut adalah #include "ExampleApplication.h". Selanjutnya dideklarasikan nama class yang dibuat. Yaitu Belajar Ogre. Pada class tersebut terdapat method dari class BelajarOgre tersebut.

Untuk memulai penggambaran layar maka kita masuk ke method createScene. Pada createScene ini pertama dilakukan penginisialisasian variabel yang digunakan :



protected:

            void createScene(void){

Entity *ent1;

            Entity *ent2;



Dilanjutkan dengan kkode untuk memberi bayangan. Tipe bayangan yang digunakan adalah SHADOWTYPE_TEXTURE_MODULATIVE. Kemudian dilakukan pengesetan shadow tersebut ke mSceneMgr. Pada bayangan ini diberi nilai AmbientLight dengan nilai warna untuk RGB (0.2, 0.2, 0.2).



mSceneMgr-> setShadowTechnique(SHADOWTYPE_TEXTURE_MODULATIVE); 

mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");

mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));

      

Selanjutnya dalah pendeklarasian untuk menambah objek. Untuk ent1 adalah untuk ufo.mesh yang pertama dan ent2 adalah untuk objek ufo.mesh yang kedua. Dan dilanjutkan dengan meng-set shadow pada kedua obkjek tersebut.



SceneNode* headNode = mSceneMgr->getRootSceneNode()-> createChildSceneNode();

                        ent1 = mSceneMgr->createEntity("Ufo","ufo.mesh");

                        ent2 = mSceneMgr->createEntity("Ufo2","ufo.mesh");

            ent1->setCastShadows(true);

            ent2->setCastShadows(true);

           



Selanjutnya adalah untuk memberi suatu latar bidang bagi objek. Latar tersebut dengan lebar 1500 dan panjang 1500. Dilanjutkan dengan membubuhkan latar tersebut ke layar.



             Plane plane(Vector3::UNIT_Y, 0);               

             MeshManager::getSingleton().createPlane("ground",

           ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,

           1500,1500,20,20,true,1,3,5,Vector3::UNIT_Z);

          Entity *ent12 = mSceneMgr->createEntity("GroundEntity", "ground");       

      mSceneMgr->getRootSceneNode()->createChildSceneNode()-> attachObject(ent12);

               ent12->setMaterialName("Examples/Rockwall");

       ent12->setCastShadows(false);



Dilanjutkan dengan pencahayaan. Pada pencahayaan ini diletakan pada posisi vektor 450 untuk Y dan 450 untuk Z. Dengan tipe cahaya yang digunakan adalah LT_POINT dan LT_SPOTLIGHT. Jadi pencahayaan dari dua sumber cahaya dengan tipe yang berbeda.





Light *light;

               light = mSceneMgr->createLight("Light1");

       light->setType(Light::LT_POINT);

       light->setPosition(Vector3(0, 450, 450));

               light->setDiffuseColour(1.0, 0.0, 0.0);

       light->setSpecularColour(1.0, 0.0, 0.0);

                light = mSceneMgr->createLight("Light2");

       light->setType(Light::LT_SPOTLIGHT);

       light->setDiffuseColour(ColourValue(.25, .25, 0));

       light->setSpecularColour(ColourValue(.25, .25, 0));

        light->setDirection(Vector3( 0, -1, 1 ));

                       

Selanjutnya untuk penempatan objek digunakan variabel node1 dan node2. Yaitu diletakan berdasarkan nilai vektor.

SceneNode *node1 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode",Vector3(0,50,300));

SceneNode *node2 = mSceneMgr->getRootSceneNode()-> createChildSceneNode("UfoNode2", Vector3(200,250,200));

            node1->attachObject(ent1);

            node2->attachObject(ent2);





Pada aplikasi ini juga diletakan kamera. Kamera tersebut didefinisikan sebagai variable mCamera.





mCamera->setPosition(200,250,730);

                        mCamera->lookAt(-100,75,0);

            }

};





Seleksi kondisi berikut adalah merpakan seleksi untuk dapat atau tidaknya aplikasi tersebut di jalankan. Jika terjadi kesalahan maka akan tampil suatu message box dengan pesan kesalahan.





#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

#define WIN32_LEAN_AND_MEAN

#include "windows.h"

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)

#else

int main(int argc, char **argv)

#endif{

            BelajarOgre app;

            try {

                        app.go();

            } catch (Exception e) {

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

                        MessageBoxA(NULL,e.what(),"Terjadi Error!",MB_OK | MB_ICONERROR |MB_TASKMODAL);

#else

                        fprintf(stderr,"Terjadi Error = %s\n",e.what());

#endif

            }

            return 0;

}

Setelah selesai lakukan proses Build dengan memilih menubar Build > Buid Solution. Jika sukses kemudian Run. Maka akan tampil windows sebagai berikut :



 Tekan tombol OK maka akan tampil aplikasi yang telah kita buat tersebut.
 

Bada Operating System

Tak mau kalah dalam meramaikan dunia aplikasi mobile, Samsung akhir tahun 2009 lalu telah meluncurkan sistem operasi BADA untuk ponsel cerdasnya. Bada yang berarti lautan dalam bahasa korea ini diluncurkan sebagai open platform dan tentunya akan menjadi pesaing bagi open sistem operasi mobile lainnya seperti Symbian, Android, dan LiMo.

Baru baru ini, Samsung bahkan telah merilis BADA SDK 2 yang tentunya menjadi kabar yang menggembirakan bagi para pengembang. Bada SDK 2 tersebut telah dilengkapi dengan IDE (Integrated Development Environment), Simulator, UI builder, serta sample aplikasi beserta tutorialnya. Framework SDK terbaru ini juga telah mendukung TouchWiz terbaru, Adobe Flash, sensor gerak, getaranhingga deteksi wajah.

Ponsel cerdas pertama sistem operasi Bada, Samsung Wave S8500 dikabarkan akan hadir kepasaran pada akhir mei 2010 dimana dikabarkan telah mampu merekan video 720p.

Kamis, 20 Mei 2010

The Art of Art Assets - Building a Simple Bridge : Bagian 1a


Tutorial ini merupakan pengenalan paling dasar pembuatan  seni game. Objek arsitektural yang dipilih dipercaya akan membantu pengembang game pemula untuk mengetahui typr coinstraint yang terdapat dalam pemodelan game. Akan dibentuk suatu jembatan dengan menggunakan struktur perulangan. Pemodelan dalam tutorial banyak menampilkan teknik pemodelan meggunakan spline sederhana.  Menggunakan aplikasi modeling 3D Studio Max yang telah menjadi standar dalam membentuk aset dalam seni game. Tutorial ini menggunakan banyak tools modeling dan menggunakan polygon counter yang tersedia pada 3D Studio Max. 

Senin, 12 April 2010

Pengantar Teknologi Game



Apa sih game itu??? Menurut bahasa Indonesia game berarti permainan. Dalam  membentuk suatu permainan kita harus mengetahui tentang teoti permainan itu sendiri. Teori permainan adalah suatu cara belajar yang digunakan dalam menganalisa interaksi antara sejumlah pemain maupun perorangan yang menunjukkan strategi-strategi yang rasional.

Teori permainan pertama kali ditemukan oleh sekelompok ahli Matematika pada tahun 1944. Teori itu dikemukakan oleh John von Neumann and Oskar Morgenstern yang berisi:
“Permainan terdiri atas sekumpulan peraturan yang membangun situasi bersaing dari dua sampai beberapa orang atau kelompok dengan memilih strategi yang dibangun untuk memaksimalkan kemenangan sendiri atau pun untuk meminimalkan kemenangan lawan. Peraturan-peraturan menentukan kemungkinan tindakan untuk setiap pemain, sejumlah keterangan diterima setiap pemain sebagai kemajuan bermain, dan sejumlah kemenangan atau kekalahan dalam berbagai situasi.” 
( J. Von Neumann and O. Morgenstern, Theory of Games and Economic Behavior (3d ed. 1953)).

Rabu, 24 Februari 2010

Wall-e (Interaksi Manusia dengan Komputer)

Salah satu film animasi yang diproduksi oleh Pixar Animation Studios ,WALL-E, film tersebut secara garis besar menceritakan tentang kehidupan manusia dan robot yang terjadi pada tahun 2815. Bumi telah amat sangat tercemar, terdapat tumpukan sampah elektronik yang memenuhi bumi. Dan untuk merapihkan dan memadatkan sampah-sampah tersebut manusia menciptakan robot yang bernama Wall-e (Waste Allocation Load Lifter-Earth-Class). Tetapi manusia sendiri telah meninggalkan bumi dan tinggal pada suatu pesawat yang memiliki teknologi yang sangat canggih di luar angkasa.