For larger projects, I use an A, B, C category To Do list:
A: Must get done immediately.
B: Will get done as soon as there is time.
C: Would be great, but can be sacrificed.
As items in A clear up, you move B items into A and break them down into individual tasks. If B is empty, you move C into B and break it down into chunks and then move these chunks one by one into A with a further breakdown.
C items would be something like dynamic weather system → B for dynamic weather system would be weather types and → A would be Rain, broken down into sound, visuals, functionality, etc. → Then snow, then wind, then sun etc.
For character movement, A would include user input, movement and animations. In the B, you would add things like climb, vault, swim. In C, it could be something like procedural interactions/animations. B items become faster to implement in A because it’s often just copy/paste work with some additional work. C items become easier to implement to B and then to A, because you have done the repetitive ground work so many times.
You can also add a D category for fancy incredible ideas that are absolutely unnecessary, aside from it being very cool. Once you have testers, a basic fanbase and the first players, you can let them vote on D items after the game has been published in the first version and bugs, errors and C items are completed.