⚔️ Overview

Empire of Smoke was inspired by the gap between deep strategy games and the success of daily-play habits on platforms like Reddit. Games like Catan and Civilization reward long-term thinking, but demand time and attention. Daily games like Wordle prove that short-session, puzzling play per day can be incredibly engaging.

We wanted to combine those two ideas: deep strategic consequences, delivered through a few carefully considered actions per day.

The result is a seven-day multiplayer empire-building game where, each day, players must choose how to spend their resources to expand, build, defend or attack their enemies. The player with the greatest empire, through earning Prestige points, will be declared the winner and secure a place on the Winners leaderboard.

📝 How It Works

Each game lasts 7 days, with 6 players per game. Note: You can play a Practice game (against CPU) to resolve turns instantly, to enjoy a full game without waiting for other players each day.

Players earn resources daily, and spend them to place actions, including:

  • Expanding into new territory
  • Attacking enemy territory to steal resources or invade
  • Fortifying your own territory
  • Building strategic buildings for more resources, military actions and to earn Prestige points

Players place moves simultaneously throughout a day, and all moves (including from CPU players if present) are resolved determinstically at midnight UTC. Players cannot see what moves other players make until the next day, so they must gamble on which tiles to attack, defend and expand, introducing an interesting psychological element. When a player logs in the next day, they see an animated turn report to explain what happened - the results of their actions, and any actions against them. The player with the most Prestige at the end of the 7 day period is declared the winner!

🔨 How We Built It

Empire of Smoke was built for Reddit using Devvit as a React web app. Game and player state is entirely stored and managed server-side using Redis, validating and saving every move a player makes. The client pulls game state as necessary, including polling for turn resolution to ensure the player is kept up-to-date.

Key technical elements include:

  • A highly optimised hex tile map rendering hundreds of tiles and icons, fully scrollable and zoomable
  • Solid game state progression across a fixed 7-day cycle
  • Per-client board visibility for fog-of-war and secret move placing
  • Deterministic turn resolution to ensure fairness and replayability, avoiding any concern of "who played first"
  • Intelligent CPU players to stand in place of human players, ensuring challenging full games of 6 players, regardless of human player engagement

🎯 Challenges We Faced

We believe our game, as a daily-play turn based strategy, is totally unique to Reddit. This meant we had to design a lot of the game entirely from scratch, including:

  • Designing a synchronous turn-based game with meaningful player <-> player interactions
  • Creating engaging decision-based tactical play with just one move per day
  • Balancing simplicity with strategic depth

While we believe the game stands well with strong strategy and risk-reward play, we have a lot of ideas we want to explore to take the strategy further without compromising simplicity. For example - a market to trade resources, and traps to introduce more risk to attacks.

💡 What We Learned

  • Designing for synchronous play and determistic turn resolution takes a lot of iteration - we plan to continue to iterate and improve beyond the competition to get the strategy feeling great
  • Polish is so important - we've added a lot of polish to selecting tiles and placing actions, which helps to make moves feel so much more impactful and exciting
  • User testing early is critical - the tutorial has undergone a few iterations based on user feedback, becoming much clearer in the process

Built With

Share this project:

Updates