Fusion Unity, PHP dan MySQL - IMedia9 - Creative Networks

Breaking

Monday 5 January 2015

Fusion Unity, PHP dan MySQL



Halo semuanya? Apa kabar? Sesuai janji saya di postingan yang lalu, kali ini saya akan membuat sebuah tutorial sederhana soal cara ngegabungin antara Unity, PHP dan MySQL. Atau istilahnya adalah Fusion. Keren kan? Itu artinya game anda bisa nyimpen highscore di database, anda juga bisa... err... nyimpen highscore di database, terus... hmm.. yah , nyimpen highscore di database, hehehe, ah pokoknya mah kalau game anda udah konek ke database ada banyak banget lah yang bisa anda lakuin. Mudah-mudahan sih gitu.

Istilah Fusion sendiri pertama kali diperkenalkan oleh Son Goku pada saat Bow bangkit akibat tenaga yang dicuri dari Son Gohan saat pertandingan. Demi mengalahkan iblis unyu berkulit pink itu, Son Goku mengajarkan jurus Fusion kepada anaknya, si Son Goten dan anaknya si Vegeta yaitu Trunks. Pertanyaannya adalah, apakah dalam melakukan Fusion antara Unity, PHP dan MySQL ini anda juga perlu melakukan gerakan2 super ajib kayak mereka berdua?


Tentu tidak. Karena memang itu mah nggak ada hubungannya. *plak! digampar sama pembaca!* Oke, kita kembali ke jalan yang benar. Ehm! Sebagai langkah awal, anda kudu nyiapin yang namanya XAMPP yang udah aktip. Lalu anda buka PHPMyAdmin, bikin 1 database dengan 1 tabel kayak di bawah ini nih. Bebas sih sebenernya nama database dan tablenya mah, suka-suka agan aja. Terus jangan lupa masukin data 1 biji aja. Nggak usah banyak-banyak. Dalam contoh ini, saya bikin database namanya: "db_kikysikancil", tabelnya namanya: "tb_unity", dan masukin data untuk field "data" isinya "AAA". Inget2 itu, penting!


Habis itu agan bikin deh sebuah file php pake notepade kek, pake editor plus kek, pake ms word terserah. Pokoknya ekstensinya php dan simpan di rootnya apache. Misalnya: XAMPP/htdocs. Terus ketik script kayak gini:

 <?php  
      $host = "localhost";  
      $user = "root";  
      $pass = "";  
      $database = "db_kikysikancil";  
      $table = "tb_unity";  
      $connect = mysql_connect($host, $user, $pass);  
      $valid = mysql_select_db($database);  
      if ($connect && $valid){  
           if ($_GET['read'] == 1){  
                $sql = "SELECT * FROM $table";  
                $result = mysql_query($sql);  
                $row = mysql_fetch_row($result);  
                echo $row[1];  
           }            
           if (isset($_GET['var1'])){  
                $sql = "UPDATE $table SET Data = '".$_GET['var1']."' WHERE ID = 1";  
                $result = mysql_query($sql);  
                if ($result) { echo "Updated: ".$_GET['var1']; }  
                else { echo "Fail!"; }  
           }  
      }  
 ?>  

Habis itu bikin project baru deh di Unity. Buat yang ga bisa bikin project baru di Unity baca dulu postingan saya yang dulu-dulu gih: Unity Create New Project. Nah, habis itu bikin script C#. Sebenernya bikin 1 script juga udah cukup, tapi sengaja saya pisahin jadi 2 supaya agan-agan bisa ngerti, mana script buat BACA dan mana script buat NULIS. Intinya itu2 aja sih. ReadFromMySQL dan satunya lagi WriteToMySQL. Caranya bikin script itu tinggal klik kanan doang di panel Asset -> Create -> C# Script. Jangan lupa kasih nama!

Berdasarkan pengalaman, ada banyak banget pembaca blog ini yang pusing 17 keliling gara2 script salah nama jadi error. Padahal garing banget tuh errornya, wkwkwkw. Nah, agar kesalahan itu tidak berulang, saya pernah juga bikin post tentang itu, nggak ada salahnya dibaca buat pengingat: Unity Cant Add Script


Untuk script ReadFromMySQL agan ketik script berikut:

 using UnityEngine;  
 using System.Collections;  
 public class ReadFromMySQL : MonoBehaviour {  
      WWW php_data;  
      public string URL;  
      string vText;  
      // Use this for initialization  
      void Start () {  
           vText = "";  
      }  
      // Update is called once per frame  
      void Update () {  
      }  
      IEnumerator GetPHPData () {  
           string param = URL + "?read=1";  
           php_data = new WWW(param);  
           yield return php_data;  
           vText = php_data.text;  
      }  
      void OnGUI () {  
           GUI.Label(new Rect(10,150,500,100), "Data: " + vText);  
           if (GUI.Button(new Rect(10, 180, 100, 30), "Load")){  
                StartCoroutine(GetPHPData());  
           }  
      }  
 }  

Kalau untuk script WriteToMySQL agan ketik script berikut:

 using UnityEngine;  
 using System.Collections;  
 public class WriteToMySQL : MonoBehaviour {  
      WWW php_data;  
      public string URL;  
      string vText = "";  
      // Use this for initialization  
      void Start () {  
      }  
      // Update is called once per frame  
      void Update () {  
      }  
      IEnumerator SetPHPData (string value1) {  
           string param = URL + "?var1="+value1;  
           php_data = new WWW(param);  
           yield return php_data;  
           Debug.Log(php_data.text);  
      }  
      void OnGUI () {  
           GUI.Label(new Rect(10,0,100,30), "Write");  
           vText = GUI.TextField(new Rect(10,30,300,30), vText, 50);  
           if (GUI.Button(new Rect(10, 65, 100, 30), "Save")){  
                StartCoroutine(SetPHPData(vText));  
           }  
      }  
 }  

