Skip to content

Technical Design Document

Evander Christian Dumalang edited this page Nov 2, 2021 · 7 revisions

Technical Design Document


[Incremental Game]

Content Version History

Time Version Author Changes
04 - 10 - 2021 0.0 Evander Christian Dumalang Initial Document
04 - 10 - 2021 1.0 Evander Christian Dumalang Adding Chapter 1 and Chapter 2
05 - 10 - 2021 2.0 Evander Christian Dumalang Adding Chapter 3 and Chapter 4
06 - 10 - 2021 3.0 Evander Christian Dumalang Adding Chapter 5, Chapter 6, and Chapter 7
06 - 10 - 2021 4.0 Evander Christian Dumalang Finishing Document

Table of Content

  • Template Version history
  • Content Version History
  • Table of Content
  1. Introduction
  • 1.1 Purpose & Objective
  • 1.2 Project Scope
  1. Technical Overview
  • 2.1 Target System Requirements
  • 2.2 Tools Used
  • 2.3 Engines & Middleware
  • 2.4 File Format
  • 2.5 Technical Code
  1. Technical Feature
  • 3.1 Auto Collect
    • 3.1.1 Solution 1
    • 3.1.2 Solution 2
    • 3.1.3 Selected Implementation
  • 3.2 Saving Data
    • 3.2.1 Solution 1
    • 3.2.2 Solution 2
    • 3.2.3 Selected Implementation
  1. Technical Design
  • 4.1 System Architecture
  • 4.2 Class Diagram
  1. Administrative Data
  • 5.1 Server
  1. Reusable Codes
  • 6.1 public enum AchievementType
    • 6.1.1 Description
    • 6.1.2 How to Use
  • 6.2 UserDataManager.Save(bool uploadToCloud = false)
    • 6.2.1 Description
    • 6.2.2 How to Use
  • 6.3 UserDataManager.Progress.Gold
    • 6.3.1 Description
    • 6.3.2 How to Use
  • 6.4 GameManager.AddGold(double value)
    • 6.4.1 Description
    • 6.4.2 How to Use
  1. Other Notes

1. Introduction

Incremental game merupakan game casual idle clicker di mana pemain diharuskan untuk menekan koin berkali-kali untuk menambahkan jumlah koin yang dimiliki juga dengan meningkatkan level pada game, pemain akan mendapatkan lebih banyak koin pada game. Game ini akan mengsimulasikan ilmu fisika (physics) di dalamnya, serta mengimplementasikan konsep inheritance dalam Object-Oriented Programming (OOP).

1.1 Purpose & Objective

Incremental game ditargetkan untuk pemain casual, terutama untuk pemain yang sibuk dan hanya bisa bermain disela-sela kesibukan aktifitas para pemain. Target utama game ini adalah untuk mendapatkan koin yang banyak serta untuk menaikkan level skill di game agar mendapatkan koin yang lebih banyak lagi.

1.2 Project Scope

Pada game ini akan diimplementasikan fitur-fitur berikut:

  • Membuat bagian di mana pemain dapat tapping secara terus menerus
  • Membuat auto collect koin pada game
  • Membuat UI untuk koin dan auto collect
  • Membuat unlock level dan level pada game
  • Membuat achievement
  • Save local dan cloud

2. Technical Overview

2.1 Target System Requirements

Platform/OS: Android 9 API level 28

RAM: 512 MB

2.2 Tools Used

Users Tool Use
Prog Unity Ver 2018.3.3f1
Prog Firebase Ver 8.3.0
Prog Visual Studio Community 2019 Ver 16.11.2

2.3 Engines & Middleware

Game ini akan dibuat dengan menggunakan Unity2D game engine. Physics dalam game pun akan menggunakan fitur Physics2D dari Unity untuk mempermudah pengerjaan, serta menggunakan Firebase untuk storage save files dan analytics untuk analisis penggunaan aplikasi.

2.4 File Format

