Tileship
What it is
A turn-based strategy game on an isometric tile engine, at an early stage. Today you can create an account and log in from the browser, and you land on the first test map: isometric tiles of grass, water and rock with your name on it. The turns and ships themselves are still to come.
How it's built
A C++23 client on SFML 3.1 with Dear ImGui for the login window, and a C++ server using ENet with accounts in MySQL. Packets, scenes, logging and launch flags come from kazilib, my own C++ library.
- One client, two targets: the same client builds as a Windows executable and as WebAssembly. In the browser its ENet traffic travels over a WebSocket to a gateway thread in the server, which treats each browser as a normal ENet peer.
- Isometric tiles: each tile is a diamond built from vertices in an SFML vertex buffer and coloured by its type; the test map comes from a compact string of tile types.
- Accounts: names of up to 32 letters, digits or underscores; the server stores a random salt and a SHA-2 hash of salt plus password, escapes every SQL value and creates its table when it is missing. A wrong password, a taken name or a lost server is shown in the login window.
- Reconnects: the client retries the server every three seconds after a lost connection.
- Linux server: the server builds for Ubuntu inside a Docker container and runs as a service; a browser test logs two accounts into the live game.
Timeline
I started it by hand in 2021, set up for two developers working together over Live Share; in 2026, with AI help, I moved it onto SFML 3.1 and kazilib and put it in the browser with a Linux server.
Technologies
- C++23
- SFML 3.1
- Dear ImGui
- ENet
- WebAssembly
- MySQL