Senin, 24 Maret 2014

TUGAS PENGANTAR TEORI GAME

     
TEORI GAME
      Teori game adalah suatu model matematika yang diterapkan untuk menganalisa situasi persaingan dan konflik antara berbagai kepentingan sehingga dapat mengambil suatu keputusan. Teori permainan ini awalnya dikembangkan oleh seorang ahli matematika perancis yang bernama Emile Borel pada tahun 1921. Yang selanjutnya dikembangkan lebih lanjut oleh John Van Neemann dan Oskar Morgenstern sebagai alat untuk merumuskan perilaku ekonomi yang bersaing. John Van Neemann dan Oskar Morgenstern mengungkapkan bahwa, “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.”
     Dari pengertian diatas dapat disimpulkan bahwa, teori bermain adalah merupakan suatu teori yang mengedepankan konsep konsep dalam suatu permainan sebagai landasan. Dimana didalam permainan terdapat peraturan, yang secara langsung mampu menciptakan situasi bersaing dan digunakan untuk mencari strategi terbaik dalam suatu aktivitas, dimana setiap pemain didalamnya sama-sama mencapai utilitas tertinggi.



Contoh game:
•    Intel vs AMD
•    Penulis buku dengan pembacanya
•    Maskapai penerbangan dengan penumpangnya
•    Penjual dengan pembeli

Asumsi-asumsi Teori game:
Agar game dapat dimodelkan secara matematis, diperlukan 4 elemen dasar dari sebuah game:
1.    Pemain
2.    Tindakan
3.    Payoff
4.    Informasi

    Keempat elemen itu disebut juga Rules of The Game. Para pemain berusaha memaksimalkan payoff mereka, dengan cara memilih strategi yang tepat berdasarkan informasi yang mereka miliki. Keadaan di mana setiap pemain telah menentukan strategi yang optimal disebut kesetimbangan (equilibrium). Dengan mengetahui kesetimbangan dari suatu game, pemodel dapat mengetahui tindakan/strategi apa yang dipilih oleh para pemain yang terlibat, dan juga outcome dari game tersebut.

Asumsi-asumsi dasar:
  •  Setiap pemain memiliki strategi yang berhingga banyaknya (finite), dan mungkin berbeda dengan pemain lainnya.
  • Setiap pemain bersikap rasional yaitu berusaha memilih strategi yang memberikan hasil paling optimal bagi dirinya, berdasarkan payoff dan jenis game yang dimainkan.

Model Game:
•    Klasifikasi berdasarkan jumlah pemain:
  • Game dua-pemain (2-person)
  •  Game N-pemain (N ≥ 3)

•    Klasifikasi berdasarkan jumlah keuntungan dan kerugian:
  • Game jumlah-nol (zero-sum game)
  • Jumlah payoff dari setiap pemain sama dengan nol. Untuk game dengan 2 pemain, besar keuntungan di satu pihak sama dengan besar kerugian di pihak lain.
  •  Game bukan jumlah-nol (non zero-sum game)
     Jumlah payoff dari setiap pemain tidak sama dengan nol. Untuk game dengan 2 pemain, besar keuntungan di satu pihak tidak sama dengan besar kerugian di pihak lain.

•    Klasifikasi berdasarkan jumlah strategi:
  •  Game strategi-murni (pure-strategy game)
  • Game strategi-campuran (mixed-strategy game)

•    Klasifikasi berdasarkan urutan (giliran) bermain:
  •  Game sekuensial
     Pemain melakukan tindakan secara bergantian. Pemain berikutnya mengetahui tindakan yang diambil oleh pemain sebelumnya (mungkin secara tidak utuh).
  •  Game simultan
     Pemain melakukan tindakan secara bersamaan. Pada saat mengambil tindakan, pemain yang terlibat tidak mengetahui tindakan yang dipilih oleh pemain lainnya. Dalam hal ini jeda waktu pengambilan tindakan antara sesaa pemain tidak berpengaruh terhadap pilihan yang diambil oleh pemain ybs.

•    Klasifikasi berdasarkan kesempurnaan informasi:
  •  Game dengan informasi sempurna
