DEVolution 001 - Marmart Cart

This blog covers my solo dev journey about designing and developing Marmart Cart from May 2025 - Dec 2025. [~12 minutes read]


Start with a bit of a history lesson: Marmart Cart was originally a student project I pitched and developed with several other students at CDM from October 2024 to December 2024.

At that time, Marmart Cart was a single-player prototype. The player controlled a leading shopping cart and could collect more carts to chain behind it like a snake. The goal was to grow as long as possible within 3 minutes. One crucial behaviour of the snake was that if the head (the leading cart) hit any part of its own body (the chain of carts), it would cut through it, leaving the rest unattached, moving freely around the level, waiting to be collected again. The design reason behind this behaviour was that I didn’t want the game to feel punishing. The physics-driven controls already had a bit of a learning curve, and I wanted to empower players with a sense of dominance as they built a longer chain, rather than constantly punishing mistakes.

I showed this version at the December 2024 Full Indie monthly meetup, where many playtesters appreciated the idea of “Snake with shopping carts” and liked how the movement felt. But the game clearly lacked depth. After about two minutes, players were already getting bored with the predictable and repetitive gameplay.

Yeah, a simple Snake remake isn’t enough to stay fun today.


May 2025 - “What if there are two players?”

Goal: May marked the first step of my solo dev journey. The direction was to turn Marmart Cart into a party game, because I saw that the snake foundation and shopping theme made the game inviting to casual players and non-gamers, while the physics-based controls still offered enough depth and freshness for more experienced players to master.
Build: I built a framework for local multiplayer support, allowing two players to grow their own chains of shopping carts and compete to be the longest.
Results: The public playtest at June’s monthly Full Indie Meetup went well and proved that this concept had great potential as a party game. I observed many fun moments where players kept cutting each other off and were fully immersed in the chaotic gameplay. However, this behaviour also revealed a problem: players could continuously sabotage each other simply by chasing each other’s tails. The fun was coming from what was basically a “design flop,” and it was obvious that no one would enjoy this endless loop of interaction after trying it for a bit longer.
Reflections: I was still in the magical thinking phase, where I would kind of just throw mechanics into this chaotic playground and see what naturally emerged from players. What I really learned this month is the difference between “this is funny for a few minutes” and “this is an experience players would come back to.” Starting from here, I began to feel the pressure of needing a real goal and an entertaining game loop, not just chaos, inside Marmart Cart.


Teamwork makes the dream work gif

June 2025 - “The Co-op Dream (and its quick death)”

Goal: It was the year when “friendslop” games were everywhere, and after witnessing the success of R.E.P.O. and PEAK, it was hard not to give co-op a serious try. I wrote a full design document from the ground up again, this time turning Marmart Cart into a co-op experience where players are shop workers using their chains of carts to protect the supermarket from falling apart under the madness of AI shoppers.
There were clear shared goals, and the gameplay revolved around communication and constantly avoiding each other’s “snakes.” It was heavily inspired by games like Overcooked, where I imagined a chaotic and funny co-op experience.
Build: I built a ton. The key co-op mechanic was that an “enemy” would generate two random paths on the map. If both players occupied their respective paths with their chains of shopping carts at the same time, the game would consider that the enemy was successfully defeated.
Results: The public playtest at the July monthly Full Indie Meetup was… okay. Nothing broke horribly, but nothing really caught fire either. What I observed, more than the smooth cooperation and high-fives I imagined, was frustration — especially when players failed to synchronize their timing and accidentally cut each other’s shopping cart chains.
Reflections: Emotionally, this month was rough. All the expectations and fantasy in my head, two players laughing and yelling:
“Go left!”, “I’ll grab that!”, “You deliver that!”…didn’t really show up. I had convinced myself that players would enjoy coordinating, dividing tasks, and feeling clever together. Instead, I hit a reality wall hard and learned a few big lessons:
1. We can’t evaluate a design without implementing/prototyping it.
On paper, the co-op design looked solid. But it wasn’t until I actually implemented and playtested it that I realized how many hidden constraints were coming from the existing mechanics.
2. Existing mechanics can quietly constrain new designs.
As mentioned earlier, the initial version set a rule: if the player’s leading cart hits any part of the chain, it simply cuts it off and leaves the rest free, without a hard punishment. This interaction:

  • Limits the possibilities for fair competitive play between players

  • Pushed my design toward co-op, because I thought I could “encourage players to avoid this behaviour.”

I trapped myself inside the fantasy that a co-op direction would magically solve or reduce the behaviour of players chasing and cutting each other. In reality, I ignored the fact that this interaction made the co-op experience:

  • More frustrating and confusing

  • And not a great fit for the game’s overall direction if this is all the interactions we have with other players

