Unity Server High Score - IMedia9 - Creative Networks

Breaking

Tuesday 3 February 2015

Unity Server High Score



Halo agan-agan sekalian, apa kabar? Hari ini saya akan membahas sebuah materi yang sebenarnya biasa, tapi dibahas dengan cara yang juga biasa, karena saya adalah orang yang biasa-biasa saja. Tutorial ini ditujukan untuk mas El Jie yang terus-terusan neror saya lewat pesbuk sambil memohon-mohon dan nangis darah minta dibikinin materi ini. Padahal tutorialnya menurt saya garing banget, simpel dan... yah, sudahlah. Saya bikinin juga deh akhirnya.


Judul materinya adalah Unity Server High Score. Biasa banget ya? Intinya adalah, gimana caranya si Unity ini bisa nampilin sebuah high score yang berasal dari server misal si Apache dan MySQL nya itu. Biasanya kan, Unity kalo nyimpen apa-apa di PlayerPref tuh, nah sekarang di Server. Penasaran? Penasaran? Lets capcus bleh!

Pertama-tama adalah agan harus udah nginstall XAMPP dan punya sebuah database, sebuah tabel, dua field, yang berisi data-data nama pemain dan nilai scorenya. Jumlahnya terserah deh bebas.


Terus agan bikin sebuah skrip PHP yang fungsinya adalah untuk menampilkan isi dari tabel high score tadi. Cuma bedanya, setiap nama dan score yang ditampilkan harus dipisahkan oleh sebuah marker berupa karakter khusus. Saya biasanya pake '#' supaya nanti bisa di Split di Unitynya. Ketikin deh script berikut:

1:  <?php  
2:       $host = "localhost";  
3:       $user = "root";  
4:       $pass = "";  
5:       $database = "db_kikysikancil";  
6:       $table = "tb_highscore";  
7:       $score = "Score";   
8:       $connect = mysql_connect($host, $user, $pass);  
9:       $valid = mysql_select_db($database);  
10:       if ($connect && $valid){  
11:                 $unity_result = "";  
12:                 $sql = "SELECT * FROM $table ORDER BY $score DESC";  
13:                 $result = mysql_query($sql);  
14:                 while ($row = mysql_fetch_row($result)){  
15:                      $unity_result = $unity_result.$row[0]."#".$row[1]."#";  
16:                 }  
17:                 echo $unity_result;       
18:       }  
19:  ?>  

Tes dulu hasilnya di browser. Hasilnya mesti muncul kayak gitu tuh. Oke, bagian PHP selesai sampai di sini.

Next alias selanjutnya adalah agan buka project baru Unity agan dan pasang sebuah Empty GameObject kasih nama terserah lah. Nggak ngaruh ini.


Bikin sebuah  script C# dan ketikkan script berikut:

1:  using UnityEngine;  
2:  using System.Collections;  
3:  public class ReadHighScore : MonoBehaviour {  
4:       WWW php_data;   
5:       public string URL;   
6:       string[] vText;   
7:       string Name1, Score1, Name2, Score2, Name3, Score3;  
8:       // Use this for initialization   
9:       void Start () {   
10:            Name1 = "AAA"; Score1 = "30";  
11:            Name2 = "BBB"; Score1 = "20";  
12:            Name3 = "CCC"; Score1 = "10";  
13:            StartCoroutine(GetHighScore());  
14:       }   
15:       // Update is called once per frame   
16:       void Update () {   
17:       }   
18:       IEnumerator GetHighScore () {   
19:            string param = URL;   
20:            php_data = new WWW(param);   
21:            yield return php_data;   
22:            vText = php_data.text.Split('#');  
23:            Name1 = vText[0];  
24:            Score1 = vText[1];  
25:            Name2 = vText[2];  
26:            Score2 = vText[3];  
27:            Name3 = vText[4];  
28:            Score3 = vText[5];  
29:       }   
30:       void OnGUI () {   
31:            GUILayout.BeginArea(new Rect(0,0,400,400));  
32:            GUILayout.Label("Nama - Score");  
33:            GUILayout.Label(Name1 + " - " + Score1);  
34:            GUILayout.Label(Name2 + " - " + Score2);  
35:            GUILayout.Label(Name3 + " - " + Score3);  
36:            GUILayout.EndArea();  
37:       }  
38:  }  

Habis itu pasang scriptnya di gameobject dan isi beberapa parameternya sebagai berikut:


Tinggal di jalanin, play deh! Selesai.


Selamat! Agan baru saja membuat Server High Score versi kancil pertama di dunia! Saya yakin pasti agan punya banyak pertanyaan. Kenapa yang ditampilin cuma 3? Gimana kalau 5? Gimana kalau 100? Kok tampilinnya jelek banget? Gimana supaya bisa tampil di tengah? Gimana supaya tampilannya keren kayak game-game amrik sana? Saya sih mau-mau aja kasih tahu jawabannya. Tapi... WANI PIRO? 


Oh ya, buat agan yang baru pertama kali baca artikel soal Unity + PHP mungkin bisa baca artikel saya yang ini: Set MySQL Data di Unity sama yang ini: Login Scene Unity
Dan kalau masih ada yang nanya lagi, terus nanti pas gamenya di publish, memang MySQL nya bisa ngikut? Kan android mah nggak bisa diinstall MySQL.


Hadeuuuh. Kalau ini orang nanyanya bercanda saya masih bisa terima. Kalau nanyanya serius, saya bisa napsu. Esmosi tingkat tinggi setinggi setengah meter. Namanya juga Server atuh euy. Ya pastilah di simpennya di Android, eh, di server. Jadi nanti agan mesti nyewa hosting, pasang MySQL di situ, pasang datanya di situ, terus gamenya agan tuh arahin supaya ngambil data dari situ. Coba lihat di parameter URL, itu tulisannya: http://localhost kan? Nah, nanti kalau udah jadi beneran itu pasti bakalan ganti. Jadi http://bukanlocalhost.

Ngerti nggak? Ngerti? Alhamdulillah. Nggak? Subhanallah. Karena blog ini tidak dibuat untuk menjadikan anda orang yang mengerti, tapi menjadi orang yang bertekad baja, berjiwa ksatria, dan berguna bagi bangsa, negara dan agama. *Naon hubunganana?* Udah ah, segitu dulu. Nanti akan dilanjut lagi dengan tutorial geje selanjutnya. Terima kasih, bye bye.

1 comment:

  1. Gan saya minta tolong kalau input score dari mini game gimana cara nya atau kosong nya jadi saya membuat game mini game nah score nya kan udh ada di dalam mini game nah nilai dr score mini game itu mau saya keluarin atau input di luar contoh gambar nya kayak Paw itu gannn g.na cara nya yaaa mohon bantuannya

    ReplyDelete