Pemain mengetahui dengan pasti tindakan yang diambil oleh lawannya, sebelum ia memilih tindakan → asumsi ini hanya dapat dipenuhi oelh game sekuensial.
  • Game dengan informasi tidak sempurna
Pemain tidak mengetahui tindakan yang dipilih lawannya sebelum permainan berakhir.

•    Klasifikasi berdasarkan kelengkapan informasi:
  •  Game dengan informasi lengkap
Pemain mengetahui payoff lawannya.
  • Game dengan informasi tidak lengkap
Pemain tidak memiliki informasi lengkap tentang payoff lawannya.

•    Klasifikasi berdasarkan adanya kesepakan (komitmen):
  • Game kooperatif
Para pemain membuat komitmen yang mengikat (binding commitment) untuk meningkatkan outcome mereka.
  • Game nonkooperatif
Para pemain tidak membuat komitmen yang mengikat.

Payoff
    Payoff adalah angka yang menunjukkan hasil dari strategi permainan yang diinginkan oleh ybs. Hasil ini dinyatakan dalam bentuk ukuran efektivitas, seperti uang, persentase market share, atau kegunaan. Dalam suatu permainan, payoff dapat dipresentasikan dalam bentuk matriks payoff.
Untuk permainan dua-pemain bukan-jumlah-nol (2-person non-zero-sum game), payoff direpresentasikan dalam bentuk bimatriks.
Untuk permainan dua-pemain jumlah-nol (2-person zero-sum game), payoff direpresentasikan dalam bentuk matriks dan atau bimatriks.

Strategi
    Strategi permainan adalah rangkaian rencana kegiatan yang menyeluruh dari pemain ybs, sebagai respon atas aksi yang mungkin dilakukan oleh pemain lain (pesaingnya). Suatu strategi dikatakan dominan bila setiap payoff dalam strategi adalah superior terhadap setiap payoff yang berhubungan dalam suatu strategi alternative. Aturan dominan ini dapat digunakan untuk mengurangi ukuran matriks payoff dan upaya perhitungan.

Strategi Terdominasi dan Strategi Dominan
     Strategi terdominasi adalah strategi yang strictly inferior terhadap sejumlah strategi lain, apapun strategi yang dipilih lawan.
  •      Strategi dominan adalah strategi yang memiliki payoff tertinggi dibandingkan dengan strategi lainnya. Misalkan strategi “X” adalah strategi dominan bagi pemain A, maka apapun strategi yang dipilih pemain B, pemain A tetap akan memilih strategi “X”.
  •       Kesetimbangan strategi dominan adalah suatu outcome yang dibentuk oleh strategi dominan setiap pemain.
Contoh Pemecahan Game dengan Pohon
     Pada sub bab ini akan dibahahas sepenggal contoh pemecahan game dengan bantuan pohon. Sebagai contoh akan digunakan permainan dengan kompleksitas terendah yaitu permainan Tic Tac Toe.

Aplikasi Lainnya dari Teori Game dalam berbagai bidang
     Seperti kita ketahui bahwa penggunaan graf dan pohon sangat banyak aplikasinya dalam kehidupan. Game-theory juga merupakan salah satu konsep yang dapat diimplementasikan dalam bidang lainnya. Dengan menggunakan konsep pohon, kombinatorial matriks, dan dilengkapi dengan algoritma minimum.

Politik dan Ekonomi (Konsep Pohon)
    Beberapa pemakaian yang paling mencolok adalah pada pengambilan keputusan yang berhubungan dengan sistem pemerintahan. Pada penerapan politik ini, untuk satu masalah yang sangat membutuhkan keputusan terbaik karena menyangkut masalah suatu negara. Dengan menggambarkannya secara ekstensif berupa pohon dengan informasi lengkap, dapat dimisalkan semua elemen yang mempengaruhi dan kemungkinan keputusan sebagai suatu node. Dengan menerapkan minimum tree dapat terlihat keputusan dengan resiko terkecil, dengan algoritma minimax (algoritma untuk mempertimbangkan keputusan terbaik) akan didapat solusi terbaik sebagai pemecahan masalah.

