What it is

Loaded Fate is a dice roguelike. Every night you come across a monster with a score, and you get five rolls to beat it. Keep the dice you like and reroll the rest. Any rolls you don't use turn into money for the shop, so every reroll costs you something.

I made it solo for the Shipaton. I really love games like these, and I hope you guys enjoy my entry for the Best Game Award.

How a run plays

You start with two dice. Between nights you spend your money at the broker's shop on new dice and perks, and every die and perk has a different ability. Some trigger the dice next to them, some copy their neighbor, one even lays new dice into your tray, and some eat other dice. There are a ton of fun combos to try out.

There are 139 dice and perks, and the fun is finding the combo that gets you through a run. A good run feels like a machine you built.

Where it goes

The road runs through three worlds and 18 zones, 72 nights in all, and every zone ends with a boss with its own rules, like taking value off for every reroll you've made, or hiding what your dice rolled until you bank. After night 72 it turns into endless mode, and the targets keep climbing until your tray can't keep up.

Everything you find ends up in the case: your dice and perks, 13 hats to put on your dice, and 36 achievements. There are four difficulties (Normal, Hard, Expert and Extreme), and you unlock each one by beating the one before it.

My favorite part: designing the art

My favorite part was designing the monsters and the dice. Every monster, die and zone is in one dark, painted style, and each zone's monsters are built around its theme, like Mother Dough in the bakery or the Examiner in the Specimen Hall. Every die has its own theme too: bone, glacier ice, a toadstool, a loaf of sourdough, an old TV, and many more.

How it makes money

The whole first world is free: six zones and 24 nights, start to finish. One purchase ($3.99 at launch) unlocks the other two worlds, the rest of the dice and perks, and endless mode. No ads, no subscription, no energy timers, no loot boxes, and nothing random is ever sold.

Roguelikes are made to be replayed, so you pay once and it's yours. The offer shows up when a free run reaches the end of the first world, which is right when you know if you want more. If you buy during the launch, you also get the Static Buddy, a launch-exclusive hat. RevenueCat handles the unlock, and Restore Purchases is right there on the same screen.

How I built it

I started the Shipaton a month late, on August 28, so I had 30 days to design, build and ship the whole game. It went live on the App Store on September 26. I'm not a programmer. I designed the game (the rules, the economy, every die and monster, and how it all looks and feels) and built it with Expo and React Native in TypeScript, Skia for the table, Reanimated for the chain, and RevenueCat for the unlock. The game logic is seeded and tested, so any roll can be replayed exactly, and the animations only ever play out a result that's already decided.

The hardest part

Two things almost broke me. First, Apple rejected the app twice saying they couldn't find the purchase, even though it worked fine for every one of my testers. It turned out Apple's review devices couldn't load the price from the App Store. I sent them a screen recording walking through the unlock step by step, asked for an expedited review, and it finally went live on September 26.

Second, I wanted the monsters to move. I made animated versions of all of them, scrapped them, rebuilt every one, and then scrapped them again because they looked cheap next to the still art. Cutting something I'd put that much work into was hard, but the game looks better for it.

What testers changed

I had 50+ people test it, and they helped shape the direction of the art, the dice abilities and a lot more. Plenty of the game changed because someone told me what confused them or what they wanted more of.

What's next

  • Keep improving the core loop
  • Leaderboards
  • Build a community with events and head-to-head runs on a set seed

Built With

Share this project:

Updates

Submission history