Hexasweeper
#portfolio, #project, #gamedev, #unity
May 6th 2019

Hexasweeper

Hexasweeper is a game I worked on in the period between my final internship and my exams. The project was for me to prepare for my finals, to build something for my portfolio and to have a fun project to work on in the period in between. I treated it as sort of a personal game jam in which I tried to combine as many of my skillsets as possible and create something that showcases those skills in a project that matches my previous work experience from my internships. I gave myself two weeks to complete this project because we had a two week period between the final internship and before school starts again. So this was the perfect opertunity for this.

The game is a Minesweeper clone but with the twist that the tiles are hexagonal instead of squares. The game featured an online leaderboard that showed the quickest completion times. All the graphics were made by myself and were inspired by the old school pinball game that came with windows. And with the fun inclusion of my own face in place of the well known smiley face on Minesweeper.

The reason for the hexagonal tiles I chose to use hexagonal tiles was I had some other projects before where I had build my own hexagon grid system to easily place objects along a hexagon grid. I wanted to use the things I learned in developing these systems in this project also because this was a nice way to incorporate this in a small project that I would be able to finish easily. For this project I didn't need these systems to be that complicated. I only needed it to place the tiles in the correct spot and create a node graph which I could use to check the surrounding tiles for their type.

Before building this project I was watching a well known video from Unite about a scriptable object architecture. I was experimenting with this before starting this project and decided to use it here as well. For a project of this size it seemed to be a fine solution and allowed me to create the game in a dynamic way where I could easily interact with the game while in play mode. Which is one of the strengths of this architecture. But looking back on it I realised that this way of building systems is not optimal and I wouldn't use this in the future going forward. But my critiques for this approach is a topic for another time.

During my internships I have worked a lot on different WebGL games which gave me a lot of experience in this topic. For my intake assignment for my internship at GamePoint I also build a WebGL blackjack game. Because of this, and because it would look good to have something interactable on my portfolio I decided to make this a WebGL game as well. This also allowed me to include a persistant leaderboard in the game which would connect to a database hosted on the same website. For this I had to write a small php script that I could make web requests to and that would connect to the database to retrieve and post new scores. This was one of my first times ever working in php and the script was not great. But for someone who has never worked with it before I was really proud to get it working.

This game used to be hosted on my old portfolio website which is no longer available. The game is currently no longer playable but who knows, I might make a remastered version some day to make it playable again.