Biologi (Konsep Matriks Kombinatorial)
    Konsep matriks kombinatorial dari game-theory banyak digunakan dalam bidang biologi khususnya yang menyangkut evolusi dan habitat hewan. Untuk masalah habitat hewan misalnya, sangat mirip dengan matriks kombinatorial pada Zero-Sum Game. Sebagai contoh permisalan adalah masalah piramida makanan yang berlaku pada hewan. Misalkan terdapat suatu populasi sebanyak n ayam dan n elang dengan asumsi bahwa ayam adalah makanan dari elang. Sehingga untuk bertahan hidup dan memperbanyak jenisnya, elang harus memakan ayam. Untuk satu kali memangsa maka di sini kemungkinan elang akan menjadi (n + 1) dan ayam akan (n - 1). Hal yang sama juga berlaku untuk teori territorial pada hewan. Selain dari dua contoh bidang di atas, masih banyak bidang lainnya yang memakai konsep hampir sama dengan game-theory.

Narasi Game petualangan
Pada suatu waktu di suatu pulau yang asri berdirilah kerajaan besar. Kerajaan itu memiliki tanah yang subur dan beraneka ragam sumber daya alam yang berlimpah ruah. Kerajaan ini dipimpin oleh seorang raja yang arif dan bijaksana sehingga rakyatnya makmur dan sejahtera. Ia memiliki seorang putri yang cantik jelita. Putri itu bernama Ayu Lestari. Ia memiliki rambut coklat keemasan, matanya indah bersinar, bibirnya berwarna merah semerah bunga mawar.
Berbeda dengan kerajaan di negri sebrang kehidupan rakyatnya tidaklah sejahtera dikarenakan pemimpinnya yang serakah dan bertindak sewena-wena. Raja sangatlah rakus dan cerdik terhadap setiap taktik yang dia kerjakan. Ia tidak segan-segan membuat rakyatnya hidup sengsara, bahkan tidak jarang pula raja tidak memberikan upah untuk rakyat yang telah bekerja kepadanya.
Pada suatu ketika raja yang sangat rakus ini mendengar kabar bahwa ada satu kerajaan yang memiliki banyak perhiasan dan permata karena tertarik ingin menguasai maka saga raja mengirim pasukannya untuk menculik sang putri raja dengan harapan raja akan dapat menguasai segala perhiasan dan permata.
Pada suatu malam raja nan rakus menjalankan taktiknya untuk menculik sang putri raja. Singkat cerita putri raja berhasil di culik. Hal ini membuat Ayahanda sang putri murka ketika mengetahuinya. Kemudian sang raja mengadakan sayembara untuk menyelamatkan sang putri hingga sayembara ini terdengar di seluruh pelosok negeri tersebut. Dari hasil sayembara terdapatlah seorang pemuda yang berani dan gagah perkasa, bernama Januar. Pemuda tersebut sangatlah ingin menyelamatkan sang putri dari penculikan raja yang rakus.
Dimulailah cerita petualangan dari sang pemuda tersebut. Dimana dia harus bertarung dengan musuh yang kuat serta menghadapi medan yang berat. Dengan level yang kian menantang serta terbatasnya waktu penyelamatan membuat Game ini tersaji dengan tampilan yang menarik ditambah dengan tantangan yang membuat pemain akan berpacu dengan melodi pertempuran yang memacu adrenalin serta membuat pemain ingin menyelesaikan misi dengan cepat.


Konsep Game

Konsep Game kali ini, pemain mengendalikan seorang pejuang dengan membawa senjata berupa pedang yang digunakan untuk menyerang musuh baik itu prajurit maupun rajanya. Selain itu dapat juga menembak dengan menggunakan senjata panah. Tujuan dari permainan ini adalah untuk menghilangkan semua prajurit di tiap tingkat permainan dan menyelamatkan sang putri. Menggunakan pedang, pemain mengayun dan menebaskan  dengan maksud untuk membunuh musuh secara langsung atau memenah untuk membunuh secara jarak jauh. Dalam berbagai tahap permainan, dan kondisi musuh semakin bertambah berat baik dari segi kemampuan maupun jumlah.

Source Code
MainActivity.java
package com.softskill.petualangan; //membuat package dengan nama softskill petualangan

import android.os.Bundle; //import yang ada untuk android
import org.apache.cordova.*; //import yang ada untuk android

