Inspiration

Pirates are a pretty good reason to open a savings account.

In TradeWreck, losing your fleet costs you your hard earned cargo and cash, and the only thing that survives is your Savings account. We built a trading adventure around choices like that, with room for players to make mistakes and try again. We wanted younger players to encounter saving, borrowing, and interest while chasing a better ship or a profitable route.

Play TradeWreck | Open the Harbour Exchange

What it does

TradeWreck is a Roblox pirate trading game. Pick a captain, explore five walkable ports, and buy goods to sell at your next destination. You plan voyages on a sea chart, deal with storms, and fight turn-based pirate battles. If a fight goes badly, you can try to flee or throw your cargo overboard to improve your escape chances.

Back in port, earnings go toward repairs, more cargo, savings, or a larger fleet. Cannons protect your ships but occupy space you could use for goods. Loans let you expand sooner, but interest adds to your debt after each voyage. Accepted trades move prices in a market shared by the game servers, so a route's value changes as people trade.

Players can set savings goals and read a statement that separates trading, expenses, and transfers. Borrowing raises both your cash and your debt. Moving coins into savings doesn't count as income.

How we built it

We built the game in Roblox Studio, with Luau handling core gameplay, battles, trading, the interface, and player saves.

We use Capital One's Nessie API to create a synthetic customer and savings account for each career. Deposits, withdrawals, and savings interest create sandbox transaction records. Borrowing and repayment update a loan record, and the bank statement reads records back from Nessie. All coins are fictional. This API is what powers the banking system of the trading.

DeepSpace powers the economy web app. A TypeScript backend on Cloudflare Workers uses a SQLite-backed Durable Object to coordinate savings and the shared market. We publish market prices, economy totals, and anonymous trade activity into DeepSpace RecordRoom collections. The public Harbour Exchange subscribes to those records in real time, while DeepSpace authentication and role permissions restrict the operator view. Judges can open the board without signing in and select Live to see game-server data. Economy data is global across all servers, which is different from how traditional Roblox games are built.

Challenges we ran into

Our Nessie experiments changed the banking architecture. Deposits and withdrawals created records without changing the account balance, and repeating a request could create another record. We made our own durable ledger responsible for spendable savings, kept Nessie as the banking record layer, and added reconciliation to check the records against our operations.

A game server can also stop after the backend accepts a deposit but before the player sees the result. We save each operation before sending it and keep the same ID when retrying. We tested interruptions before sending a deposit and after the backend committed it. After restarting, the game applied each deposit once.

Playtesting found a more visible problem: the tutorial asked a player to sell cargo they had already lost. We changed it to recognize the loss and guide them back to buying goods. Losing a battle should leave the player with a way to continue. This was both a simple bug and accounting nightmare.

Accomplishments that we're proud of

We connected an addictive game loop to learning about banking records and macroeconomics. We also gave the game a unique look and sound. The interface takes the form of a merchant's harbour book, with parchment pages, illustrated goods, and painted controls. Music changes between port, sailing, storms, and battles. We wanted opening the market and preparing a voyage to feel like part of the same world.

What we learned

A successful API response, a saved player profile, and a transaction shown in a statement each prove something different. We had to work out which system owned each balance and how the others would catch up after an interruption.

What's next for TradeWreck

Next comes broader playtesting, including two published Roblox servers and physical phones, followed by economy tuning and improvements to the first voyage.

We also want to find out what players learn. After a few voyages, can they explain why a loan isn't profit and why they might leave some money in the bank?

Credits

Trading and voyage mechanics draw on Tradewinds Classic by Sandlot Games. We used Claude and OpenAI Codex for development assistance, ForgeGUI for generated visual and audio assets, and Suno for custom music and sound effects, alongside Roblox Creator Store audio.

Built With

  • capital-one-nessie-api
  • claude
  • codex
  • deepspace
  • luau
  • roblox
  • roblox-studio-mcp
  • suno
Share this project:

Updates

Submission history