Selamet Dateng di Web nya BiLLy,, yang Enjoy ya Baca nya !! Hehehehe

27 Maret 2011

Game Engine

Engine bukanlah executable program, artinya engine tidak bisa dijalaankan sebagai program yang berdiri sendiri. Diperlukan sebuah program utama sebagai entry point atau titik awal jalannya program. Pada c++, entry pointnya adalah fungsi main(). Biasanya program utama ini relatif pemdek. Game engine ini adalah program yang “memotori” jalannya suatu program game. Kalau game diilustrasikan sebagai musik yang keluar dari mp3 player, maka engine adalah mp3 player dan program utama adalah data mp3 yang dimasukkan ke dalam mp3 player tersebut.
Dengan adanya engine, waktu, tenaga dan biaya yang dibutuhkan untuk membuat game software menjadi berkurang secara signifikan. Beberapa game dengan jenis dan gameplay yang hampir sama bisa dibuat dengan sedikit usaha bila terlebih dahulu dibuat engine-nya. Setelah engine diselesaikan, programmer hanya perlu menambahkan progam utama, memakai resources (objek 3D, musik, efek suara) yang baru dan, jika benar-benar dibutuhkan , sedikit memodifikasi engine sesuai kebutuhan spesifik dari game yang bersangkutan.
Program game engine seluruhnya berorientasi objek. Lebih bersifat reaktif daripada posedural. Sulit unutk menggambarkan engine secara keseluruhan dalam flowchart, karena alur program bisa diatur sesuai dengan keinginan pemakai engine, yaitu gampe programmer.



Jenis - Jenis Game Engine 

1. Freeware 
• Blender
• Golden T Game Engine (GTGE)
• DXFramework
• Ogre
• Aleph One
• Axiom Engine
• Allegro Library
• Box2D
• Build Engine
• Cube
• Cube 2
• DarkPlaces
• jMonkeyEngine (jME)
• Panda3D
2. Berbayar/ Commercial 

• Alamo
• A.L.I.V.E
• BigWorld
• DXStudio
• Dunia Engine
• Euphoria
• GameStudio
• Jade Engine
• Jedi
• Medusa
• RPG Maker VX
• RPG Maker XP
• RPG Maker 2003
• RPG Maker 95
• Vision Engine


Beberapa contoh game engine :

RealmForge
Merupakan free dan open source game engine untuk Microsoft .Net Framework dan dikhususkan pada visual3D Game Engine, merupakan cross platform game engine untuk .NET 2.0 dan Microsoft XNA.
RealmForge dibangun diatas AXIOM 3D rendering engine. Di tulis dalam bahasa C# keseluruhan. Dibangun untuk pembuatan game berbasis .NET.

Truevision3D
Merupakan game engine 3D yang dibangun dengan menggunakan visual basic 6 dan C++ dengan menggunakan Microsoft Directx API. Mulai versi 6.5, engine ini menggunakan direct 9 dan shader support, serta ditulis ulang menggunakan C++. Sampai perkembangan terbaru, belum ada wacana untuk mengembangkannya untuk mendukung penggunaan directx9 serta Microsoft XNA.

OGRE
OGRE (Object-Oriented Graphics Rendering Engine) merupakan engine yang mendukung 3D Graphic. Merupakan game engine yang fleksibel dalam melakukan 3D Rendering, ditulis dalam bahasa C++ sehingga memudahkan pengembang untuk membangun game yang mendukung 3D Graphics.

sumber : http://en.wikipedia.org/wiki/Game_engine 
http://digilib.petra.ac.id

Jangan Lupa Beli buku nyaa yaaa ;)

Terusin bacanya dong ah..

24 Maret 2011