public class MainActivity extends DroidGap { //bersifat public

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        super.loadUrl("file:///android_asset/www/index.html");
    }

   
}

activity_main.xml
<FrameLayout xmlns:android=http://schemas.android.com/apk/res/android //membuat frame layout
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.softskill.petualangan.MainActivity"
    tools:ignore="MergeRootFrame" />

fragment_main.xml
<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android //membuat relative layout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.softskill.petualangan.MainActivity$PlaceholderFragment" >

    <TextView // tampilan textview
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.softskill.petualangan"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.softskill.petualangan.MainActivity"
            android:screenOrientation="landscape"
            android:configChanges="orientation|keyboardHidden"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Index.html
<!DOCTYPE html>
<html manifest="offline.appcache">
<head>
    <meta charset="UTF-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
     <title>petualangan</title>
    
     <!-- Allow fullscreen mode on iOS devices. (These are Apple specific meta tags.) --> // mengizinkan layar penuh untuk penggunaan perangkat iOS
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui" />
     <meta name="apple-mobile-web-app-capable" content="yes" />
     <meta name="apple-mobile-web-app-status-bar-style" content="black" />
     <link rel="apple-touch-icon" sizes="256x256" href="icon-256.png" />
     <meta name="HandheldFriendly" content="true" />
    
     <!-- Chrome for Android web app tags --> //mengadakan chrome untuk aplikasi android web
     <meta name="mobile-web-app-capable" content="yes" />
     <link rel="shortcut icon" sizes="256x256" href="icon-256.png" />

    <!-- All margins and padding must be zero for the canvas to fill the screen. --> //semua argin dan padding harus nol pada canvas agar layar terlihat penuh
     <style type="text/css">
           * {
                padding: 0;
                margin: 0;
           }
           html, body {
                background: #000;
                color: #fff;
                overflow: hidden;
                -ms-touch-action: none;
           }
           canvas {
                touch-action-delay: none;
                touch-action: none;
                -ms-touch-action: none;
           }
    </style>
    

</head>

<body>
     <div id="fb-root"></div>
    
    
     <!-- The canvas must be inside a div called c2canvasdiv --> //canvas harus berada di dalam sebuah div yang disebut c2canvasdiv
     <div id="c2canvasdiv">
    
           <!-- The canvas the project will render to.  If you change its ID, don't forget to change the
           ID the runtime looks for in the jQuery events above (ready() and cr_sizeCanvas()). -->//canvas akan di render. Jika kamu merubah ID, jangan lupa untuk merubah ID runtime pada jQuery
           <canvas id="c2canvas" width="854" height="480">
                <!-- This text is displayed if the visitor's browser does not support HTML5.
                You can change it, but it is a good idea to link to a description of a browser
                and provide some links to download some popular HTML5-compatible browsers. -->// teks ini akan muncul jika browser tidak mendukung HTML5. Kamu bisa merubahnya, tapi lebih baik mendeskripsikan apa yang terjadi pada browser.
                <h1>Your browser does not appear to support HTML5.  Try upgrading your browser to the latest version.  <a href="http://www.whatbrowser.org">What is a browser?</a>
                <br/><br/><a href="http://www.microsoft.com/windows/internet-explorer/default.aspx">Microsoft Internet Explorer</a><br/>
                <a href="http://www.mozilla.com/firefox/">Mozilla Firefox</a><br/>
                <a href="http://www.google.com/chrome/">Google Chrome</a><br/>
                <a href="http://www.apple.com/safari/download/">Apple Safari</a><br/>
                <a href="http://www.google.com/chromeframe">Google Chrome Frame for Internet Explorer</a><br/></h1>
           </canvas>
          
     </div>
    
     <!-- Pages load faster with scripts at the bottom -->// halaman akan lebih cepat dengan scripts yang ada di bawah
    
     <!-- Construct 2 exported games require jQuery. --> // membangun 2 games yang memerlukan jQuery
     <script src="jquery-2.0.0.min.js"></script>


    
    <!-- The runtime script.  You can rename it, but don't forget to rename the reference here as well.
    This file will have been minified and obfuscated if you enabled "Minify script" during export. --> //script dijalankan. Kamu dapat memberikan nama, tapi jangan lupa memberikan namanya denagn benar. File ini akan minified dan menghilang jika kamu mengaktifkan “Minify script” setelah di export.
     <script src="c2runtime.js"></script>

    <script>
           // Size the canvas to fill the browser viewport. //mengatur ukuran canvas untuk browser viewport
           jQuery(window).resize(function() {
                cr_sizeCanvas(jQuery(window).width(), jQuery(window).height());
           });
          
           // Start the Construct 2 project running on window load.// mulai membangun 2 project yang berjalan pada jendela load
           jQuery(document).ready(function ()
           {              
                // Create new runtime using the c2canvas //buat runtime baru menggunakan c2canvas
                cr_createRuntime("c2canvas");
           });
          
           // Pause and resume on page becoming visible/invisible // berhenti dan lanjutkan pada perintah visible/invisible
           function onVisibilityChanged() {
                if (document.hidden || document.mozHidden || document.webkitHidden || document.msHidden)
                     cr_setSuspended(true);
                else
                     cr_setSuspended(false);
           };
          
           document.addEventListener("visibilitychange", onVisibilityChanged, false);
           document.addEventListener("mozvisibilitychange", onVisibilityChanged, false);
           document.addEventListener("webkitvisibilitychange", onVisibilityChanged, false);
           document.addEventListener("msvisibilitychange", onVisibilityChanged, false);
          
    </script>
