Khet - Laser Chess. Finalist in the 2007 toy of the year award.

The problem

I owned the physical version of Khet and wanted a way to play and experiment with the game digitally. Surprisingly, there were very few digital implementations available—only a paid PC version on Steam and no accessible mobile alternatives. I saw the project as an opportunity to recreate the game while deepening my knowledge of C# and WPF.

Your role

I designed and built the entire application independently, from the game engine and turn logic to the WPF user interface and animation system. The project involved implementing piece movement, laser interactions, game rules, rendering, and a sandbox "Free Play" mode for experimenting with different board configurations.

A challenge

One of the most difficult aspects was animating the laser as it travelled across the board. Rather than simply drawing a static beam, I wanted it to appear as though the laser was physically moving between squares.

To achieve this, each laser segment had to grow into a square while the previous segment disappeared behind it. This required carefully coordinating two asynchronous animation sequences: one responsible for extending the beam into the next square, and another that followed behind, retracting the previous segment. Synchronising these animations while keeping gameplay responsive took several iterations and significantly improved my understanding of asynchronous programming and UI animation in WPF.

Result

The project became a fully playable implementation of Khet that I regularly play with friends and family. In addition to the standard game mode, I added a Free Play mode that allows players to place pieces freely and create unusual laser paths, making it useful both as a sandbox and for learning the game's mechanics.

If I continued the project, my next major feature would be online multiplayer over TCP/IP, allowing remote games and laying the groundwork for features such as matchmaking and game replays.

Tech stack

  • C#
  • WPF
  • SQLite

← Back to projects