Inspiration
When I play rule-based horror games and fiction, survival depends on learning the rules: every failed attempt teaches you where the boundaries are and how the world actually works. That started to feel surprisingly similar to working with large language models. We write system instructions, revise guidelines, and keep iterating until the model becomes more “obedient.”
That led to the core idea behind CounterPlot: what if the “rule-bound entity” is no longer the player, but the AI model itself? And what if the game is no longer about following rules, but about strategically writing and rewriting them? CounterPlot turns that thought experiment into a multiplayer storytelling battleground, where players fight for control by shaping the model’s persona, instructions, and expressive direction.
What it does
CounterPlot is a multiplayer story canvas. Players begin by choosing a storybook from a shared shelf and entering a narrative editor built around that story’s branching possibilities. At the start of the match, each player also receives mission cards for both main quests and side quests.
The game runs in turns. On each turn, players write an intent.md—including their desired next move, constraints, and narrative rules—to influence how the story should evolve. Their goal is to push the same narrative toward the endings described on their mission cards. These endings are usually in direct conflict, so players have to strategically use everything already established in the story—along with any new openings they can create—to bend the narrative in their favor.
Based on those competing intents, Gemini continues the story in real time and generates matching images plus hover-based motion clips, turning each turn into a more cinematic and multimodal narrative beat rather than just another block of text.
How we built it
I first used Google AI Studio to rapidly prototype the core front-end and back-end structure, which helped me validate that the idea was technically viable and worth pushing further.
After that, I used Claude Code inside VS Code to build out more of the actual implementation. This included back-end logic, multi-device synchronization for different player perspectives, and improvements to story continuation and image generation quality—especially in areas the initial prototype did not handle well.
Throughout the process, I also used Gemini Chat as an ideation partner to identify weak points, refine interaction patterns, and pressure-test the concept. I then translated those insights into clearer prompts and implementation instructions for Claude Code, which made the build process more precise and efficient.
Challenges we ran into
One major challenge was outcome evaluation. Early on, the AI judged results too evenly, which often created a shallow 49% vs. 51% ending and gave too much advantage to whichever player acted first. To address that, I introduced a dual scoring model: progress value + momentum value. I also defined threshold bands—open contest, trend forming, momentum amplification, and near lock-in—plus streak/trend counting, so narrative control could build over time in a way that felt more strategic and dramatic.
Another challenge was multimodal consistency. At first, the generated images often looked similar in the wrong ways—such as framing or pose—while the elements that should have stayed consistent, like characters and props, sometimes drifted. I had to keep iterating on the generation pipeline and prompting structure to make the outputs feel more varied while still staying connected to the same story world.
A third challenge was conceptual clarity. During development, AI often pushed the project toward a lower-level interaction model where players were simply prompting the next action of a specific character. But the differentiation I wanted was higher-level narrative control: not “what this character does next,” but “how the model frames, prioritizes, and expresses the unfolding story.” Making that distinction intuitive for players took a lot of iteration.
Accomplishments that we’re proud of
Improving AI generated stories' continuation quality
- Made the story feel more context-aware, so earlier events have a stronger influence on later scenes.
- Spent time improving causal logic, so story developments feel more connected rather than random.
- Added inspiration cards, autofill, and voice-to-text to reduce the fatigue of writing every turn from scratch.
- Worked on preventing the model from turning a small intended move into an overly exaggerated action, so player intent is less likely to be distorted.
Making outcome judgment more strategic
- Moved away from flat, overly even score results by introducing progress value + momentum value.
- Added threshold zones—open contest, trend forming, momentum amplification, and near lock-in—plus streak/trend counting to make control feel more accumulative over multiple turns.
- Introduced normal move vs. final move to better define intent scale and reduce the chance of reaching an ending in a single turn.
- Added side quests as extra scoring opportunities, which created more room for strategic play beyond only chasing the main ending.
Exploring richer story expression
- Connected Nano Banana for image generation, with hover-triggered motion clips powered by Veo.
- Made some progress on improving consistency in generated characters and scenes.
- Used a more tactile, diegetic UI to make the experience feel more immersive—for example, players choose books from a shelf, and even the tutorial is presented as a book rather than a generic popup.
- Built the experience to be accessible across multiple devices, so multiplayer interaction feels more natural than just switching tabs on one screen.
What we learned
I come from a UX design background and do not have a traditional coding background, so this was my first successful attempt at using AI inside an IDE to meaningfully modify and build software. That experience showed me how much AI-assisted development can accelerate idea execution for designers, especially when moving from concept to interactive prototype.
I also learned that deep ideation with AI quickly exposes technical questions I would not have naturally surfaced on my own—questions about causality, image control, structured data flow, and how to define the right JSON contracts to bridge one modality into another. To get more precise outputs, I had to think much more carefully about how information is parsed, preserved, and passed between systems.
Most importantly, this project changed how I think about building products. As a UX designer, I’m naturally drawn to front-end interaction and quick-start vibe coding. But this hackathon made me realize that the most important part of a complete AI product is its architecture: which compiler feeds which module, what data structures connect them, and how the whole pipeline transforms intent into interface, narrative, and media. Once the big picture is solid, the details become much easier to focus and refine.
What’s next for CounterPlot
Next, I want CounterPlot to become a more immersive audiovisual storytelling system. Right now it combines text, images, and short motion clips, but I would love to add ambient sound, voiceover, and richer scene-based audio so the experience feels less text-heavy and more emotionally absorbing.
I also want to keep improving image generation. In the future, I want directorial elements—lighting, composition, camera angle, character blocking, prop detail, and body-language tension—to become a more intentional part of the storytelling rather than just visual decoration.
Finally, I want to test the concept quickly with real users. My goal is to validate not only whether the interaction is fun, but also whether players truly understand the higher-level “prompt warfare” concept and where the current blind spots are in the experience.
Built With
- chatgpt
- claude
- gemini
- google-ai-studio
- vscode
Log in or sign up for Devpost to join the conversation.