Adapted from my analog game Hexopolis for digital platforms, Hexopolis Mobile revisits the minimalist design that made the original board game so novel and captivating.
Planned for a release on PC followed closely by mobile platforms, this project is a demonstration of UI/UX design, and how certain elements from the analog UX can be translated over while the digital medium is leveraged to provide a new, unique experience. While no amount of code can replace the tactile feel and smoked-lumber scent of the handcrafted wooden tiles strategically falling into place, a digital adaptation provides many new opportunities.
With plans to implement both a PvP and an AI game mode, I am designing Hexopolis Mobile to bring new players into the Hexopolis community, provide accessibility options, and give existing fans a means to practice their skills across more locations.
Unreal Engine 5 | C++
October 2024 — Present
AI | Multiplayer | Strategy
I've recently implemented AI opponents for Hexopolis Mobile. These can be selected in the menu to compete—either with the player, or with one another.
One of the challenges in creating these AIs was to have them simulate a large number of possible moves based off of the pieces they held in their hand. I took inspiration from the minimax algorithm used by modern chess engines. However, Hexopolis Mobile can be more demanding in terms of performance, since the number of possible moves increases beyond that of chess. Furthermore, several moves can be made in succession on a given turn. This usually adds up to 10s of 1000s of possible move sequences per turn. Game information up until this point was mainly held in UE5's Actors. However, creating, destroying, and running simulations with these Actors is extremely costly, so I opted for a more struct-focused approach.
Once the AIs were able to calculate all of these possible moves, the next step I took was to have them analyze positions based off of a few simple factors, and select the best-scoring position. I also programmed heuristics to prune low-scoring positions early on when running simulations, rather than exploring them further. These measures improved both intelligence and performance immensely.
There's still work to be done on these opponents. Because Hexopolis Mobile is a strategy game and pieces can be placed in a finite amount of spaces, I opted for a Monte Carlo Tree Search algorithm. However, the program as it stands has not fully implemented this approach. For that, I'll have to program the heuristics to be a little stricter, and have exploration of choices be more probablity-based rather than pruning those choices entirely. It's important that these AIs navigate the search tree efficiently, because I want to push performance to the point that these opponents can calculate several turns in advance, not just one.
I'm considering even having the AI adjust its own scoring weights in order to optimize its strategy, a bit like a neural network. Finally, some degree of randomness will be introduced, especially for lower-level AIs. The current ones are pretty tough to beat!