Infinite Go: Current State of the Game

As of the writing of this post, Infinite Go has yet to be released. Login/registration functionality has been implemented, and most of the purely front-end functionality has been implemented. I expect progress to version 0.0.0 to accelerate, at least to some degree, now that I have gained some familiarity with Node and the libraries I'm using for this project.

The login page has a somewhat minimalist look, emphasizing the logo I created for this project.
Screenshot of the game on mobile. It is currently possible to pan the gameboard around and place stones, however, this functionality has not yet been integrated with the backend.
Screenshot of the game on mobile with the sidebar open.
Screenshot of the game on desktop with the sidebar open.

Milestones

0.0.0:

Player Login/Registration

Email Verification

Frontend Stone Placement

Frontend Viewport Panning

Frontend Team Switching

Logout

Hi-DPI Support

Frontend Goban Tests

End To End Tests

Frontend/Backend Integration (Using Websockets)

Backend Stone Capture

Backend Stone Storage

0.1.0:

Territory Computation and Display

Global Territory/Capture Stats

Player Territory/Capture Stats

0.2.0:

Battleground-localized turn-taking

Players can vote on time limit for turns within a battleground

Players can vote to enable/disable turn-based play within a battleground

Battleground formation/expansion/contraction

Battleground merging

0.3.0:

Live map of all battlegrounds with player counts

Players can teleport to any battleground on the map

0.4.0:

Battleground-localized text chat

Battleground-localized team text chat

Global text chat

Global team text chat

0.5.0:

Players can favorite other players profiles

Players can teleport to the location of other players

0.6.0:

Achievements/Challenges

0.7.0:

Battleground-localized voice chat

Battleground-localized team voice chat

Infinite Go: Building an Infinite Goban

One of the projects I have been working on recently is an online, massively multiplayer game of go played on an infinite game board. This game will be available at infinitego.net upon release (currently, this redirects to the GitHub page for the game).

The Game of Go

If you aren't familiar with Go, it is 2 player strategy board game, where the goal is to capture more territory than your opponent. The game is played by placing black or white stones on the intersection points of a grid. A group of stones can be captured if all of the stones vertically and horizontally adjacent points are taken by the opposing color.

The white stone will be captured if black plays on the black circle.

White is not allowed to play on the point surrounded by black stones, as it would otherwise lead to whites immediate capture.
If white plays on the white circle, all of the black stones will be captured.
White is unable to capture these black stones. In go terminology, these black stones are alive.

Implications of Infinity

In traditional go, territory is typically counted at the end of the game, when no more useful moves can be made. Stones that are unable to be protected are captured and thus removed from the board. At this point, territory can be defined by the grid points surrounded entirely by one color of stones (or the edge of the board). An infinite game board will never reach this end-game condition, however, and determining whether or not stones are destined to be captured is a difficult problem. To simplify this, territory in infinite go will be defined as the grid points surrounded entirely by one color of stones. This means, for example, that if White surrounds an area of empty grid-points, those grid-points are considered to be White's territory. However, if Black places a stone on one of those grid-points, those grid-points are no longer considered to be White's territory.

The other major implication of playing on an infinite game board is that the game will never end, and therefore no team will ever win. There are a few different ways that I intend to make the game-play meaningful despite this. Firstly, territory, captures and the total number of points held by each team will be tracked continuously. Furthermore, players individual contributions to the territory and captures held by each team will also be tracked continuously. These contributions will be weighted — that is, if Alice and Bob capture a stone together by surrounding it with one of Alice's stones and three of Bob's stones, Alice will receive 0.25 weighted capture points and bob will receive 0.75 weighted capture points. There will be a number of leader-boards based around these stats. In addition to this, there will be achievements or challenges of some sort that players can complete. I have yet to work out the details of these challenges, as that functionality will be added a number of releases from now.

Multiplayer Mayhem

Traditional Go is a turn-based game, and thus a massively-multiplayer variant of go faces the challenge of not breaking the strategic game-play of Go that is enabled by its turn-based mechanics. It is clearly unreasonable to expect everyone currently in-game to take turns, and so there must be some sort of localized turn-taking functionality. I have decided to implement this through what I will refer to as Battlegrounds.

Battlegrounds

Battlegrounds define the areas within which players are required to follow precisely the same rules. Within a battleground, players may vote on whether or not to take turns, and if taking turns, the time each player has to make a move when it is their turn. Battlegrounds are formed by the overlapping viewports of two or more players.

Battleground boundaries are dependent upon the viewport history of the players in the battleground. Grid-points that were within a battleground stay within the battleground for some duration of time after they are no longer in the viewport of any players within the battleground. This allows players to move outside of the battleground area without immediately leaving the battleground.

When two or more battlegrounds are bridged by one or more player viewports, they must merge into a single battleground. All players in the merging battlegrounds will be notified of this change. Since the rules may not be consistent between the merging battlegrounds, a vote is forced, so that players must choose which battleground's rules to follow.