Quick paintover -
you can do even better by swapping the buttons out for doors and making the title screen into an intro room (require the player to jump to reach the doors); the player gets the chance to get used to the controls, which would help to compensate for the difficult first level.
this is impressive, wink. I'm not averse to difficult platform games, but if you take that route it's important that the player doesn't feel cheated by death. when the player is killed by the very tip of a spear (or by the end that isn't pointed) or misses a jump by a few pixels, the game goes from being challenging to unfair. Construct 2 gives you tools to fine-tune hit-boxes (see Set collision polygon).
if you're already using this, consider making it more merciful. this shouldn't require any events.
a lot of the difficulty for me came from difficult-to-control jumping; I would jump, lightly tap an arrow key, and still overshoot a moving platform. :x or I would tap the Z key and jump just as high as I would holding the key down. because jumping is the player's principle form of interaction with the game,
making its physics intuitive is a very high priority.
I died many times. >_< this isn't necessarily a bad thing, but it means that there shouldn't be much of a delay between death and a room restarting. canonical example is i wanna be the guy:
there is a death animation, but the player is immediately given the ability to restart a room by pressing the 'R' key. the wah-wah-waaaaah is amusing the first time, but you shouldn't give the player more than a second of down-time before letting him try a room again.
this is a quick diagram of the last level. something stands out: the player runs laps back and forth through the two spear-corridors. in total, the player crosses through those rooms five times. I would consider this fake difficulty.
jumping through a hoop once is interesting, but being told to do it five times consecutively adds playtime without making the challenge more meaningful. I understand you want to make the final level stand above the rest, but you should approach it as a culmination of mechanics instead of an exercise in frustration.
I can tell you put a lot of work into this! if you're interested in expanding on the concept before winning a license, or if you want to have more control over the engine, definitely read up on native expressions.
they are a lifesaver, particularly the ?
operator, which lets you evaluate conditions within in action, often allowing you to consolidate multiple events into one Every tick
or Every X seconds
. familiarity with their use means you can do a lot with very little, which is generally a good skill to have regardless of an event limit. I notice you were having trouble putting together a timer, but most of the functionality is already implemented for you. I put together a quick example of a one-event timer.
it isn't perfect, because construct's idea of what a second is isn't perfect either. that said, there are ways to make the timer more consistent without requiring more events, using native expressions: I leave this as an exercise to the reader.
I would offer more specific advice on events, but I can't see your code! consider going open-source in the future so that we can offer more specific advice.
I hope this helped, and I hope you continue to develop your game. c: