Bad Link
Two-player co-op puzzle game. No engine. 48 hours. Mini Jam 111.
The Situation
Mini Jam 111's theme was Colors, with the limitation "You are your own enemy." I wanted to build a game where players constantly affect each other's ability to progress. So, I designed a mechanic that made cooperation essential while also turning your partner into a constraint. That idea became the foundation of Bad Link: two players connected by a tether, where every movement creates opportunities and obstacles for both players.
What I built
Bad Link is a two-player co-op puzzle game where each player controls a character linked by a tether. The tether is both a tool and a constraint — players use the tension between them to navigate obstacles and solve color-gated puzzles where each player can only interact with certain elements.
Everything is written in C++ with SFML handling windowing, rendering, and input. No game engine: physics, collision detection, entity management, and the tether simulation are all implemented from scratch.
The hard part
The hardest part wasn't the puzzles themselves — it was making the core mechanic reliable. With only a weekend to build the game, I focused on creating a simple tether system that was predictable and easy to design around. Once the mechanic felt stable, level design became much faster.
The second challenge was time. Building a complete game in a weekend meant constantly making tradeoffs between new features and polish. Several ideas, including a level editor and additional puzzle mechanics, were cut so I could focus on making the core gameplay feel complete and reliable.
What I'd do next
The level editor was cut for time — levels are hardcoded. A proper editor would make level design iterable and open the game to community levels. The color mechanic also has more depth than the jam version explores: right now each player has a fixed color affinity, but a system where players can swap affinities by colliding would create more interesting puzzle space.