Yeah. VVVVVV without flags may very well be in NP!

You're totally right! Here's a proof, assuming fixed room size.

For a particular set of crewmates rescued and trinkets collected, the current "status" of a player in a flagless VVVVVV game is determined by the following choices:

-Position (choices bounded by a linear function in the number of rooms).

-Velocity (bounded by a constant).

-Current gravity direction (2 choices).

-Location of most recent checkpoint (bounded by a linear function in the number of rooms).

-Current status of crumbling platforms in current room (bounded by a very large constant).

-Current location and velocity of enemies in current room (bounded by an even larger constant).

-Current location and velocity of moving platforms in current room (same).

-Whether each scriptbox or terminal in the current room has been activated (bounded by an

*even larger* constant).

-Whether grav lines, warp tokens, or platforms have been destroy()ed yet in the current room (8 choices).

And that's it, unless I'm forgetting something. So if we represent each combination of these choices as a vertex in a directed graph, and draw an edge from u to v if it's possible to get from state u to v in one tick of the game's clock (by some combination of pressing left, right, and/or action), then we've got a directed graph on a number of vertices that's quadratic in the number of rooms.

Some of those vertices (based on the position of Viridian) correspond to acquiring trinkets and some correspond to rescuing crewmen, and a solution involves picking those up in some particular sequence. But again, the number of trinkets (even ignoring the current cap at 20) and the number of crewmen (is there a cap? Even so....) is bounded by a linear function in the number of rooms.

So the total time to get from one position to the next trinket/crewman is O(n^2) since it's at most the diameter of the graph, and the total number of crewmates and trinkets is O(n), so the time to finish the level is O(n^3). Now granted, the cubic in question has a leading coefficient that's larger than the number of atoms in the universe, but a cubic is a cubic. So yay!

(Note: all of this falls apart if you let room sizes increase, like in The Tower but without the forced scrolling. I've almost succeeded in making a Towers of Hanoi puzzle using breaking platforms and moving enemies, to the point where I think a more clever designer could pull it off. Make a tall enough room and BAM! 2^n solving time.)

If I understood half of that... I might actually play it. But WHAT THE HELL ARE YOU EVEN TALKING ABOUT?!

Heh. No worries, you're only 14. But if you want to look up some of the terms you don't know on Wikipedia, I bet you'd find it enlightening and not that hard to understand. I learned most of this stuff when I was 16, and you seem like a reasonably smart kid, so it's worth a shot.

Awesome, awesome work. Always nice to learn something new. Nice to see such passion for this game. Great level design, too. Just one flaw - the crewmates can be skipped. I suggest you use gravlines to block the exit wires, and place a [flag(X, on) destroy(gravitylines)] script on top of the crewmate, and [ifflag(X, [destroy(gravitylines)]] on the entrances. That way you only have to beat the challenge once.

Yeah, I thought about that. But as far as the proof is concerned there's no problem with crewmates getting skipped. The point is that a solution

*exists* if and only if the formula can be satisfied, not that a solution is

*inevitable*. So we only need to "idiot-proof" the level enough that an incorrect player can't win. It's fine if a correct player can lose, as long as it's because of other decisions he made. I decided to leave it this way, just so that the level itself could be constructed without scripts. (Well, besides the music ones.)