MD5, SHA, Dan Perbedaannya

        Dalam kriptografi, MD5 (Message-Digest Algorithm 5) ialah fungsi hash kriptografik yang telah digunakan secara luas dengan hash value 128-bit. Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file. MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya MD4. Pada tahun 1996, sebuah kecacatan ditemukan dalam desainny, walau bukan kelemahan fatal, pengguna kriptografi mulai menganjurkan menggunakan algoritma lain, seperti SHA-1 (klaim terbaru menyatakan bahwa SHA-1 juga cacat).

         Pada tahun 1996 Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5 dikarenakan hal ini bukanlah serangan terhadap fungsi hash MD5 sepenuhnya, hal ini menyebabkan para pengguna kriptografi menganjurkan pengganti seperti WHIRLPOOL, SHA-1 atau RIPEMD-160. Ukuran dari hash 128bit cukup kecil untuk terjadinya serangan brute force birthday attack. MD5CRK adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukkan kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute force attack.


             Saat ini dapat diketahui, dengan beberapa jam kerja, bagaimana proses pembangkitan kerusakan MD5. Yaitu dengan membangkitkan dua byte string dengan hash yang sama. Dikarenakan terdapat bilangan yang terbatas pada keluaran MD5, tetapi terdapat bilangan yang tak terbatas sebagai masukannya, hal ini harus dipahami sebelum kerusakan dapat ditimbulkan, tapi hal ini telah diyakini benar bahwa menemukannya adalah hal yang sulit.


           Sebagai hasilnya bahwa hash MD5 dari informasi tertentu tidak dapat lagi mengenalinya secara berbeda. Jika ditunjukkan informasi dari sebuah public key, hash MD5 tidak mengenalinya secata berbeda jika terdapat public key selanjutnya yang mempunyai hash MD5 yang sama.

       Bagaimanapun juga, penyerangan tersebut memerlukan kemampuan untuk memilih kedua pesan kerusakan. Kedua pesan tersebut tidak dengan mudah untuk memberikan serangan preimage, menemukan pesan dengan hash MD5 yang sudah ditentukan, ataupun serangan
preimage kedua, menemukan pesan dengan hash MD5 yang sama sebagai pesan yang diinginkan.

Langkah-Langkah Pembuatan MD

1. Penambahan Bit-bit Pengganjal
  • Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512. 
  • Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512.
  • Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0
2. Penambahan Nilai Panjang Pesan
  • Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula.
  • Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 264. Dengan kata lain, jika panjang pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264.
  • Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit.
  • Inisialisai Penyangga MD
  • MD5 membutuhkan 4 buah penyangga (buffer) yang masing-masing panjangnya 32 bit. Total panjang penyangga adalah 4 ´ 32 = 128 bit. Keempat penyangga ini menampung hasil antara dan hasil akhir.
  • Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:
           A = 01234567
           B = 89ABCDEF
           C = FEDCBA98
           D = 76543210

3. Pengolahan Pesan dalam Blok Berukuran 512 bit
  • Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL – 1). 
  • Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini disebut proses HMD5. Gambaran proses HMD5 diperlihatkan pada Gambar 13.3.
  • Pada Gambar 13.3, Yq menyatakan blok 512-bit ke-q dari pesan yang telah ditambah bit-bit pengganjal dan tambahan 64 bit nilai panjang pesan semula.
  • MDq adalah nilai message digest 128-bit dari proses HMD5 ke-q. Pada awal proses, MDq berisi nilai inisialisasi penyangga MD.
  • Proses HMD5 terdiri dari 4 buah putaran, dan masing-masing putaran melakukan operasi dasar MD5 sebanyak 16 kali dan setiap operasi dasar memakai sebuah elemen T. Jadi setiap putaran memakai 16 elemen Tabel T.
  • Fungsi-fungsi fF, fG, fH, dan fI masing-masing berisi 16 kali operasi dasar terhadap masukan, setiap operasi dasar menggunakan elemen Tabel T.
  • Operasi dasar MD5
  • Karena ada 16 kali operasi dasar, maka setiap kali selesai satu operasi dasar, penyangga-penyangga itu digeser ke kanan secara sirkuler dengan cara pertukaran sebagai berikut:
         temp ¬ d
        d ¬ c
        c ¬ b
        b ¬ a
        a ¬ temp

