Jumat, 13 Juni 2014

Spring Game Engine

Pengertian Game Engine 


   Engine bukanlah executable program, artinya engine tidak bisa dijalankan 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 relative pendek. Jadi game engine adalah program yang memotori jalannya suatu program game.
            Ada banyak mesin permainan yang dirancang untuk bekerja pada konsol permainan video dan siste operasi desktop seperti Microsoft Windows, Linux, dan Mac OS X. Fungsi inti biasanya disediakan oleh mesin permainan mencakup mesin render untuk 2D atau 3D.
Fungsi-fungsi didalam game engine antara lain :
  •  Rendering engine
  •  Physical engine
  • Sound script
  • Animation
  • Artificial intelegent
  • Network
  • Streaming
  •  Memory management
  •  Scene graph

Sejarah Game Engine 


     Sebelum (Game Engine) mesin permainan, permainan yang biasanya ditulis sebagai entitas tunggal: game untuk Atari 2600, misalnya, harus dirancang dari bawah ke atas untuk memanfaatkan optimal hardware layar tampilan ini rutin-core hari ini disebut kernel oleh retro pengembang. 
     Istilah “Game Engine (Mesin Permainan)”  muncul pada pertengahan 1990-an, terutama dalam kaitannya dengan game 3D seperti penembak orang pertama (FPS). (Lihat juga:. mesin first-person shooter) tersebut adalah popularitas Id Doom Software dan game Quake, daripada bekerja dari awal, pengembang lain berlisensi bagian inti dari perangkat lunak dan desain grafis mereka sendiri, karakter, senjata dan tingkat -The “permainan isi ” atau “aset permainan.” Pemisahan aturan permainan spesifik dan data dari konsep-konsep dasar seperti deteksi tabrakan dan entitas permainan berarti bahwa tim bisa tumbuh dan mengkhususkan.

Tujuan Penggunaan Game Engine 

   Digunakan untuk menyediakan fasilitas yang memudahkan pengembangan, seperti grafik, suara, fisika dan fungsi AI. Mesin permainan biasanya menyediakan abstraksi platform yang memungkinkan permainan yang sama untuk dijalankan pada berbagai platform termasuk game konsol dan komputer probadi dengan sedikit perubahan yang dibuat ke kode sumber permainan. Seringkali mesin permainan dirancang dengan arsitektur berbasis komponen yang memungkinkan sistem tertentu dalam mesin yang akan diganti atau diperpanjang dengan lebih khusus komponen middleware game seperti Havok untuk fisika, Miles Sound System untuk suara, atau Bink untuk Video.
            Beberapa mesin permainan hanya menyediakan 3D real-time rendering kemampuan bukan berbagai fungsi yang dibutuhkan oleh game. Mesin ini mengandalkan pengembang game untuk melaksanakan selurug fungsi atau merakit dari komponen middleware permainan lainnya. Jenis umumnya disebut mesin grafis, mesin render atau mesin 3D. Beberapa contoh mesin grafis adalah : Crystal Space, Genesis3D, Irrlicht, JMonkey Engine, OGRE, RealmForge, Truevision3D, dan Visi Engine. Modern permainan atau mesin grafis umumnya memberikan grafik adegan yang merupakan representasi berorientasi objek dari dunia permainan 3D yang sering menyederhanakan desain game dan dapat digunakan untuk rendering yang lebih efisien dari dunia maya yang luas. 

Tipe Game Engine 
  • Roll your own game engine

Banyak perusahaan game kecil biasanya menggunakan engine sendiri. Mereka menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat game engine sendiri. Di sisi lain terkadang menggunakan library komersil atau open source. Biasanya game engine tipe ini lebih disukai karen selain kemungkinan besar diberikan secara gratis, juga memperbolehkan mereka (para developer) lebih fleksibel dalam mengintegrasikan komponen yang diinginkan untuk dibentuk sebagai game engine mereka sendiri. Kelemahannya banyak engine yang dibuat dengan cara semacam ini justru menyerang balik developernya.
  • Mostly ready game engine
