My latest game, Rushline, gives you two choices on each turn: move your gem towards the target, or place a wall to make your opponent take a longer route. Both players are racing to reach the target first.

The rules are easy to explain. The decision becomes more interesting once both players start changing the board. A wall that delays your opponent might also get in your way. Moving straight towards the target can leave you open to a block on the next turn.

You can play Rushline in your browser (opens in a new tab).

To move, tap or click a highlighted square. To place a wall, select Wall, choose its orientation, and tap between cells. Each player has a limited supply of walls, so every placement uses both a turn and a resource.

That creates the central trade-off: how much progress should you give up now to make the other player's next few turns harder?

There is one important restriction. A wall must leave both players with a route to an available target. You can force a detour, but you cannot completely trap someone. That keeps the contest focused on finding and changing routes.

The target itself can change the strategy. Fixed keeps it in one place. Teleport moves it after every five turns, so a route that looks promising now may soon lead somewhere less useful. Flee lets the target move away from the players when it can. Grab 2 of 3 puts three targets on the board and makes the first player to collect two the winner.

Optional power-ups add another reason to reconsider your route. A pickup can freeze your opponent for a turn, swap your positions, remove an opposing wall, give you another wall, or warp you closer to a target. Turning them off makes it easier to concentrate on movement and wall placement.

You can play against the computer, share one device with another player, or create an online game and send someone the link or four-character room code. There are three board sizes, from Blitz to Marathon, and four computer difficulty settings, from Easy to Nightmare.

For a different kind of challenge, there is also a Daily Puzzle. It gives you a maze to navigate in as few moves as possible, with a move count, a par value, and a result you can share. It uses the same idea of finding a route, but gives you time to study the board without another player placing walls.

From a development perspective, one of the most useful parts of Rushline is the connection between the visible game and the algorithms underneath it.

The board is represented as connected cells. Walls remove connections between neighbouring cells. Before accepting a wall, the game checks whether each player still has a path to an available target. Breadth-first search explores those connections and calculates route distances.

That turns a familiar programming topic into something you can see: place a wall, change the connections, and the route changes with them.

The computer opponent builds on those distances. In Fixed and Grab 2 of 3 games with power-ups disabled, the stronger difficulty settings can look ahead through possible moves and replies. When targets move or power-ups are enabled, it uses a simpler approach that scores the immediate options.

For me, that illustrates an important point about game AI: the decision method needs to fit the rules. Looking several turns ahead is more useful when the situation is predictable. A moving target changes what the computer can reasonably plan for.

The browser interface brings those decisions together using JavaScript and an HTML canvas. Highlighted moves, wall previews, and turn indicators help explain what the player can do. Online play adds another layer: the client sends actions over a WebSocket connection and receives updated match state, with reconnection handling built into the flow.

Rushline gives me a practical way to connect game rules, pathfinding, computer opponents, and interface design in one project. Each part has a direct effect on the decisions a player makes.

Try Rushline (opens in a new tab) and see how your strategy changes once the other player starts putting walls in your way.