Developping a screen wrapping feature
We decided to base our game on a screen wrapping feature to match this game jam's theme, but its implementation wasn't as straightforward as expected.
Using Unity, playing with screen borders was far from impossible, but still took some time.
We opted to use trigger colliders to know when the player went out of bounds, but we had to change dynamically the size of that collider for every window resizing.
Fixing the aspect ratio was also important, otherwise players with different aspect ratio would have different ways to finish the puzzle levels.
Player teleportations had to be smooth; we did not want to have a blind spot where part of the player could not be seen.
One thought we had was about using cameras to focus on the part of the player we needed and print it at the right place; but given the many unknowns we had about such a system, we went for a simpler system.
We created fake characters to display when straddling two or more screen borders. After a while we decided to always keep 9 characters existing, separated by the screen height and width.
By teleporting the player when he went entirely out of bound, we were sure we would always keep all needed character models in screen.
We still have to take care about the collisions: the 9 characters could not use collisions at the same time, but by activating only the colliders visible on screen, the relevant collisions were present. The only special case was when only one side of the screen ended on a wall: to avoid a character appearing within a wall, we created an invisible collider to simulate the wall on the other side.
Overall, what made the feature harder to control was the player controlled camera. By choosing to allow camera moving, we added a more original feature to create richer levels, but also encountered a few buggy situations.
Fortunately the game ended up being playable, and building the prototype around that feature gave a pretty satisfactory jam game for us.
Here is the link if you want to play "Blank Tape"