3. In a bottom-up game design approach, player behaviour can win over the designer’s intention.
Again: crashing into each other’s chains, cutting each other off. These were the behaviours players voted for with their actions. In this version, some players still laughed when they accidentally cut each other off. But once I told them (or they realized) this was considered bad behaviour and a punishment, they only felt frustrated afterwards when it happened again. The game and the designer were sending conflicting messages:

  • The sensation said, “This is funny.”

  • The rule said, “You’re not supposed to do that.”

4. Influencing player behavior is hard, and punishment-heavy design won’t be loved.
Looking back, the reason I made so many design decisions this month was to create a goal and influence player behavior, so that players would stay in the game loop and find joy within it. However, most of the features I added leaned on punishment and negative reinforcement to force players to change their behavior:

  • If you cut each other, one of you loses carts.

  • If you fail to complete the path-occupation mini-game, the enemy destroys nearby shelves and switches places.

On the other side, there was too little reward.
You could argue that having more VFX and SFX during enemy destruction would definitely help, but that’s still indirect and simply not enough. I should be influencing players more through positive rewards, not just punishing mistakes.
(There’s a great article on influencing player behavior that dives deeper into this topic, highly worth reading if you’re interested in this side of design.)

Tons of reflection, I know, lol. Despite the failure and the realization that I was basically tossing a whole month of hard work and hope into the graveyard, it still felt valuable. I captured way more insights than before, and I wanted to keep chasing the spirit of trying and failing.

And the best part? We failed really fast.

r.i.p gif with a man throwing dust into a graveyard

July 2025 - “Pivot to PvP like Snake.io”

Goal: I wanted to fully embrace competitive party chaos. If players loved messing each other up, then that should be the main gameplay loop, not just a side effect.
Build: Learning from last month’s mistakes, I first settled on the direction and then re-evaluated every existing feature, making changes wherever the mechanics didn’t support the new PvP focus. Some highlights:
1. Snake.io Battle rule:
If Player A’s leading cart hits Player B’s chain of shopping carts, Player A loses all attached carts and is dazzled for a short period. The unattached carts remain on the map, and any player can collect them.
2. Auto-powered leading cart:
The leading cart is now always moving (auto-powered). In other words, players can’t stop their carts anymore. This creates more tension, opens up space for aggressive moves, and encourages skillful competition.
3. Fuel and speed-up system:
I added a fuel mechanic and a speed-up system to give players more control over tempo and risk-taking.
4. Checkout system:
Players can drive their chain of shopping carts into any checkout lane and manually trade their carts in for potential points.
5. Cart rarities:
There are four rarities of shopping carts on the map, and each is worth a different amount of points when delivered.
6. Combo system and UI:
A combo system (with UI) requires players to deliver a set of carts with specific rarities to earn bonus rewards.
7. Power-ups tied to combos:
Power-ups are given as rewards when players successfully complete any combo.
Results: The public playtest at the August monthly Full Indie Meetup was okay. The majority of players found the Snake.io-style rules interesting to play with physics-driven carts. However, several big issues showed up:

  • Players were overwhelmed by the number of tasks they needed to juggle:
    collecting carts, tracking rarities, watching combos, managing fuel, and remembering checkout timing…

  • …all while keeping their eyes focused on the center of the screen to make sure their cart didn’t crash into the other player.

Because the goals were now strongly competitive, players suddenly started playing very passively:

  • They looked for carts only near the checkout area.

  • They tried to avoid the other player as much as possible.

The game was no longer inviting players to interact with each other. It didn’t feel like a party game, but more like two players playing side-by-side, separately, in the same arena.
Reflections: I expected that players wouldn’t fully understand all the features yet, as there were no tutorials, and the UI communication was rough. But deep down, I could feel that the real problem wasn’t just UI.

The problem was that I was trying to stack too many systems on top of chaos, and the result was encouraging passive gameplay rather than the wild, active, chaotic interaction I wanted.

So, even by July, I still hadn’t found the right kind of order inside the chaos. However, there were still moments where I saw players having an absolute blast: competing, blocking each other off, and battling with their chains of carts in this Snake.io playground. Those moments were exactly what I wanted to preserve and push toward.


August & September 2025 - “Doing subtraction instead of addition”

Goal: Clean up, stabilize, and try to clearly identify and solve the core issues of the game instead of just throwing more systems at it.
Build: I shifted into a “subtraction, not addition” mindset.

  • I removed the combo UI system completely and let players decide for themselves whether to:

    • Keep a longer chain of carts to gain an advantage (with higher risk), or

    • Check them out to get actual points (and lose that chain advantage).

  • I redesigned the positions of the checkout lanes on the map. Instead of being scattered around the shop, they were centralized in a single space so both players had to meet there more often.

  • I made power-ups more accessible by having them spawn directly on the map, instead of being tied only to combos.

  • I also made several improvements to the game’s accessibility:

    • Re-colouring the UI

    • Only providing players with the information they truly needed