Engine ini biasanya sudah menyediakan semuanya begitu diberikan pada programmer. Termasuk contoh GUI, physics, libraries model, texture dll. Banyak dari mereka yang sudah benar-benar mengerti, sehingga dapat langsung digunakan untuk scripting. Game engine semacam ini memiliki beberapa  batasan terutama jika dibandingkan dengan game engine sebelumnya. Hal ini ditujukan agar tidak terjadi banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine dirilis dan masih memungkinkan geme engine tersebut untuk mengoptimalkan kinerja game. Contoh tipe game engine seperti ini adalah Unreal Engine, Source Engine, id Tech Engine dan sebagainya yang sudah sangat optimal dibandingkan jika harus membuat dari awal.
  • Point and click engines
Engine ini merupakan engine yang sangar dibatasi, tetapi dibuat dengan sangat user friendly. Setiap orang dapat mulai membuat game sendiri menggunakan engine seperti GameMaker, Torque Game Builder dan Unity3D dengan sedikit memanfaatkan coding. Kekurangannya terletak pada terbatasnya jenis interaksi yang bisa dilakukan dan biasanya hal ini mencakup semuanya, mulai dari grafis hingga tata suara. Tetapi bukan berarti game engine jenis ini tidak berguna. Bagi developer cerdas dan memiliki kreativitas tinggi, game engine seperti ini bisa dirubah menjadi game menyenangkan seperti Flow. Game engine ini memang ditujukan bagi developer yang ingin menyingkat waktu pemrograman dan merilis game secepatnya. 

Elemen Game Engine 

  • Tools / Data
Dalam pengembangan game dibutuhkan data yang tidak semudah menuliskan text files. Dalam pengembangan game dibutuhkan beberapa tools seperti 3D model editor, level editor dan graphics program.
  •  System
Merupakan bagian dari game engine yang berfungsi melakukan komunikasi dengan hardware yang berada didalam mesin. Jika game engine sudah dibuat dengan baik maka system ini adalah bagian yang membutuhkan perubahan cukup banyak apabila dilakukan implementasi pada platform yang berbeda. Didalam system sendiri terdapat beberapa sub system yaitu graphics, input, sound, timer, configuration. System sendiri bertanggung jawab untuk melakukan inisialisasi, update dan mematikan sub system yang terdapat didalamnya.
  • Console
Dengan menambahkan console dapat dilakukan perubahan setting game dan setting game engine didalam geme tanpa perlu melakukan restart pada game tersebut. Console sendiri lebih sering digunakan dalam proses debugging. Apabila game engine tersebut mengalami error, maka tinggal dilakukan output error message tersebut kedalam console tanpa harus melakukan restart. Console dapat dihidupkan dan dimatikan sesuai dengan keinginan.
  • Support
Merupakan bagian yang paling sering digunakan oleh system didalam game engine. Support sendiri berisi rumus matematika yang biasa digunakan vector, matriks, memory manager, file loader. Merupakan dasar dari game engine dan hamper digunakan semua project game engine.
  • Renderer / Engine Core
Pada game engine, engine core / renderer terlihat dari beberapa sub yaitu Visibility, Collision, Detection dan Response, Camera, Static Geometry, Dynamic Geometry, Particle System, Billboarding, Meshes, Skybox, Lighting, Fogging, Vertex Shading, dan Output.
  •  Game Interface
Merupakan layer diantara game engine dan game itu sendiri. Berfungsi sebagai control yang bertujuan untuk memberikan interface apabila didalam game engine tersebut fungsi yang bersifat dinamis sehingga memudahkan untuk mengembangkan game tersebut.
  • The Game
Merupakan inti dari penggunaan game engine sendiri, sehingga bebas untuk dikembangkan. 

Apa Itu Spring ?

Adalah mesin permainan untuk strategi real-time (RTS) video game awalnya diciptakan oleh Stefan Johansson dan Robin Westberg, anggota klan permainan Swedia Yankspankers. Awalnya ditujukan untuk membawa pengalaman gameplay dari total Annihilation menjadi tiga dimensi, mesin telah berkembang untuk mendukung sejumlah besar fitur yang lebih modern dan lebih fleksibel, termasuk built-in tingkat tinggi diperpanjang melalui Lua scripting antarmuka. Mesin inti permainan yang bebas dan perangkat lunak open source, tunduk pada persyaratan berlisensi di bawah GNU General Public License versi 2.
Sejak tahun 2005 Spring mesin sedang dikembangkan oleh The Spring Community. Proyek ini telah melampaui tujuan awal untuk memiliki permainan menjalankan mods dan pihak ketiga unit dari total Annihilation, dan telah berkembang menjadi mesin RTS yang lebih umum. Sebagian besar game yang berjalan pada mesin (per Desember 2010) difokuskan pada multiplayer gameplay. Ada juga saat ini sejumlah misi pemain tunggal, dibangun di atas kerangka kerja memanfaatkan mesin Lua kemampuan scripting. Ada juga sejumlah besar pertempuran AI, memungkinkan untuk bermain offline atau pemain tambahan dalam sebuah game online.

