- What makes a good level? What makes it fun?
We'll come back to that one! Let's start with your difficulty curve question.
- And what is the perfect difficulty curve for such a game ? is it OK to challenge the player instantly or not, etc. ?
As a rule, the perfect difficulty curve generally looks (roughly) like this:
The game progressively gets harder, with slight dips in the difficulty to allow the player to relax after particularly tricky challenges.
As to how HARD a game should be generally, I think it really depends on who the game is for and what you want it to be.
Personally, I think a game should be as hard as it needs to be to show off it's mechanics; some mechanics pushed to their limit get really tricky.
- In my case, how can I improve the level design of my game?
First up, one of your jobs as a level designer is to be a teacher! There are three things you should keep in mind at all times when designing a level.
- What does the player know already?
- What do I want them to know by the end of level?
- How is the level going to teach them what I want them to know by the end of it?
This, and how you test the player's knowledge, is generally what a difficulty curve actually is.
However, it's important to separate the concepts of difficulty and punishment in your mind, as they're not the same.
Difficulty is how hard something is to do.
Punishment is how severe the consequences of failing to do it is.
Take this early level of yours:
You teach, and test, the double jump mechanic in this level.
While death isn't a huge punishment in your game due to the quick respawns, it's still probably not necessary as a consequence for failing.
If the consequence of failing my double jump simply meant I had to try again with better timing rather than an infinite fall to my death, it would teach exactly the same lesson, but be less frustrating (others have mentioned but I think there's something up with your doublejump code, it doesn't always trigger when I press 'w').
Same difficulty, lower punishment for failing.
So back to:
- What makes a good level ? What makes it fun ?
A good level tests only what you've been taught and teaches what you will later test, but that's not all.
A good level might offer epiphanies, 'aha, I get it!' moments that the player feels great for figuring out.
It might also allow the player to be expressive, using the mechanics of the game in a way that just *feels* good (see pop-corn enemies in a shoot-em-up game).
Level design is an art as much as it is a science, but it's great fun too!
If you can, try and test your levels on people you can watch play them. You don't need to ask their opinion, you'll quickly see where they get frustrated, and you'll be able to interpret what they were thinking by watching what they try to do.
In summary, teach the player, make them an expert at your game, then let them express that expertise in ways that feel good to do!