Besides math and programming, what are your other skills and interests?
*
I have an idea of a puzzle game, not sure if it would be good or bad, I haven’t done even a prototype. So if anyone is interested, feel free to try… I hope I can explain it sufficiently clearly in words...
The game plan is divided into squares; I imagine a typical level to be between 10x10 and 30x30 squares large. Each square is either empty, or contains an immovable wall, or contains a movable block. The game consists of moving the blocks. Each move = you click a specific block, and try dragging it in one of the 4 directions, and either it is possible or not.
A block cannot move into a wall. A block can push another block. A block does not pull another block. For example, if there are 3 blocks in a horizontal line, and you click the middle one and try dragging it to the left, two blocks will move and the third one (the one on the right) will stay there. So far, it should be completely obvious, like what you would happen if you moved some actual objects.
In addition, each side of a block (or a wall) may be empty, or may contain a colored “magnet” (or perhaps a “lock” is a better metaphor). These add the following constraints for the movement of blocks:
Magnets of different colors can never touch each other. If one block has a green magnet on the right side, and another has a blue magnet on the left side, you cannot put them next to each other so that the magnets would touch. (If you try to do that, the block refuses to move. Graphically, I imagine that it would move like half the way, and then you would get a visual indicator where is the problem, and when you stop dragging, it will return to its original place.) Though it is okay if the blocks touch on their other sides, where they don’t have magnets.
Magnets of the same color cannot be connected or disconnected by a move in a perpendicular direction. If one block has a green magnet on the right side, and another has a green magnet on the left side, if you move them next to each other, then when you try moving one of them up or down, it drags the other block along with it. Either both blocks move (in a direction perpendicular to their magnetic connection) or neither does. In a direction parallel to the magnetic connection, either one block pushes the other, or they disconnect if you pull them apart (i.e. the magnets do nothing when moving in a parallel direction).
A magnet can touch a side without a magnet, doing so has no effect as if the magnet is not there.
Or, to describe it more like a programmer:
You choose a block and a direction to move. Now we create a set of “blocks that will move one step in given direction” like this: At first, the set contains the selected block. For each block in the set, a block next to it in the selected direction is also added to the set (pushed by the previous block). For each block in the set, a block next to it in a perpendicular direction is also added to the set if they are connected by magnets of the same color. We keep applying these two rules until we can add no more blocks to the set.
Now we check what would happen if blocks in the set moved one step in given direction, and all other blocks stayed at their place. If any block would move into a wall, the entire move is cancelled. (A block cannot move into another block, because by the set creation algorithm, that other block would also be in the set, and thus it would also move.) If two blocks—one that moved, and one that didn’t move—would end up next to each other so that their magnets would touch each other (regardless of their colors), the entire move is cancelled. In both cases, the place that causes the problem is visually indicated to the player. (That is, even if you already know that the move is cancelled, keep checking which other places you also need to highlight. Then move all blocks in the set a few pixels in a given direction, so the player sees which blocks would be pushed along.)
If there is no problem, the blocks in the set all simultaneously move one step the given direction.
I think that these rules are time-reversible; whatever move you make, you can revert it by one or more moves. This is a desirable property, because it means you can never get stuck in the game. (It also means you can automatically generate levels by generating a solution and then making a few hundred random moves.)
A magnet can also be on the side of a wall. (The wall is basically a block that cannot be moved.)
The puzzle is solved when each magnet is connected to a magnet of the same color.
For bonus points, include a visual editor, and maybe an export/import of levels to a text file.
Besides math and programming, what are your other skills and interests?
Playing and composing music is the main one.
I have an idea of a puzzle game, not sure if it would be good or bad, I haven’t done even a prototype. So if anyone is interested, feel free to try
Yeah, you’re missing out on all the fun in game-making :-) You must build the prototype yourself, play with it yourself, tweak the mechanics, and at some moment the stars will align and something will just work and you’ll know it. There’s no way anyone else can do it but you.
Besides math and programming, what are your other skills and interests?
*
I have an idea of a puzzle game, not sure if it would be good or bad, I haven’t done even a prototype. So if anyone is interested, feel free to try… I hope I can explain it sufficiently clearly in words...
The game plan is divided into squares; I imagine a typical level to be between 10x10 and 30x30 squares large. Each square is either empty, or contains an immovable wall, or contains a movable block. The game consists of moving the blocks. Each move = you click a specific block, and try dragging it in one of the 4 directions, and either it is possible or not.
A block cannot move into a wall. A block can push another block. A block does not pull another block. For example, if there are 3 blocks in a horizontal line, and you click the middle one and try dragging it to the left, two blocks will move and the third one (the one on the right) will stay there. So far, it should be completely obvious, like what you would happen if you moved some actual objects.
In addition, each side of a block (or a wall) may be empty, or may contain a colored “magnet” (or perhaps a “lock” is a better metaphor). These add the following constraints for the movement of blocks:
Magnets of different colors can never touch each other. If one block has a green magnet on the right side, and another has a blue magnet on the left side, you cannot put them next to each other so that the magnets would touch. (If you try to do that, the block refuses to move. Graphically, I imagine that it would move like half the way, and then you would get a visual indicator where is the problem, and when you stop dragging, it will return to its original place.) Though it is okay if the blocks touch on their other sides, where they don’t have magnets.
Magnets of the same color cannot be connected or disconnected by a move in a perpendicular direction. If one block has a green magnet on the right side, and another has a green magnet on the left side, if you move them next to each other, then when you try moving one of them up or down, it drags the other block along with it. Either both blocks move (in a direction perpendicular to their magnetic connection) or neither does. In a direction parallel to the magnetic connection, either one block pushes the other, or they disconnect if you pull them apart (i.e. the magnets do nothing when moving in a parallel direction).
A magnet can touch a side without a magnet, doing so has no effect as if the magnet is not there.
Or, to describe it more like a programmer:
You choose a block and a direction to move. Now we create a set of “blocks that will move one step in given direction” like this: At first, the set contains the selected block. For each block in the set, a block next to it in the selected direction is also added to the set (pushed by the previous block). For each block in the set, a block next to it in a perpendicular direction is also added to the set if they are connected by magnets of the same color. We keep applying these two rules until we can add no more blocks to the set.
Now we check what would happen if blocks in the set moved one step in given direction, and all other blocks stayed at their place. If any block would move into a wall, the entire move is cancelled. (A block cannot move into another block, because by the set creation algorithm, that other block would also be in the set, and thus it would also move.) If two blocks—one that moved, and one that didn’t move—would end up next to each other so that their magnets would touch each other (regardless of their colors), the entire move is cancelled. In both cases, the place that causes the problem is visually indicated to the player. (That is, even if you already know that the move is cancelled, keep checking which other places you also need to highlight. Then move all blocks in the set a few pixels in a given direction, so the player sees which blocks would be pushed along.)
If there is no problem, the blocks in the set all simultaneously move one step the given direction.
I think that these rules are time-reversible; whatever move you make, you can revert it by one or more moves. This is a desirable property, because it means you can never get stuck in the game. (It also means you can automatically generate levels by generating a solution and then making a few hundred random moves.)
A magnet can also be on the side of a wall. (The wall is basically a block that cannot be moved.)
The puzzle is solved when each magnet is connected to a magnet of the same color.
For bonus points, include a visual editor, and maybe an export/import of levels to a text file.
Playing and composing music is the main one.
Yeah, you’re missing out on all the fun in game-making :-) You must build the prototype yourself, play with it yourself, tweak the mechanics, and at some moment the stars will align and something will just work and you’ll know it. There’s no way anyone else can do it but you.