Inspiration

We were clearly inspired by the LinkedIn daily puzzle game, Tango. Ever since the game came across our phone screens we were hooked. Between Callum and Jacob we have a combined 100 solves in the last couple of months alone! We also have a fond passion for video games, so putting a competitive edge on a normally quite quiet, timid game

What it does

It Takes Two To Tango (IT4) is a multiplayer, competitive puzzle racing game, where two players fight head to head in a challenge to see who can complete the puzzle the fastest. Following a few simple rules and a starting few symbols (Sudoku esque), you must fill out every square with a symbol whilst fulfilling all the requirements.

The rules are:

  1. There may be no more than 2 consecutive symbols in a row or column.
  2. There must not be more than 3 symbols in the same row or column.
  3. There are symbols across some of the edges, if the symbol is an = then the two symbols either side must be the same. If the symbol is an X then the two symbols either side must be different.

First to complete their puzzle wins!

How we built it

For the frontend we used react with Vite. React is very popular and our team was most familiar with.

We used a combination of Websockets and HTTP requests to and from a back end written in GO. GO is quite easy to write abstract structures quickly and efficiently.

Our plan then was going to be to queue up these requests in RabbitMQ to have them distributed out to the different services that need them. This would help in cases where member of the team not knowing GO, but wanting to interface with that section of the code, they can just take and send requests to the Message Queue. This also helps to ensure that all requests get fulfilled, even it overwhelmed. This was going to link into a node service which would interface with a MongoDB Database.

We unfortunately started to run out of time and focused our time on the most important part of the project, the gameplay!

Challenges we ran into

Our organization at the start of the project was not the best. With the understanding that we were all working on separate parts, we went off on our own with our own ideas of how to organise different aspects of the project, particularly when it came to the structure of data. One person would have all their ducks in a row, waiting only to rip out the roots of the code just because other people were on different wavelengths.

We also had challenges trying to accomplish too much, and having to decide what is in scope for the project. One of the main interests we had going in was the problem of how to generate starting boards states, which is a fascinating problem. But at the end of the day we couldn't solve that problem.

Many Errors! :)

Implementing an effective cluster using mongo atlas was difficult in of itself when we had no real tangible reason why we were implementing the technology to begin with and what problem it was solving.

Accomplishments that we're proud of

Despite our troubles in organization at times, I'm proud of the foresight we used to split our work out into different branches to avoid merge conflicts. We hardly had any merge conflict, other than a few minor ones here or there.

We're proud that we managed to idealize, develop and deploy a new spinoff of a well established game in just over 24 hours. After some brief play testing, it actually plays quite well and look professional.

What we learned

We as a team gathered from each other that we work very differently yet still work well as a team however, that we can teach each other technologies as we are attempting to solve problems.

What's next for It Takes Two to Tango

We are going to steal the moon.

Built With

Share this project:

Updates

Submission history