SHA (Secure Hash Algorithm)

              SHA merupakan salah satu hash function yang cukup banyak digunakan. Keluarga SHA yang paling banyak digunakan adalah SHA-1. SHA-1 memetakan inputan string dengan panjang sembarang menjadi suatu nilai hash dengan panjang tetap yaitu 160 bit. Ukuran internal state pada SHA-1 adalah 160 bit, sedangkan ukuran bloknya adalah 64 bytes.
SHA-1 merupakan hasil rekonstruksi dari MD4 dan memperbaiki kekurangann yang ada di MD4 itu sendiri. SHA-1 merupakan algoritma hash yang banyak diaplikasikan dalam keamanan protokol menggunakan SSL (Secure Sockets Layer), PGP (Pretty Good Privacy), XML Signature, dan beberapa aplikasi lainnya.
Langkah-langkah pada SHA-1 adalah sebagai berikut:

1. Melakukan padding terhadap pesan sehingga panjangnya adalah 448 modulus 512.
  • 64 bit sisanya adalah representasi biner dari panjang pesan.
  • Melakukan inisialisasi5 word buffer (160 bit)A, B, C, D, dan E dengan nilai A=67452301, B=efcdab89, C=98badcfe, D= 10325476, dan E=c3d2e1f0.
  • Memproses pesan dalam blok-blok 16 word (512 bit) dengan ketentuan
  • Ekspansi 16 words menjadi 80 words dengan teknik mixing dan shifting.
  • Menggunakan 4 round dari 20 operasi bit pada blok pesan dan buffer.
  • Menambahkan output dengan input untuk mempeoleh nilai buffer yang baru
  • Output nilai hash adalah nilai terakhir dari buffer.
Jadi perbedaan MD5 dan SHA adalah terletak pada nilai dari masing-masing. Tidak hanya itu, jumlah looping juga berbeda. Serta Algoritma juga berpengaruh pada masing-masing.

Sumber :
http://www.ilmuhacking.com/cryptography/md5-itu-berbahaya/
http://wikipedia.org

Jangan Lupa beli Buku nyaa yaaa ;)


Terusin bacanya dong ah..

05 Maret 2011

Behind the Making of the Game ( Part III )

     Udah baca postingan yang kemaren belom yang Part I dan part II ?? Kalau mank belum dibaca juga yaa, biar pengetahuan tentang game nya ga cuman setangah-setengah. Pada postingan kali ini saya akan membahas tentang game lebih lanjut, diantaranya adalah arti dari teknologi game, teknologi-teknologi yang digunakan dalam pembuatan game, tahap-tahap dalam pembuatan game.Pertama-tama kita akan membahas tentang arti dari teknologi game. Teknologi game adalah perangkat-perangkat yang digunakan dalam pembuatan sebuah game. Teknologi yang digunakan bisa berupa system-sistem yang diguanakan maupun perangkat keras ataupun perangkat lunak yang digunakan untuk menunjang dalam pembuatan game tersebut.

TEKNOLOGI YANG DIGUNAKAN DALAM PEMBUATAN SEBUAH GAME

         Seperti yang saya sudah katakana sebelumnya, teknologi yang digunakan dalam pembuatan game bermacam-macam, salah satunya adalah software alias perangkat lunak. Biasanya para programmer menggunakan bahasa pemrograman Visual Basic, C, Java, Delphi, Phyton dan lain sebagainya.

        Selain itu, saya juga mempelajari game engine “Renpy” yang berbasiskan bahasa Python. Game engine ini mempunyai User Interface yang cukup menarik, sehingga para game maker tidak bosan dengan tampilan yang full koding saja. Pada saat kita menjalankan game yang sudah kita buat, kita juga langsung dapat melihat koding dari tampilan game tersebut, itulah salah satu kelebihan dari Renpy itu sendiri. Disamping itu, jika kita ingin menggunakan OpenGL (Open Source) untuk membuat grafik 3D, saya pun sudah pernah menggunakan OpenGL ini untuk membuat gambar grafik sederhana berupa sebuah kubus 3D dengan bantuan IDE Pelles C.