File Type Extension Use
Asset .png Image used in game
Code Script .cs Game Script
Unity Package .unitypackage Unity Package
Json .json File Setting Firebase

2.5 Technical Code

Technical specification

Type Description
Platform Android Mobile
Programming Language C#

3. Technical Feature

3.1 Auto Collect

Auto Collect dibuat untuk mengumpulkan koin secara otomatis tanpa menekan koin utama

3.1.1 Solution 1

Auto collect akan secara otomatis menambah jumlah koin yang dimiliki pemain tiap detiknya secara terus menerus ketika pemain aktif

3.1.2 Solution 2

Auto collect bisa ditingkatkan dengan mengikuti level dari pemain makin tinggi maka akan makin besar jumlah koin yang bisa dikumpulkan secara otomatis

3.1.3 Selected Implementation

Solusi kedua lebih meningkatkan semangat pemain untuk menaikkan level dibandingkan solusi pertama dimana solusi pertama memiliki jumlah pasti dalam mengumpulkan koin

3.2 Saving Data

Menyimpan data agar ketika game dimainkan pemain tidak mengulang dari awal

3.2.1 Solution 1

Menyimpan data secara luring langsung dalam perangkat sehingga cepat digunakkan

3.2.2 Solution 2

Menyimpan data secara daring agar data aman sehingga tidak terjadi masalah pada data

3.2.3 Selected Implementation

Solusi pertama dan kedua sangat bagus karena ketika luring file tetap bisa disimpan, dan akan diupload ketika daring

4. Technical Design

4.1 Class Diagram

Class Diagram

4.2 Activity Diagram

Activity Diagram

5. Administrative Data

5.1 Server

Item Value Note
Host IP Dynamic IP Tidak mempunyai IP pasti karena selalu berganti
Domain Name gs://dilo---incremental-game-8d168.appspot.com/ Domain storage firebase
Google Account Evansimba666@gmail.com Akun google yang digunakan

6. Reusable Codes

6.1 public enum AchievementType

6.1.1 Description

Modul ini digunakan untuk menambah tipe achievement pada game

6.1.2 How to Use

Tipe achievement bisa ditambah misalkan jumlah koin yang dimiliki maka dengan menambahkan GoldAmount dan dibuat logikanya ketika pemain mencapai jumlah koin tertentu maka pemain mendapat achievement yang menandakan player mencapai jumlah koin tertentu (500 koin, 5000 koin, dll)

6.2 UserDataManager.Save(bool uploadToCloud = false)

6.2.1 Description

Modul digunakan untuk menyimpan progress pemain dalam game secara luring dan secara daring

6.2.2 How to Use

Penyimpanan dilakukan dengan memanggil modul ini, apabila ingin menyimpan secara daring maka kita beri value true pada modul ini

6.3 UserDataManager.Progress.Gold

6.3.1 Description

Modul digunakan untuk menyimpan jumlah koin pada game, jumlahnya akan bertambah secara terus menerus dan akan berkurang jika digunakan untuk membeli level di game

6.3.2 How to Use

Penambahan koin pada game jika kita menekan koin utama secara berulang-ulang dan akan berkurang jika pemain membeli level pada game dan jika koin belum tercapai jumlahnya untuk membeli level maka pemain tidak akan bisa membeli level itu

6.4 GameManager.AddGold(double value)

6.4.1 Description

Modul digunakan untuk menambah koin pada game, modul UserDataManager.Progress.Gold dipanggil untuk menyimpan jumlah koin yang sudah dimiliki dan akan disimpan secara luring pada UserDataManager.Save(bool uploadToCloud = false) dan daring pada UserDataManager.Save(bool uploadToCloud = true)

6.4.2 How to Use

Modul digunakan ketika pemain ingin menambah jumlah koin pada game dan akan berkurang jika player membeli level pada game dengan memanggil modul GameManager.Instance.AddGold(-upgradeCost)

7. Other Notes

Pembuatan game ini menggunakan package Firebase Storage dan Firebase Analytics dengan versi Firebase 8.3.0