</body>
</html>

Tools yang Digunakan

·        Construct 2 Realease 169 (64-Bit)

·        Android ADT v22.6.2-1085508

·        cordova-2.0.0.jar



Penjelasan Permainan:

Game petualangan yang kami buat berbasis Android. Dimana cara memainkannya pun cukup mudah. Pemain akan dihadapi dengan musuh-musuh dan harus memenangkannya untuk mendapatkan sang putri. Pemain akan memiliki nyawa dan skor. Jika pemain kalah maka skor akan berkurang dan nyawa akan berkurang hingga pada akhirnya Game Over. Jika pemain menang maka skor akan bertambah dan pemain akan mendapatkan sang puteri.

Di dalam permainan ini terdapat tombol-tombol. Tombol yang sederhana dan tidak rumit akan memudahkan pemain dalam menggunakan aplikasi ini. Pemain hanya perlu melompat saja guna menghindari musuh yang ingin menyerang. Selain itu juga terdapat koin yang harus diambil agar pemain mendapatkan skor sehingga total skor menjadi tinggi.


Screenshoot Game  


  

  • ·  Ketika memulai permainan
 
 



  • · Ketika menghadapi lawan




  • ·Ketika berhasil menyelamatkan putri




  • Ketika pemain kalah




  • Informasi pembuat game




Kesimpulan

            Adapun kesimpulan dari makalah ini adalah tentang penjelasan Game dimana Game  ini sangat mudah dimainkan dan mudah dalam pembuatannya. Game merupakan sarana hiburan yang diperlukan manusia dalam hal pengembangan kemampuan diri dan kecerdasan serta penenangan emosi dalam hal kesabaran dan kegigihan.  Namun dalam Game terutama berbasis teknologi juga terdapat kelemahan diantaranya menyebabkan seseorang menjadi jarang berinteraksi dengan lainnya secara langsung dan membuat pemainnya merasa Ingin bermain secara terus menerus dan melalaikan kegiatan penting yang harus dilakukannya serta menjadikan seseorang menjadi pemalas. Oleh karena itu kontrol diri sangat diperlukan dalam hal pencegahan dampak buruk terhadap Game. Game ini masih terlalu sederhana dalam pembuatan maupun tampilan saat dimainkan Demikianlah makalah dari kelompok kami. Bila ada kekurangan mohon dimaklumi mengingat tiada manusia yang luput dari kesalahan.


Referensi:
Munir, Rinaldi.2006.Diktat Kuliah IF2153 Edisi Keempat. Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika, Institut Teknologi Bandung.

2 komentar:

  1. bisa jelaskan tahap pembuatan game nya sampai jadi android app

    BalasHapus
  2. Coba tanya teman saya januar fadilah karna beliau yang membuat gamenya..
    webnya atau blognya alamatnya www.catatanfadil.com
    Silahkan jika ada yang ingin ditanyakan pada beliau

    BalasHapus