Results: The public playtests at the September and October monthly Full Indie Meetups were better. I observed more delightful and chaotic competition emerging. Players were starting to capture the essence of the game: competing for resources on the map. However, the majority of players were still passive overall. A common pattern emerged:

  • A player would collect a small number of carts

  • Then hover around the checkout lane area

  • And simply wait for the checkout to open so they could safely cash in

Reflections:
These explorations did help me identify the core issues much more clearly:

  1. How do I reduce passive playstyles and encourage more interaction between players?

  2. How do I balance the game so it has enough elements (width and depth) while still being a fast-paced game where players’ eyes are glued to their carts?

Both of these are, to be fair, extremely challenging design problems that have to be tackled carefully.

What I believe is happening now is that since the game treats each cart directly as points. Every time a player wants to “attack” the other player by making them crash into their body, they are risking all of their points as well. On top of that, since checking out makes you lose carts, it becomes harder to compete in head-to-head combat with a shorter snake afterward.

This leads to a likely mental flow such as:

  • If I have more carts than the other player, I should check out soon to eliminate the risk of losing all my points.

  • If I have fewer carts than the other player, I probably won’t win a direct confrontation, so I should just look for more carts safely first.

Up until this point, I still hadn’t quite found the desired gameplay loop yet. But I did feel that I was getting closer…


October 2025 - “Defining the best core loop”

Goal: Trying to solve the two core issues for the game.
Build: I introduced a new thing to collect: grocery items.

  • Similar to empty shopping carts, items also spawn randomly on the map.

  • However, players can only collect and carry items when there is at least one empty shopping cart in their chain.

  • Every time a player collects an item, one empty cart in their chain becomes occupied with that item.

  • When the player goes to the checkout lane, they now check out items instead of carts, and after the checkout session, the player only loses the carts that were carrying items.

So, carts become the “containers,” and items become the actual “points.”
The other feature I changed is that now if the player hit themselves they lose all their own carts like the tranditional snake game.

Results: The public playtest at the November monthly Full Indie Meetup was great.

  • It was the first time I received direct praise from players saying things like: “Wow, I really like this gameplay loop.”

  • Many of them didn’t ask “Why did you do this?” or ask for clarification about the mechanics. Instead, they asked: “What’s next?” or “Will there be more types of content?”

These are exactly the kinds of questions that tell you people want to keep playing, not just hop on once and leave.

However, the issue of passive play still exists—but by this point, I already had some ideas and plans to tackle it.

Reflections: The core loop of the game is now really clear:

  1. Gather shopping carts

  2. Collect grocery items

  3. Check out items for points

This is a great step forward for several reasons:

  1. It not only makes more sense in real life—we use carts to collect items and checkout items—but also clearly differentiates items (points) and carts (tools). This addition somehow simplifies the game logic significantly, because the game now separates different elements with different, clear purposes:
    a. You want points → You look for items.
    b. You want to carry more stuff and grow longer → You look for carts.

  2. It makes the game’s goal clearer as a party game where players must sabotage each other for resources on the map. Because carts, items, and power-ups, the three main elements, now all contribute to that same goal in different ways, players can more easily:

    • Find reasons for their actions

    • Form strategies around what to prioritize

  3. Players with empty carts only now feel less risky and are indeed more encouraged to compete.
    They can take more chances, go aggressive, and engage with the other player without feeling like they’re gambling all of their points every time they interact.


its demo day ladies and gentlemen

November 2025 - “From ‘exploring’ to ‘proving it’s fun’”

Goal: Now that I had finally locked in a clear core gameplay loop, my goal for November was to introduce systems that naturally push players together and amplify the funniest moments. I also wanted to use Vancouver Game Expo (VGX) as a real test: “Can I prove the game is fun?” to a fresh, broad public audience.
Build: I built a lot again this month—but this time, I fully understood why I was adding each feature and was very careful not to overwhelm players or mess up the core goal and loop. Here are the most important changes:
1. New tier of grocery items
I introduced a new tier of grocery items to further signal to players that there are valuable resources worth risking and fighting for. The goal was to encourage and reward risky moves, making it clearer that some items are actually worth going out of your way (and into danger) for.
2. Event system to pull players together
I introduced a new event system that occasionally drops a large number of elements in a specific area on the map. For example:

  • A “cart restock” event spawns around 15 empty shopping carts in one area.

  • A “flash sale” event drops rare grocery items in one area.