Habis itu pasang deh ke Main Camera dan atur kayak begini di bagian parameter URL nya. Isi URL nya teh disesuaikan dengan nama file agan-agan kalau make XAMPP. Da saya mah pakenya di localhost atuh, jadi weh gitu setingnya. Kalao agan-agan mah ya, sok weh lah, atur-atur oceh?


Kalau udah semuanya dan nggak error, tinggal run aja langsung. Tahapa pertama, agan klik dulu tombol LOAD. Mestinya bakalan muncul data yang tadi dimasukin dari PHPMyAdmin.


Data "AAA" teh yang tadi kita masukin lewat PHPMyAdmin. Inget? Baca lagi dari atas kalau lupa.
Nah, habis itu ketik sesuatu deh di kotak Write. Misalnya, "BBB" terus klik SAVE. Nggak terjadi apa-apa memang. Tapi coba deh klik LOAD lagi. Apa yang terjadi?


Yup, pada saat klik LOAD data yang ditampilkan sudah berubah dari yang tadinya "AAA" kini berubah jadi "BBB". Ini artinya update ke tabel MySQL udah berhasil. Nggak percaya? Coba aja agan buka lagi PhpMyAdmin dan refresh tabel yang tadi.


Nilainya memang sudah berubah kan? Itu teh di Update dari Unity loh, keren kan? Ah, Unity mah emang canggih gih gih! Pertanyaan lanjutannya adalah, gimana kalau bikin login Scene? Maksudnya, si game teh baru bisa main kalau udah login dulu ke sebuah database? Idenya sama persis dengan ini, ya tinggal read, ya tinggal write, ya tinggal ngoding. Saya yakin, agan-agan pasti bisa! Cemungud!


Tapi khusus buat para pembaca setia blog kancil ini, saya akan coba bahas mengenai login Scene di postingan selanjutnya. *ciee... ciee... yang pada setia sama si kancil, ciee.. ciee... " Untuk sekarang, sekian dulu tutorialnya. Tunduh euy.

17 comments:

  1. Itu ada son gohan segala.! Gokil bgt min. Haha. Tpi materinya gurih pisan ey. Doank singkong rebus. Hehe. Tanks min. Lanjutkan ke tutor gratis lainnya.

    ReplyDelete
  2. Hatur nuhun sudah mampir di blog :)

    ReplyDelete
  3. mau nanya ni gan, trus kalau mau di publish ke game mobile database sqlnya ngikut gak gan.?? tlong dibalas
    Trimakasih :D

    ReplyDelete
    Replies
    1. ane nyimpen databasenya di cpanel gan. aksesnya secara online berhasil :D

      Delete
    2. terimakasih infonya gan..
      membantu sekali buat tugas akhirku... :D

      Delete
  4. Databasenya mah simpen aja di host server (sewa atau kalo ada yang gratisan juga bisa), jadi nanti dari aplikasi mobile di konekin ke servernya sehingga aplikasi/game itu cuma bisa jalan kalao ada koneksi internet + nyambung ke server kita (yang ada databasenya)

    ReplyDelete
  5. mas, ane uda ikutin tutor login sama fusion mas ini. work !!! :D
    trus mas, ane mau menampilkan data berdasarkan id login gimana ya mas?
    kalau ini cuman menampilkan isi tabel baris pertama saja.

    mohon bantuannya mas

    ReplyDelete
    Replies
    1. Itu kayaknya tinggal di modif bagian sqlnya, misal: $sql = "SELECT * FROM $table" WHERE bla-bla = bla-bla"

      Delete
  6. klw un2k hosting db nya gimana kak?

    ReplyDelete
    Replies
    1. hosting dbnya bisa pake yang bayar atau gratisan, nanti kalo udah masuk di cpanelnya tinggal atur-atur aja di mysqlnya, database, table, dll

      Delete
  7. APlikasi di ANdroid dan Databsenya di PC koneksi via wifi bisa gakmas? caranya bagaimana ?

    ReplyDelete
    Replies
    1. Kayaknya itu nyaris sama dengan tutorial ini deh, bedanya paling di nama URL (kasih URL ke PC nya) sama seting tethering di gadget androidnya (barangkali, ini juga jawabnya sok tahu kok, hehehe)

      Delete
  8. mau tanya nih, konekin unity ke ms sql step by step nya gimana ya?

    ReplyDelete
    Replies
    1. MS SQL? Microsoft SQL Server maksudnya? Waduh, nanyanya jangan yang susah-susah dong mas, belum nyampe ke situ ilmu saya. Masih cupu bingit nih.

      Delete
  9. databasenya bisa di akses via smartphone??

    ReplyDelete
  10. sy coba ini muncul error kenapa ya? solusinya om
    You are trying to load data from a www stream which has not completed the download yet.
    You need to yield the download or wait until isDone returns true.
    UnityEngine.WWW:get_text()
    c__Iterator0:MoveNext() (at Assets/ReadFromMySQL.cs:18)
    UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

    ReplyDelete