Arsitektur Perangkat Lunak

Kebanyakan game Musim Semi Mesin berbasis dirancang untuk dimainkan secara online, dalam pertandingan multiplayer. The Spring Mesin menggunakan simulasi permainan deterministik yang dijalankan secara bersamaan pada semua klien game. Hanya perintah pengguna akan dikirim ke pemain lain, mencegah kecurangan aktif. Multiplayer didukung pada kedua Linux dan Window. Lobi pre-game menggunakan protokol yang dirancang khusus mirip dengan Internet Relay Chat untuk memfasilitasi chatting, pemutar pertandingan-keputusan, dan penyesuaian opsi pertempuran. Sejumlah semi lobi klien ada.
Lobi-lobi untuk permainan memungkinkan pengaturan permainan pemain tunggal juga. Hal ini dapat dilakukan baik dengan menggunakan modus pemain spesial tunggal, atau menggunakan modus multiplayer dengan password dan menambahkan bot untuk permainan. Alih-alih menggunakan bot, beberapa permainan juga mendukung mode permainan khusus yang memungkinkan satu pemain gameplay. Paling populer di daerah ini adalah "ayam" mode Zero-K dan Annihilation Seimbang, di mana pemain harus bertahan melawan gelombang monster. Sejak versi 0.79, Spring juga memiliki misi. Sebuah editor misi dengan fungsi-fungsi lanjutan sementara intuitif dibundel dengan permainan. 
Skirmish AI (atau bot) yang diperlukan untuk mendapatkan normal pemain tunggal permainan berjalan. Mereka mengambil alih peran mengendalikan tim dan karena itu dapat dilihat sebagai mesin setara dengan pemain manusia tetapi tentu saja kurang licik. Mesin mendukung plugin AI Skirmish yang akan ditulis dalam berbagai bahasa pemrograman.Saat ini Lua, C, C++, Phyton dan JVM bahasa seperti Java dan Groovy. Hal ini juga memungkinkan untuk mengembangkan plugin untuk mendukung lebih banyak bahasa. 
Fitur render musim semi termasuk medan mampudeformasi, proyektil 3D dan beberapa penyaji air. File-file unit jumlah Annihilation yang kompatibel, yang memungkinkan unit pihak ketiga yang akan diimpor. Bahasa scripting memungkinkan untuk gameplay disesuaikan dan antarmuka pengguna modifikasi. Tim Pemain juga dapat menggambar dan menulis di peta permainan untuk mengkoordinasikan langkah taktis dengan pemain lain. Pihak ketiga AI memungkinkan untuk berbagi tingkat kesulitan.

Senin, 21 April 2014

interpolasi

Interpolasi
Pada analisis regresi, kurve atau fungsi yang dibuat digunakan untuk mempresentasikan suatu rangkaian titik data dalam koordinay x-y. Kurve atau garis lurus yang terbentuk tidak melalui semua titik data akan tetapi hanya kecendrungan (trend) saja dari sebaran data, sedang pada interpolasi dicari suatu nilai yang berada diantara beberapa titik data yang telah diketahui nilainya. Untuk dapat memperkirakan nilai tersebut, pertama kali dibuat suatu fungsi atau persamaan yang melalui titik-titik data, setelah persamaan garis atau kurve terbentuk, kemudian dihitung nilai fungsi yang berada diantara titik-titik data.
            Interpolasi berguna untuk menaksir harga-harga tengah antara titik data yang sudah tepat. Interpolasi mempunyai orde atau derajat.
Macam-macam interpolasi :
1. Interpolasi Beda Terbagi Newton
·        
Interpolasi Linier : merupakan interpolasi yang diperoleh dengan cara menghubungkan
                            dua titik yang mengapit daerah yang akan dicari interpolasinya.
Rumus umum  

