Back to projects

Published Steam Game

Solo-built C++ engine with FastAPI backend. Achieved 59k users and 6M+ hours played with a functional marketplace economy.

C++ engine / FastAPI backend 59k users 6M+ hrs played 18k lines C++

Steam game (Coconut)

Technical focus

  • Built a custom C++ engine on SFML for rendering, UI, animations, and the game loop.
  • Implemented inventory, Steam-integrated achievements, and trade-up contracts with marketplace support.
  • Designed retention and monetization: rare 1/2000 legendary drops, limited-time boosts, and friends-based drop multipliers.
  • Built a FastAPI backend on AWS with a C++ network client for events, announcements, and community features.

Results

  • 59k lifetime users, 4k peak concurrent, ~100 hour mean playtime.
  • 100k+ Steam marketplace item trades and 50+ direct in-game purchases.
  • 18,284 lines of C++ and ~1000 lines of Python backend powering live operations.
  • Solo shipped, published, and maintained the title on Steam.

Stack

C++SFMLSteam APIPythonFastAPIAWSSteam marketplace

Steam game (Coconut):

Solo developed, published, and advertised an item collection/idler game on the Steam marketplace.

Achieved:

  • 59k lifetime users
  • 4k peak concurrent users
  • 100 hour mean playtime
  • 100k+ items traded between users on the Steam marketplace

I set out to build a game that could run in the background, be engaging with achievements/chance, but overall low risk and no cost to play. Introducing Coconut.

Check out the trailer below, written, voiced, and edited by me (satirically serious tone compared to the lighthearted game):

Coconut - screenshot of game

I built my own game engine using pure C++ with the Simple Fast Multimedia Library (SFML) to handle window creation and basic shape rendering (polygons, textures). Building on top of these basic display elements I created clickable buttons, dynamic skin rolling animations, and multi-page navigation. At the time of writing this project has 18,284 lines of pure C++, and ~1000 lines of Python for the FastAPI backend. Linecount alone is by no means a measure of good code, nor even functional complexity, but if you trust that I write somewhat efficient code it gives an idea of the scale for this project including the engine and actual game.

The core gameplay loop follows waiting 2 hours to receive a case, and then opening that case to roll a random new skin for your coconut on display. These skins can be used in-game, sold to other players on the Steam market (revenue source from fees). The next most important gameplay feature targets user retention - a very rare achievement that permanently shows on your Steam profile. The 5 in-game achievements are deliberately crafted to pull users in, and keep them hooked. The first 3 achievements are trivially easy, while the last 2 are luck-based and very hard, driving players to grind for them. Specifically, rolling a legendary and possessing a legendary are the last 2 achievements which players easily spend thousands of hours on as the chance of rolling a legendary is extremely low (1/2000). This is the key driving factor of a mean playtime of ~100 hours.

Coconut - achievements screenshot

Once players are hooked on the hunt for a legendary, I implemented an opportunity to monetize and grow the playerbase. Purchasable in-game "boosts" increase the probability of receiving a legendary, and playing with friends increases drop rates further. These features drove increased engagement and real profit.

Supporting features required for the core gameplay aspects to work include the Inventory System (which must integrate with the Steam API), and trade-up contracts (convert multiple low tier coconuts into a case).

Coconut - inventory and trade-up contracts screenshot

A global leaderboard of total cases opened supports a second avenue of player engagement for those who already have all 5 achievements, and complements the achievement hunting progress by making repeated rolls feel meaningful and counted.

Coconut - leaderboard screenshot

To support limited-time drop events, update announcements, and the friends/community systems I implemented a FastAPI backend running on AWS with full network requests in C++ to communicate with it. I followed a principle of collecting the minimum user data needed to complete functional requests (IP, time, type of request such as fetching info on the latest update announcement), and aimed to keep server load low. The server features a client-side API interface for standard functions, and a secured admin API interface for pushing data or checking status of ongoing events, announcements, or server load.

I interact with my community and push updates periodically. This project has shifted to be mostly maintenance-mode as I focus on more high-value and engaging projects, but I am very proud of the game I built and user engagement metrics driven.