Online 4-In-A-Row is a naughts & crosses styled game that I have developed as a hobby to learn more about multiplayer games and create something that I can call a finished game for people to play.
This project uses the following Unity packages and other types of work that were not created by myself:
Visual effects
Audio (Ovani Sound)
Good times font
See the project's README for more details.
I wanted to create a fun multiplayer game that I could complete as a solo developer. So, I chose to use naughts & crosses as a foundation to build upon because it's a classic game that already works well. The simple rules and mechanics also meant that it was a great choice for creating my first online multiplayer game.
The game introduces new rules and mechanics through optional settings called mutators. Enabling these mutator settings can apply board-wide effects for all counters or spawn collectible power-ups for players to use. For example, the bridge-gap power-up changes the rules for placing counters to allow for more ways to play, while others allow players to interact with counters that have already been placed by blowing them up or flinging them around.
Almost all of the game exists on a screen-space or world-space canvas, the only non-UI game-objects are the counters and visual effects.
I created a user interface for a lobby browser, powered by Unity's Lobby package, so players can search, browse, and host public or private lobbies.
The scoreboard appears once a match has finished and provides details about each player's statistics during that match, with the best statistic in each category being highlighted. Implementing a scoreboard allowed me to learn about sharing custom data types over a network using Unity's Relay package.
The loading screen appears as a simple transition between scenes to mask the application essentially pausing while multiple clients load content separately. It makes use of Unity's network scene manager to ensure all clients see the loading screen appear and hide at the same time.
There are several types of menus featured throughout the game such as:
I utilised Unity's UI components to create a prefab of a scrollable list of options which is used by most of the menus. Scrollable elements are hidden with a mask when out of bounds and I did some extra programming to ensure the scrollbar is always the correct size and behaves correctly for different length lists.
I've considered how different screen sizes might affect the display of the UI and utilised Unity's layout components to ensure that the game maintains its intended layout across all sizes.
The game features local and online multiplayer for two players. I created a lobby system with the help of Unity's Lobby package that allows players to search, browse, and host public or private password-protected lobbies. The game's other multiplayer features are powered by Unity's Relay package, which allows clients to share data in the form of network variables and remote procedure calls.
GitHub has been an important asset in managing this project. I used it throughout the game's development to document issues, plan content for the game, and release builds for anyone to play.
I also made use of GitHub's projects feature which allowed me to create a planning board for sorting issues when planning what content to work on for current and future updates.