I have experience with long-term projects, as I have done a few now.
In order to do such big project the following is a must if you want it to succeed:
Write! Write! Write!You need to write down all the idea's that you want to do for this project. Keeping them in your head will slow you down but furthermore it will make you forget some of the idea's.
When you write them down, speak out your thoughts rather than to first formulate it into an idea and writing that down.
example:
✔ I want to make an area that looks like a volcano. I want this area to be small, but at least have some interesting puzzle in it. The idea for the puzzle will be something using a code and a door. I haven't decided yet how exactly.✘ There will be an area with a volcano themed environment. Dimension 10 to 15 screens. Puzzle element: password protected door with a code or something...The reason why the second doesn't work, is it makes you think too much about how you are going to write it down, and that makes you loose the idea while writing it down. As you type down what comes up in you, you are able to write everything down.
Write as much down as you feel necessary. Too much is better than too little. Don't keep idea's in your head, write it all down.
Categorise and reformulateNow that you've written everything down, its time to put order into the chaos. Group ideas that are for the same area and make small sections. Also now would be a good time to think about the idea's you're having and write them down as "I want to do it like this." So "I want to make a level" becomes "Make a level."
ReadNow is a good time to read everything and see if it still makes sense. If not, correct where necessary.
Split where possibleAs you want to be building on something, you need to create little work projects. In order to do this, put all what you've written above into small sections (the smaller the better) and make small assignments for them. Now you'll have a huge list with items that you want to put in your level. This'll be your to-do list.
orderIf certain items cannot be executed from top to bottom, rearrange your list so it can be executed from top to bottom.
optional: planningOptionally, you can add to each assignment how long you think it will take you to make that. It will make it easier to keep your schedule, but sometimes its not possible to keep the schedule due to limited time. If you only want to work on it when you can, then you can skip this step.
execute and make your level!Now start doing your assignments from top to bottom. Once you completed a task, remove it from your list.
perfect practiceHere's an example on how you can make this all work.
You start by creating a directory called projects.
Inside this directory, you create another directory called: Making level x
Inside this directory, you create another directory called: ideas
Inside this directory we'll be planning our level. You create a lot of text files. For each textfile, you put up a small description for what the idea is as filename, and inside it, you put that particular idea.
Example:
area_volcano.txt
I want to make a volcano area that is small. It will have some brown with fire in it. It'll be an area that you pass through. Nothing really happens there, just to connect 2 area's.
Once you have a lot of textfiles, you're creating a new folder in your project directory called: Ideas refined. You'll be creating new text files there with special area's grouped together and written down as solid ideas. If you want, you can make a directory in the directory Ideas with the name "done" and move textfiles there once you added them to the "Ideas refined".
Now its time to read all the textfiles through to see if you missed anything.
If you now would get new idea's, its best to add the ideas as new "Ideas" textfiles first, and add them to the "Ideas refined" textfiles later.
Depending on how much text you have in total now, you can start to create your checklist. If the ideas are not that many, and you think that you can put everything in one big textfile, then do that. If you have enough text for such file to become too big and difficult to maintain, then do the following:
Create a new text document called to-do.txt in the main directory. Go through all the refined ideas, and create sections. Give each section a title using [title], and add them respectfully to the to-do.txt list.
Example:
area_volcano.txt
[area]
Create an area, small in size, of say 15 screens. Use tilesets 3 and 21. Make it mostly horizontal (max 3 screens up or down)
[add obstacles]
Edit the area, and add pits of fire/water to jump over and maybe create some jump challenges.
[add vegetation]
Add background vegetation to most tiles so it looks more sleak.
[add background]
Add background to the parts as if it looks that something happens in the background.
[add critters]
Add a maximum of 3 critters throughout the entire volcano level.
[add functionality]
Go through and see if shifts/signs/savespots/etc are required. If so add them at appropriate locations.
[add anything thats still missing]
Go through the area and see if it can be made look even better.
And in the to-do.txt:
area_volcano::area
area_volcano::add obstacles
area_volcano::add vegetation
area_volcano::add background
area_volcano::add critters
area_volcano::add functionality
area_volcano::add anything that is still missing
Now you can go through your to-do list and see if you can give items a timeframe.
to-do.txt:
area_volcano::area (3 hours)
area_volcano::add obstacles (2 hours)
area_volcano::add vegetation (2 days)
area_volcano::add background (5 hours)
area_volcano::add critters (20 minutes)
area_volcano::add functionality (1 hour)
area_volcano::add anything that is still missing
I didn't add a timeframe on the last item since its a check and can take from 15 minutes to 4 days depending on how creative we are.
Now you need to order it so it works, putting the area's in order of appearance. You can even say to design all the areas first and then add stuff like vegetation to all of them etc... Thats up to you.
Then its time to execute your list and remove items from it that are done. When checking an item, open the corresponding refined idea, and read what you wanted to do again and execute.
Sorry for the long rant