The intention is that these events organically draw both players to the same spot, where funny accidents, intense competition, and chaotic interactions naturally happen.
3. Streak system + checkout rework

  • I added a streak system: if a player manages to submit more than 10 items in a single checkout session, they earn bonus points.

  • At the same time, I completely removed the “open/close time” from checkout lanes and made them always available.

  • I also added a new camera angle on checkout and paired it with a classic checkout scanner SFX on each click, to make the act of checking out feel satisfying and rewarding.

4. Five power-ups in two tiers
I redesigned a total of five power-ups, divided into two tiers, similar to grocery items:

  • The rare tier contains strong power-ups that can directly impact the length of carts (and therefore power in the match).

  • The normal tier contains power-ups that are less directly impactful but still disruptive and fun.

For example, in the normal tier, players can get a tomato power-up they can throw to hit other players and temporarily block their view. This approach allows me to give players normal tier powerups more frequently. If they were all in one tier, one issue happened last month is that players would feel disappointing if they knew they rolled a less powerful one. Now with complete separate tiers based on how powerful they are, players can strategically use normal tier to fight for rare tier powerups when there is the chance.
Results: The public playtest at Vancouver Game Expo was excellent!!! I ran the booth from 11 AM to 5 PM and there was basically no downtime, people kept coming to try the game. I also encouraged players to fill out a short survey and got 49 responses. One of the questions I asked was: “How was the experience of the core gameplay loop? (Gather carts → Collect items → Checkout)”
Here’s the data:

  • 44.9% rated the core loop “super fun” (5★) – 22/49

  • 42.9% rated it “really fun” (4★) – 21/49

  • Only 5 people rated it 3★ and 1 person dropped down to 2★

The numbers were a huge relief. But what really hit me was the behaviour: Kids & parents, students, devs, strangers, streamers were all laughing, shouting, sabotaging each other and you could tell they were having so much fun. I saw people dragging their friends come to try, I saw even little kids who (btw I was shocked) don’t know “snake” at all understood the game and had fun so quickly. It’s a perfect party game for families, friends. And hearing people told me things like:

“Please make this a full game.”
“I want to play this more with friends.”
“I’d stream this.”

Hearing that from strangers after six months of hitting walls was… honestly very emotional.
Reflections: Design-wise, I really got to experience how critical and impactful it is when you design to influence player behavior differently. For example, before this month, I was always worried that players would constantly collect a cart and immediately check out, without ever building a longer snake. So earlier versions used an open/close window on the checkout to limit player behavior through negative reinforcement.

  • “Checkout is closed now, you can’t cash in.”

  • The intention was: force them to hold onto carts longer.

However, in this latest version, I flipped the approach:

  • I used a bonus reward to encourage players to grow longer before checking out.

  • I even left the checkout station always open.

  • In other words, I flipped the negative into a positive, instead of punishing early checkout, I rewarded big checkouts.

The result was surprisingly different. I observed far more players willingly growing longer chains before checking out. Not because they were forced to, but because they wanted the bonus and the feeling of pulling off a big payday. And players loved this streak bonus:

  • They were fully engaged with the feeling of checking out many items at once,

  • Spamming the checkout button,

  • Watching their points shoot up.

For the VGX demo experience as a whole, this month reminded me exactly why I chose game development: I love watching people enjoy something I created. Laughing, yelling at each other, and creating tiny shared memories in front of my creation.

Nothing else feels better than that.


Final Touch – What I Want Future Me to Remember

“Simple, fitting, and fun” is not easy or obvious. It took six months of false starts, wrong fantasies, over-designed systems, and stubborn iteration. From the outside, the result might look straightforward. From the inside, it’s built on a pile of failed versions I’m actually really proud of.

  • It won’t be smooth. There were and will be multiple points where I seriously thought about giving up or freezing the project.

  • The core of Marmart Cart is a spontaneous, chaotic interaction. The game shines when players are pulled together, not apart.

My next plan for Marmart Cart is to build a 4-player version, where I can test a team-based game experience. I know the early co-op version failed badly, but I also now understand why that design was poor. Four players, on paper, again sounds like a fantastic direction—but I know I have to prototype it properly: a bigger map, rewarding experiences for teams, and systems that really support that style of play. I know I still have a long journey ahead.

This is just May to November, the first six months. And this is where the real version started.

Thanks for reading me yapping so much here lol. Hope and wish anything would help you or inspire you in your game dev journey, too. I’ll close this long “DEVolution blog” with a quote from Mark Zuckerberg about where big ideas come from:

Now it’s our turn to do great things. I know, you’re probably thinking: I don’t know how to build a dam, or get a million people involved in anything.

But let me tell you a secret: no one does when they begin.

Ideas don’t come out fully formed. They only become clear as you work on them. You just have to get started.
— Mark Zuckerberg
Next
Next

GDC T&T 001: “30 Things I Hate About Your Game Pitch”