Jika dari segi software yang lain, ada yang berupa Open Source seperti Blender, namun ada juga yang mempunyai license tersendiri seperti 3Dmax. Melakukan proses rendering memakan waktu yang cukup lama, terlebih lagi jika komputer yang kita gunakan sangat standar atau minim untuk spesifikasi multimedia. Ini juga bisa dilihat dari segi perangkat keras yang digunakan, yaitu VGA (Video Graphic Card), RAM (Random Acces Memory), dan juga Processor yang digunakan. Komputer yang digunakan untuk membuat sebuah game yang bagus harus memiliki spesifikasi multimedia yang sangat tinggi, jadi sangat disarankan untuk tidak menggunakan komputer dengan spesifikasi standar.

TAHAP-TAHAP DALAM PEMBUATAN SEBUAH GAME

1. Tentukan Genre Game
Tahap yang paling awal dalam pembuatan sebuah game adalah menentukan genre atau tema dari game tersebut. Banyak hal yang dapat menentukan tema apa yang kita gunakan untuk membuat game tersebut, mulai dari game-game yang sudah pernah kita mainkan ataupun dari pengalaman-pengalaman atau imajinasi kita sendiri. Untuk genre game itu sendiri sudah dibahas pada tulisan sebelumnya.

 2. Tentukan Tool yang ingin digunakan
Ada 2 langkah yang dapat kita gunakan dalam memilih tool untuk membuat sebuah game, antara lain bahasa pemrograman ataupun software yang sudah disiapkan untuk membuat game. Jika Anda adalah seorang programmer, Anda bisa menggunakan bahasa pemrogrman yang Anda kuasai. Bagaimana dengan orang-orang yang masih awam dengan bahasa pemrograman? Kita dapat menggunakan software-software tersebut, tools tersebut sangat mudah digunakan oleh siapa saja. Jadi, semua orang dapat membuat kreasi gamenya sendiri tanpa harus menguasai seluk-beluk dari bahasa pemrograman.

 3. Tentukan gameplay game
Gameplay yang dimaksudkan disini adalah alur atau system dari game itu sendiri. Biasanya tampilan-tampilan yng menarik dan dekat dengan kehiduapn sehari-hari akan banyak diminati oleh para pecinta gamers, terlebih lagi jika game tersebut hanya memerlukan spesifikasi yang standar untuk memainkannya.

4. Tentukan grafis yang ingin digunakan
Secara sederhana grafis dapat dibagi menjadi 3 macam, antara lain :

Kartun
Semi-real
Real
Disarankan untuk memilih game dengan grafis yang sesuai dengan tools yang Anda miliki, agar nantinya Anda sendiri akan merasa nyaman dengan tools tersebut.

 5. Tentukan suara yang ingin digunakan
Pada bagian inilah sebaiknya Anda bekerjasama dengan pihak yang lebih ahli jika Anda tidak mengetahui tentang dasar-dasar penentuan suara dalam sebuah game. Karena percaya atau tidak, penentuan dan penempatan suara dalam sebuah game mempunyai pengaruh yang cukup besar dalam meningkatkan ketertarikan para gamers terhadap game yang Anda buat.

6. Lakukan perencanaan waktu
Sepertinya hal ini adalah hal yang sepele, namun jika Anda menyepelekan hal ini dan tidak bisa memanage waktu. Maka Anda tidak akan focus pada game yang Anda buat dan nantinya game yang Anda buat akan kurang atau bahkan sama sekali tidak diminati oleh para gamers.

7. Proses pembuatan
Sebelum melakukan proses pembuatan sebuah game, adakalanya Anda benar-benar sudah mempersiapkan tool-tool yang nantinya akan Anda gunakan dalam pembuatan sebuah game. Atau jika Anda tidak mampu untuk menyediakan semuanya, Anda dapat meminta bantuan dari orang-orang sekitar Anda.
 

