Inspiration

The story of LMS: Land of Magic Spices began two and a half years ago.

At the time, my future wife was playing a lot of Romance Club, a visual novel where players experience the story through their character and shape it through their decisions. Around the same time, we started watching Chicken Curry Dungeons, a Russian show built around Dungeons & Dragons, where people enter an unfamiliar world, play as their own characters, and go on an adventure together without knowing where their decisions — or the roll of the dice — will take them.

At some point, I told my wife: “I’m going to make a game like this for you. But it won’t be just another visual novel — I’ll make it even more interesting.”

That’s where the idea came from: combining these two worlds. We wanted the characters, relationships, storytelling, and meaningful choices of visual novels, together with the freedom, character stats, dice rolls, unexpected consequences, and sense of adventure of D&D.

What it does

Land of Magic Spices is a story-driven fantasy RPG for iOS and Android. The iOS version is already available, while the Android version is currently being prepared for release on Google Play.

Players explore fantasy episodes, make decisions, build relationships with characters, fight battles, and shape their own version of the story.

Choices affect the hero’s stats, relationships with other characters, the balance between virtue and vice, and future story branches. The consequences of some decisions carry over into later episodes and even future seasons.

At critical moments, D20 and D6 rolls determine the outcome of ability checks, attacks, saving throws, and healing.

Unlike a traditional visual novel, the story isn’t shaped by dialogue choices alone. It also responds to the hero’s stats and abilities, previous decisions, accumulated story flags, and dice-roll results.

At the same time, it is important to us that players don’t need to know D&D or understand tabletop RPGs to enjoy the game. We want to preserve the depth and freedom of a role-playing game while making it simple and intuitive enough for someone to open LMS for the first time and immediately start playing.

How we built it

The iOS version is built natively with Swift and SwiftUI, with SceneKit powering our physics-based 3D dice.

Content is delivered through an API, while the story itself is structured as a graph of interconnected scenes. This allows us to manage thousands of possible paths while keeping individual scenes independent.

As the project grew, we rewrote the architecture three times. Today, we use MVVM with ideas inspired by TCA / Point-Free, including dependency injection, shared persistent state, type-safe navigation, and a clear separation between UI actions and game logic.

We also built our own macOS application for story development. It visualizes the entire narrative as a graph, shows branches and their consequences, and allows us to manage tags and collaboratively edit the story.

AI has also become an important part of our content production pipeline. The game now contains more than 1,500 images, including comic-style sequences that visualize the consequences of the player’s actions, especially after battles.

Challenges we ran into

One of our biggest challenges was that there was no ready-made solution for the kind of game we wanted to build.

We aren’t dealing with a simple branching visual novel. Future scenes can simultaneously depend on previous choices, character stats, story flags, relationships, and dice-roll outcomes.

At first, we built the entire story in Excel. With a few hundred scenes, it worked. Once we passed 1,000 scenes, keeping track of every connection, flag, and piece of context became nearly impossible. That problem eventually led us to build our own macOS editor.

Another major technical challenge was character presentation. Our scenes are independent, but the engine still needs to understand the context between them. For example, should a character disappear between two scenes, or remain on screen because they continue speaking in the next one? We built a system that analyzes both the current and upcoming scenes and automatically handles these transitions.

The sheer amount of content was another challenge. Producing thousands of scenes and more than 1,500 visual assets with only two people would have been nearly impossible without our own tools and AI.

Accomplishments that we're proud of

The thing we’re most proud of is the scale we’ve managed to achieve with a two-person team — just my wife and me.

We have already written 12 episodes, with 3 fully implemented in the game. The first episode alone contains more than 3,000 scenes and 300 choices.

We built physics-based 3D dice, combat checks, cutscenes and comic sequences, quests, achievements, multiple endings, a decision journal, character profiles and abilities, Game Center integration, progress syncing, offline access, and an in-game store.

We’re also proud that when existing tools stopped working for us, we built our own. What started as an Excel spreadsheet eventually became a dedicated macOS application capable of managing a story with thousands of interconnected scenes.

And most importantly, Land of Magic Spices is no longer just an idea or a prototype — it’s a real, playable game.

What we learned

Over two and a half years of development, we learned that building a nonlinear game is about much more than writing lots of story branches. You need a system capable of remembering hundreds of player decisions and reacting to them thousands of scenes later.

We learned how to design an architecture for complex branching narratives, manage large amounts of state and dependencies, and build our own tools when existing solutions simply weren’t enough.

Rewriting the architecture three times taught us not to be afraid of abandoning solutions that no longer work as a project grows.

But perhaps our biggest lesson is that today, even a two-person team can build something at this scale. Our own tools and AI allowed us to create a game with thousands of scenes, hundreds of choices, and more than 1,500 images — something that would once have required a much larger team.

What's next for LMS: Land of Magic Spices

One of our biggest future goals is to turn LMS into a multiplayer experience for groups of friends.

We want to create a mode where several people can get together, open LMS on a large screen, and join the game session by scanning a QR code. The shared story and events would appear on the main screen, while each player’s smartphone would become their personal game interface.

Each player would have their own character, stats, and individual choices, while their decisions would affect the shared story and create consequences for the entire group.

We want to follow the same principle as in the single-player experience: players shouldn’t need to know what D&D is, study complicated rules, or have any tabletop RPG experience. Anyone should be able to join a session and immediately understand how to play.

In multiplayer mode, LMS would essentially take on the role of the Game Master itself — guiding the story, handling the rules, and reacting to each player’s decisions. Our goal is to preserve the depth and unpredictability of a tabletop RPG while making that experience accessible to any group of friends.

Built With

  • android
  • api
  • architecture
  • center
  • composable
  • game
  • ios
  • kotlin
  • macos
  • mvvm
  • rest
  • scenekit
  • swift
  • swiftui
  • the
Share this project:

Updates

Submission history