BlockIt is a game i created with a team of 5 other people as a part of a 2 week course in Unity. I coded the control mechanics and the powerup system. The challenge of the course was that we had to create a game that combine mechanics of two classical titles together.
Besides being a project about learning unity and scripting, this project was also a challenge in syncing the work between designers and programmers. How we could work together as 4 developers and everyone having a hand in play, due to the nature of group projects often having a flat hierarchy.
Play on Itch.io
When looking at the two titles that we chose, Lunar Lander and Tetris we got the base gameplay and what the player would control for free. A tetris style game loop, but instead of controlling rigid blocks that followed a grid, the player would control physical blocks that did not follow a grid. For rotating blocks i wanted the player to control their own rotation, not snap 90 degrees for more freedom.
To create this behaviour i simulated physics on the tetris blocks and systematically spawned them at the top of the screen, letting gravity handle the downwards movement. But for rotating the blocks, the instant approach would be to simply rotate the blocks. But this style of movement overrides the physics engine which could create problems when collisions happen. So to do it the correct way i handled rotation with applying torque. To create a max rotation speed i used angular drag, this also added the effect of making the tower the player is creating more resilient since the blocks rotate slower.
In the game there are power blocks to spice up the gameplay. Each power block has a unique ability that affects either you or the opponent in a powerful way, and is the main way to interact with the opposition.
I created a interface for these power blocks to allow my team to easily create new ones and hooking them up when coming up with an awesome idea. This suited our short time frame well, since it allowed us to create the base gameplay quick and from there just add cool power ups until the time was up.
When we now could create lots of cool new power blocks a problem arose. The players now had a lot of different power blocks that interfered with the enemy, a bit too much. The players had so much power to destroy that both players tower never got anywhere. We needed to create a solution to this to actually give the players the satisfaction of building a high tower.
To balance the power to destroy i created some power blocks that the player use to help themselves build a high tower. One power block that i created is the magnet block which locks the block that it touches to it, allowing the player to reinforce their tower to withstand the assault from the other player. Besides helping the players build their towers higher, these power to create blocks also adds a element choice to the attacking player, who now have a high prio block to try to destroy, creating another level of depth.
Now we had a lot of different blocks that did all sort of things. A problem now was that an effect was almost happening all the time, which made actually building a tower secondary, which we did not want. To tone down the effect cascade i created a electrical block which the power blocks need to touch to trigger their effect. This also added another element to think about when building your tower.
A cool effect that arose from this mechanic was that when your tower inevitably fell down the power blocks touched different electrical blocks on the way down which created cool cascade effects.