Langkah – langkah penyelesaian :
a. Cari nilai fungsi untuk setiap interval Δx (menghitung nilai f(x) pada interval antara
    dua titik sedemikian sehingga nilai f(x) pada kedua titik tersebut berlawanan tanda).


b. Kedua nilai fungsi tersebut ditarik garis lurus hingga terbentuk suatu segitiga, dengan
    menggunakan sifat segitiga sebangun didapat persamaan berikut :





c. Gunakan lagi untuk interpolasi linier dengan nilai f(xi) atau f(xi + 1) sedemikian
    sehingga kedua fungsi mempunyai tanda berbeda.

d. Langkah diatas diulang sampai nilai fungsi f (x*) yang didapat mendekati nol.
Flowchart interpolasi



Prosentasi kesalahan pola interpolasi linier :



Algoritma Beda Terbagi Newton
Input    : (x1, f(x1)), (x2, f(x2)), …., (xn, f(xn)), (xn + 1, f(xn + 1)) ,x
Output : a1, a2, a3, …, an, an+1,polinom
Proses :
1. For k = 1 TO (n+1)
    D(1, k) = f(xk)
2. a1 = D(1,1)
3. FOR j = 2 TO (n+1)
    (a) FOR k = 1 TO ((n+1) – j+1)
                        D(j,k) = (D(j – 1, k+1) – D(j – 1,k))/(xk+j-1 – xk)
    (b) aj = D(j, 1)
4. Selisih(1) = x –x(1)
5. Polinom = a1
    Polinom = polinom + (a(i) * selisih(i-1))
    Selisih(i) = selisih(i-1) * (x-x(i))
6. STOP

2. Interpolasi Lagrange


Joseph Louis Langrange (Prancis) menulis persamaan garis lurus dalam bentuk polynomial langrange. Polinomial langrange dapat digunakan untuk menginterpolasi tabel dengan n nilai meskipun intervalnya titik-titik data tidak sama Algoritma Interpolasi Langrange
Input    : (x1, f(x1)), (x2, f(x2)), …., (xn, f(xn)), x
Output : Polinom Pn-1 (x)
Proses :
1. Pn-1(x) = 0
2. FOR k = 1 TO n
    (a) Lk (X) = 1
    (b) FOR j = 1 TO n
            If j ≠ k then Lk(x) = Lk(x) * (x – xj) / (xk – xj)
     (c) Pn-1(x) = Pn-1(x) + f(xk) * Lk(x)
3. STOP

3. Interpolasi Spline
·         Tujuan interpolasi Spline  adalah untuk penghalusan.
·         Interpolasi spline linear, kuadratik, kubik.
Metode Spline adalah metode interpolasi yang biasa digunakan untuk mendapatkan nilai melalui kurva minimum antara nilai-nilai input. Metode ini baik digunakan dalam membuat permukaan seperti ketinggian permukaan bumi, ketinggian mukai air tanah ayaupun konsentrasi polusi udara. Kurang bagus untuk situasi dimana terdapat perbedaan nilai yang signifikan pada jarak yang sangat dekat. Jika dipilih metoda Spline maka ada pilihan tipe Regilarized dan Tension. Regularized membuat permukaan halus sedangkan Tension mempertegas bentuk permukaan sesuai dengan fenomena model.
Spline merupakan suatu kurva yang dibangun dari potongan-potongan polynomial (picewise polynomial) dengan titik-titik belok disebut knot (spline polynomial, 2006). Diberikan n+1 knot xi dengan
X0 < X1 < … < Xn-1 < Xn
Dengan n+1 nilai-nilai knot yi dicoba untuk menemukan suatu fungsi spline derajat n , yaitu :


Menggunakan interpolasi polinomial, polinomial derajat n yang menginterpolasi himpunan data
             adalah secara unik didefinisikan dengan titik-titik data. Spline derajat n yang menginterpolasi
             himpunan data yang sama tidak secara unik didefinisikan, dan kita mengisi dalam n-1 derajat
            bebas tambahan untuk menyusun suatu interpolan yang unik. Salah satu model spline yang
            banyak digunakan adalah spline kuadrat. Spline kuadrat dapat disusun sebagai :



    Koefisiennya dapat ditemukan dengan memilih z0 dan kemudian menggunakan hubungan
                recurrent :



Selanjutnya dimasukkan dalam persamaan (4) untuk menghasilkan persamaan spline yang
            dimaksud.