We wanted to create a mobile application that would be able to bring multiple people together by letting them use their phones as a dynamically generated game board. Our application will allow devices to connect to each other in any orientation (landscape to landscape, portrait to landscape, etc) and thus create different game board configurations for whatever they desire. This coupled with the large number of devices we can support allows for a wide variety of game board / game possibilities.
What it does
Our application leverages the android native WiFi p2p (peer to peer) protocol in order to set up a network between the devices. The devices will then communicate over this network in a server - client connection that is set up on the fly between the two. The phones will then have a communication phase where they talk to each other and discuss things such as each other's screen resolutions, their screen densities, the 'border' they share, and several other parameters. These are then used to configure the game board on the fly.
How we built it
We heavily leveraged the WiFi p2p network capabilities in order to get our phones to communicate with each other. Upon finding and connecting to a device the users can then "swipe" on the phones in order to set up the game boundaries, so that they can use their phones in multiple different orientations. The phones will detect the direction of the swipes, find each others screen resolutions and determine the 'window' that each phone has between itself so that objects may pass through
Challenges we ran into
The largest challenges we ran into were essentially creating a client-server communication over the wifi p2p protoctol from scratch, and essentially creating our own game and have it talk over communication network. We had to cover all the cases that are normally covered in a network service, since we had to essentially create ours from scratch. We also had to create our own custom game that could communicate over this protocol effectively. Android WiFi p2p network was VERY finicky and did not provide the best consistency, despite that we were able to get around most issues.
Accomplishments that we're proud of
Creating our own WiFi p2p communications network from scratch. Normally this is simply solved in a few minutes however we had to create our own custom network since we are creating a dynamic p2p network for a custom game that can dynamically resize the board as people come in
What we learned
Android WiFi p2p communications protocol / networks. LibGDX used to help render our game and draw to phones
What's next for GameBoard
Creating different games! Branching off into other things (Reddit places, anyone?) such as collaborative art with a dynamic canvas.