Repository navigation
(5) Technical Feature
Player dapat melakukan tap terhadap suatu bagian layar dengan gambar koin, dan akan mendapatkan koin karena aktivitas tersebut dengan banyak sesuai dengan jumlah resources yang dimiliki, dan level setiap resources.
3.1.1 Implementation
Sebuah script akan digunakan untuk mendeteksi tap pada bagian layar, dan akan memanggil fungsi pada game manager untuk mendapatkan koin dengan tap. Dalam fungsi tersebut, akan dikalkulasikan berapa jumlah gold total yang didapatkan dengan cara menjumlahkan gold yang didapatkan dari setiap resources dengan memanggil metode untuk mendapatkan jumlah gold dari resource dengan iterasi semua resources yang dimiliki. Lalu total gold tersebut akan ditambahkan ke jumlah gold yang dimiliki player.
Player akan mendapatkan passive income setiap detiknya berupa sejumlah gold, dengan jumlah resources yang dimiliki, dan level setiap resources.
3.2.1 Implementation
Menggunakan fungsi update dari metode class MonoBehavior pada game manager, akan diperiksa apakah waktu sudah jeda satu detik. Jika ya, maka akan dipanggil fungsi untuk mendapatkan koin per detik. Cara menghitung jumlah coin yang didapatkan sama dengan fungsi mendapatkan koin dengan tap, namun kemudian dikalikan collect percentage berupa 0.1 (10 persen). Lalu total gold ditambahkan ke jumlah gold yang dimiliki player.
Player dapat meng-unlock resources yang masih dikunci, dan menaikkan level resources yang telah di unlock dengan menggunakan gold yang dimiliki.
3.3.1 Implementation
Setiap resources yang ada dalam game akan direpresentasikan dalam bentuk objek struct ResourceConfig dengan variable Name, UnlockCost, UpgradeCost, dan Output. Setiap resources yang ada di dalam game akan disimpan dalam sebuah array ResourceConfig, dan pada awal game hanya resource pertama yang telah ter-unlock. Kemudian ada class yang dibuat untuk berinteraksi terhadap setiap resources, baik untuk meng-unlock, menaikkan level, mendapatkan data resources, dan juga mendapatkan jumlah income dari sebuah resources. Ketika player meng-unlock dan menaikkan level dari resource, atau mendapatkan income, maka akan dipanggil metode dari class ini.
Player dapat menyimpan progress dari game berupa jumlah gold yang dimiliki, resources yang telah di unlock, dan setiap level dari resources yang telah dimiliki, yang disimpan pada local maupun cloud storage. Lalu player dapat memilih saat memulai game untuk melanjutkan progress dari local atau cloud storage.
3.4.1 Implementation
Progress dari game akan disimpan dalam class UserProgressData, yang menyimpan jumlah gold player, dan list yang menyimpan setiap level dari resources yang dimiliki. Lalu class tersebut akan dijadikan objek string dalam format json sehingga progress dapat disimpan. Untuk local storage, progress akan disimpan pada PlayerPrefs dalam Unity dalam bentuk json, sedangkan untuk cloud storage, progress akan disimpan menggunakan storage dari Firebase dalam bentuk ArrayBite. Jika pada awal permainan player memilih untuk me-load progress dari local, maka progress akan langsung diambil dari PlayerPrefs. Sedangkan jika dipilih cloud, maka akan diambil dari storage Firebase, dan jika gagal akan me-load progress dari local. Progress pada storage local dan cloud akan di-update setiap player gold bertambah, ada resource yang ter-unlock, atau ada resource yang dinaikkan levelnya. Namun untuk cloud, progress hanya akan di save setiap 5 detik untuk event gold bertambah, agar tidak terlalu berat.