-
Notifications
You must be signed in to change notification settings - Fork 0
Specification V1
Jinghan Wang edited this page Oct 8, 2016
·
26 revisions
-
Data model - Attributes [Date Scale: A-B-C-D-E-F-Today]
-
Age
- Number of days
-
HP:
- computed from other property in the past one week.
- When health goes to zero, Mi go die.
- This attribute also represents the max health in battle.
- Need an upper limit which correlates to level
- HP is initialised to 100 on first use
- HP =
MIN(HP_YEST * 0.95 + (1 - 0.95) * HP_YEST * HP_TODAY_FACTOR, LEVEL_LIMIT)
- HP_TODAY_FACTOR =
f((today_steps / today_steps_goal) * (today_distance / today_distance_goal) * (today_flights / today_flights_goal))
-
Strength:
- computed from human.steps (Goal is calculated from the average step counts of past 7 days.
- If data is not there (e.g. new iPhone), use the default value of 5000.)
- Speed should decrease based on time
- Strength =
(A + B + C + D) * 4 / 1000 steps + E * 6 / 1000 steps + F * 8 / 1000 steps + Today * 10 / 1000 steps
-
Stamina:
- computed from distance (Goal is calculated from the average walking+running distance of past 7 days.
- If data is not there (e.g. new iPhone), use the default value of 2500m)
- Stamina =
(A + B + C + D) * 4 / 1000 meters + E * 6 / 1000 meters + F * 8 / 1000 meters + Today * 10 / 1000 meters
-
Agility:
- computed from flights climbed (Goal is calculated from the average flight climbed of past 7 days.
- If data is not there (e.g. new iPhone), use the default value of 5)
- Agility should decrease based on time
- Agility =
(A + B + C + D) * 2 / 1 floor + E * 3 / 1 floor + F * 4 / 1 floor + Today * 5 / 1 floor
-
Mood:
- Min 50 to Max 100
- computed from interaction
- Each petting interaction contributes to 10 points, only 2 petting interaction is allowed every hour
- Mood will decrease automatically every hour
-
Goals (where X, Y, Z are user defined variables)
- First use of the app: average of last week or overall depends on HealthKit api
- If data from HealthKit is not available, set a default one
- Steps goal =
Floor(overall steps average) (Default: 4000 steps)
- Distance goal =
Floor(overall distance average) (Default: 4000 steps)
- Flights goal =
Floor(overall flights average) (Default: 4000 steps)
-
XP
- You receive 2 XP for each steps you are active the exercise
- You will receive a bonus 250 XP reward upon finishing 1 goal
-
Level
1 ---- 1500 ---- HP: 200
2 ---- 3000 ---- HP: 250
3 ---- 4500 ---- HP: 300
4 ---- 6000 ---- HP: 350
5 ---- 7500 ---- HP: 400
6 ---- 8500 ---- HP: 450
7 ---- 9500 ---- HP: 500
8 ---- 10500 ---- HP: 550
9 ---- 11500 ---- HP: 600
10 ---- 12500 ---- HP: 650
11 ---- 13500 ---- HP: 700
12 ---- 14500 ---- HP: 750
13 ---- 15500 ---- HP: 800
14 ---- 16500 ---- HP: 850
15 ---- 17500 ---- HP: 900
16 ---- 18500 ---- HP: 950
17 ---- 19000 ---- HP: 1000
18 ---- 19500 ---- HP: 1050
19 ---- 20000 ---- HP: 1100
20 ---- 20500 ---- HP: 1150
21 ---- 21000 ---- HP: 1200
22 ---- 21500 ---- HP: 1250
23+ ---- 22000 ---- HP: 1300
-
Age
-
How to store and what to store?
- Realm for iOS local database
- Exercise start time, end time, current mood
-
Computed properties' formula?
- Name generation
- User input names
- Running
- Playing
- Staring Roof
- Timestamp
- Mi data
- Mood
-
What to display in exercise view
- Human Calories
- Steps
- Distance
- Sports Mode
- Flights
- Mi reactions (you run I run)
- Changes in attribute bars
-
How to handle offline exercise data and its update
- Store a status snapshot when app goes to background.
- When use comes back, take the snapshot, calculate base on the time ecllapsed
- Calculation of mood
- Process data between last and current checkins
- data is calculated in the interval of 1 day
- update HP based on the data for each day
- calculation for offline data doesn't consider the mood of component in version 1
- Show latest data for today in a separate section
- Show the recent 7 days in charts (only organised by summary of the day for now)
- Older data are shown in tables (similar to Health.app)
- Exercise records
- Achievements
- Battle
- Mi Items