-
Notifications
You must be signed in to change notification settings - Fork 2
/
Notes
152 lines (116 loc) · 5.53 KB
/
Notes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
Notes
# GameKit
• TODO: Use views instead of scrolling maps
# Bugs
• FIXME: When the player release the sword key before loading begins, his animations gets frozen
• FIXME: When the player tries to grab the NPC, he just goes through him (wtf?)
# Engine
## Entities
• TODO: Add a new class `BasicState` to replace `EasyBehaviour`
• TODO: Replace `BehavourComponent` by `StateComponent`
## Map
• DONE: Use real Tiled tileset + animations
• DONE: Remove `Scene::player`
• TODO: Use a single scene for all the maps
◦ TODO: Create a SceneObject to hold the map and its subobjects
◦ TODO: Add MapView and remove MapRenderer
## Sprites
• DONE: Update `SpriteComponent` with sprite states
• DONE: Move `Sprite` loading from `SpriteComponent` to `SpriteLoader`
• TODO: Rewrite effect system
• TODO: Use a config file for all the sprites
• TODO: Octoroks should use a `SpriteComponent`
• TODO: Improve palette handling
• TODO: Sort sprites before rendering
• TODO: Remove `Sprite::pause`
## Interface
• DONE: Add a new class `Text` and use it for hearts and rupees
• TODO: Merge `Text` and `TextBox`
• TODO: In `Text`, replace `Sprite` instances by a `VertexBuffer`
• TODO: Fix text blinking when opening a chest
## Global
• TODO: Views and controllers should hold a list of SceneObjects
• TODO: Check improvements in Lidonia and KubKraft
• TODO: Check if GameClock is really accurate (use `cpulimit`)
◦ TODO: Maybe use a delta time instead
• TODO: Add more debug tools, like a `Logger` class/namespace
• TODO: Add more unit tests
• TODO: Use `clang-format` and `clang-tidy` and write pre-commit hooks
* * *
# Gameplay
## Player
• FIXME: Link hasn’t two hitboxes, the collision matrix contains the movement vector (vx;vy)
→ That's why we need to test his direction
→ That's why the two hitboxes had close values
## NPCs
• WIP: Add `NPC`s
→ Create a class `Message` or `NPCMessage` which could contain actions,
conditions, etc.
▸ Improve `MessageBox` to handle choices
→ Check the real hitbox of Link thanks to `NPC`s which don't have rounded
corners
▸ Write a `MapCollisionHandler`
→ Fix remaining issues
▸ Fix the conflict between button A's action and `NPC`'s dialog
▸ Link can be displayed behind and in front of a `NPC` in the original game
→ FIXME: I think I'll need two sets of `SceneObjects`, the ones in front of the player, the others behind
→ Or maybe just using z-buffer...? T.T
▸ `NPC` animation should be stopped when his message is displayed
→ I think using `Sprite::pause` could be a good idea
## Weapons
• TODO: Power bracelet
◦ DONE: Pull state is not animated
◦ TODO: Can grab without pushing state
◦ TODO: Pulling is only possible from the opposite direction
◦ TODO: If link pulls too hard, he’ll be exhausted for a bit
• TODO: Improve sword positions
• TODO: Remove sword loading animation and replace it by palette switch
## Monsters
• WIP: `Octorok` should drop collectables
→ FIXME: Drop after the end of the death animation
• TODO: Implement projectiles for `Octoroks`
◦ TODO: Player can cancel them with a simple sword slash
## Collectables
• TODO: Improve `Collectable` drop movement and add shadow
* * *
# Old todo
## Refactoring issues
• FIXME: Fix grass objects hitbox
• FIXME: Fix player/button collision when using sword
→ Link shouldn’t move, the `Sprite` should (check the original game)
• FIXME: `Sword` position when player is hurt at the same time he uses it is weird
→ Slow down game to see what actually happens
• FIXME: `HurtMovement` can stop if player is stopped?
▸ Check the behaviour in the original game
→ Check `isMoving` flag
• FIXME: The tile under link should be destroyed by his spin attack
• FIXME: Find a better way to check if the player is facing a chest
## Other issues
• FIXME: When `Octorok` goes out of the map it throws an exception
→ “Fatal error at ResourceHandler.hpp:43: Unable to find resource with name: 2-0-1”
→ Why the `ScrollingTransition` is triggered with an `Octorok`
• FIXME: `Player` and `Octoroks` can be pushed out of the map during `HurtMovement`
→ Check in `PlayerFactory::mapCollisions`, if hurt so go to `ScrollingTransition`, else
block him
• FIXME: Octorok's `HurtMovement` speed too slow?
→ Check the original game, and adapt the speed
• FIXME: Improve palette system
→ Look at `KubKraft` and improve `Shader` class
→ Move palette system into other files
• FIXME: `Rupees` are added one by one to the counter in the original game
▪ There's also a sound effect
• FIXME: Check sound effect channels in real game
▪ For example, is it possible to hear sword loading sound anymore when link releases spin attack?
▪ It's not possible to hear text ‘clicks’ during ‘tadaaaaaaa’ (new item)
→ Define channel in constructor (and ‘load’), so from `Sound.cpp`
• FIXME: Fix `grassDestroy` animation
→ Find the *Oracle of* version
• FIXME: `Player` can be teleported when hurt
→ Check if player is hurt before teleportation
• FIXME: Find why collectables don't drop correctly on my eeePC
## Todo after engine is finished
• TODO: Improve game for `OpenGL ES` and try on Android
• TODO: Write a little game editor with `Qt` to add content if needed, it needs:
▪ TODO: `Map` editor
▪ TODO: `SceneObject` editor
> vim:ft=notes