8. Lakukan publishing
Jika Anda sudah merasa game yang Anda buat sudah cukup berkompeten, tidak ada salahnya Anda mulai mempublikasikan game yang Anda bua tersebut. Proses pempublikasian dapat dilakukan dengan cara melalui media-media elektronik, cetak dan sebagainya, ataupun Anda dapat melakukannya melalui teman-teman Anda secara mulut ke mulut.


Jangan Lupa beli buku nya yaaa ;)
Terusin bacanya dong ah..

01 Maret 2011

Behind the Making of the Game ( Part II )

    Pada artikel sebelumnya, saya menjelaskan orang-orang dibalik pembuatan game. Sedangkan pada artikel sekarang, kita akan mempelajari contoh-contoh game sederhana yang sudah ada. Untuk dapat menciptakan sebuah game yang canggih, rumit, menantang dan menarik, diperlukan pembelajaran melalui pengalaman. Mulai dari membuat game yang sederhana hingga rumit. Saran saya, apabila kita tertarik membuat game sendiri, sebaiknya kita belajar dari game-game yang sudah ada sebelumnya, kita bisa belajar bagaimana sih tahapan-tahapan para developer game dalam proses pembuatan nya. 

            Sekarang saya akan meberikan contoh game yang dapat di buat dengan mudah dan sederhana sebagai permulaan untuk belajar adalah Tetris. Kenapa -.-?? Karena Tetris berisikan semua elemen yang dapat ditemukan dalam setiap game. Karena mudah dan sederhananya, Tetris yang kita buat dapat sama bagusnya dengan versi komersil. Tetris memiliki semua komponen individual. Ia juga mempunyai game loop (proses pengulangan hingga game tamat). Game loop ini akan membaca input, memproses input, memperbarui elemen game, dan memastikan kondisi kalah atau menang.


           Mempelajari proses dan mengimplementasikan tahapan pada pembuatan Tetris sangatlah penting. Sebab di setiap game yang nantinya akan kita buat, tahapan tersebut selalu menjadi dasarnya. Dan, itu akan memberikan pengertian mendalam tentang tingkat kesukaran dan berapa lama waktu yang dibutuhkan untuk membuat game. Sebaliknya, tanpa melakukannya, paling tidak sekali, kita tidak akan memahami setiap elemennya. Namun setelah game “mirip” Tetris yang kita buat itu selesai, sebaiknya jangan dinamakan “Tetris”, karena Tetris adalah merek dagang yang telah dimiliki oleh Alexey Pajitnov.


            Sekarang, setelah menyelesaikan Tetris, kita bisa belajar membuat game Pac-Man. Membuat game ini merupakan langkah evolusioner karena kita akan mempelajari elemen musuh yang punya kemampuan Artificial Intelligent (AI). Kita mungkin tidak menyadari jika dalam permainan Pac-Man yang asli, keempat musuh, yang berupa hantu, masing-masingnya memiliki tujuan berbeda untuk mengalahkan kita bersama secara tim. Hantu pertama berperan sebagai penyerang yang akan mencari jalan tersingkat mendekati kita, sehingga memaksa kita menghindarinya. Hantu kedua bertugas mencegat di jalur terdekat dari jalan menghindar kita. Hantu ketiga juga punya tugas mencegat di tengah labirin dan berusaha mencegah kita menggunakan terowongan di sisinya. Sementara hantu keempat hanya berkeliling tanpa arah di sekitar tempat berakhirnya permainan, mencegah kita menang. AI yang rinci seperti ini memang terlalu canggih bagi game developer pemula. Dan ini akan memberikan tantangan dalam membuat game pertama dengan musuh AI. Pac-Man juga meningkatkan kompleksitas peta, dan menambah fleksibilitas yang baik untuk menggunakan suara di mana suara juga menjadi elemen penting dalam kesuksesan Pac-Man.

Selesai mempelajari dan mendalami artikel di atas, bisa dibilang kita telah memahami dasar-dasar membuat game. Selanjutnya, terserah anda. Kalau emank bersungguh-sungguh siapa tau anda bisa menjadi game developer profesional ;)

Jangan Lupa beli buku nya yaaa ;)
Terusin bacanya dong ah..