After having taught dozens of students how to use Construct over the past few years, there have always been a few conditions/events that are possible to implement with a combination of the current available ones, but perhaps that would be worthy of their own conditions/events? For pedagogical reasons, simpler is better, especially for students just starting out.
For example, the Sprite object has the action "Move at Angle". This action could be accomplished using a combination of the "Set Angle" and "Move Forward" actions (followed by restoring the original angle if necessary), but having the "Move at Angle" event available streamlines the process nicely and makes the software more approachable and user-friendly for newcomers.
So, without further ado, a few features that (in my humble opinion) would be beneficial to include (from an educational standpoint):
1. In some of the movement behaviors (8-direction, Bullet, Platform), there is a condition called "Compare Speed". It would be great to have analogous conditions available for comparing some of the other values associated to the behaviors: for 8-Direction and Bullet "Compare angle of motion", for 8-Direction and Platform "Compare VectorX" and "Compare VectorY", etc. The particular use cases I'm thinking of is for switching between sprite animations when characters move in different ways, and it feels unintuitive to need to do this using the System event to Compare Two Values. (Especially after students get used to using conditions like "Compare X" or "Compare Speed").
2. In the Properties pane for objects with Bullet behavior, I have found that students spend a lot of time looking for a way to set angle of motion (since you can set the speed of a bullet object here, it seems natural that one should be able to set a bullet's angle of motion as well).
3. There are a few mathematical functions, namely the distance function and the angle function, each of which take in four parameters (two pairs of x,y coordinates). I frequently have students calculate the distance from one sprite to another or angle from one sprite to another, and so students often type things like:
distance(Sprite1.X, Sprite1.Y, Sprite2.X, Sprite2.Y)
angle(Sprite1.X, Sprite1.Y, Sprite2.X, Sprite2.Y)
Would it be possible to implement "abbreviated" versions of these functions that could be called as follows?
objectDistance( Sprite1, Sprite2 )
objectAngle( Sprite1, Sprite2 )
(The names aren't necessarily perfect, but they get the point across.)
4. In terms of transitioning between Construct 2 and a traditional programming language (such as Java), one of the most important concepts is loops. The for-each loop an implemented in Construct is beautiful, but having come from a traditional computer science background, accessing the index variable in a For loop in Construct 2 seems "clunky", needing to access the value of the loop variable using "loopindex". What I would propose would be introducing a new condition: For Variable. When setting up this condition, you choose a pre-existing global or local variable (in the same way you choose an object in the For Each loop), and enter a starting index and an ending index (in the same way you enter them when setting up a For loop), and the value of the variable changes as expected.
Well, these are my thoughts and hopes. Here's hoping Ashley is reading