Studying in college is a lonely grind. So we wanted to build something where social pressure and deception force you to actually engage with the content. Among Us proved that social deduction is one of the most compelling multiplayer mechanics ever designed. Naturally, we asked: what if the tasks were instead real academic problems, and the impostor had to sabotage them with plausible-sounding wrong answers?
Publish or Perish is a multiplayer study game where 2-4 players upload their actual course materials (lecture notes, PDFs, slides) and AI generates a collaborative problem based on the content. One player is secretly assigned as the impostor and receives a hidden wrong directive: a subtly incorrect objective that makes their contributions look reasonable but leads to the wrong outcome. Players take turns contributing to the shared solution, then call "Lab Meetings" to discuss suspicions and vote out who they think is sabotaging the research. If the team identifies the impostor, their paper gets published. If not, the rival lab wins.
We built a Next.js 14 frontend in TypeScript with Tailwind CSS, deployed on Vercel. The UI features fluid WebGL backgrounds (LiquidEther), cursor-reactive glowing borders (BorderGlow), and ASCII-rendered text effects for a distinctive visual identity. The backend runs on FastAPI with python-socketio for real-time WebSocket communication, managing game state through Redis with TTL-based timers. MongoDB Atlas stores game sessions. Gemini 2.5 Flash with web search grounding powers the entire AI pipeline.
We originally planned to use K2 Think V2 as a reasoning layer for game balance, but the model would overthink and interpret prompts too literally, generating sabotage directives that were either undetectable or immediately obvious. We pivoted to Gemini handling the full pipeline. We also faced initial issues with Socket.io and Next.js App Router compatibility (serverless functions vs. persistent WebSocket connections),
We were able to implement live WebSocket turn rotation, voting, elimination, and impostor reveal (when none of us had built a multiplayer game before!). We are also proud of our visuals!
How to architect real-time multiplayer state across a React frontend and a Python backend. And that sleep is possible anywhere when one reaches a state of crashout in a large-enough magnitude.
Persistent lab reputation, a leaderboard where your "lab" accumulates a credibility score across multiple sessions over a semester. Classroom deployment mode where a professor hosts a session for 30+ students. Additional game mechanics: a "Diagram" mode for circuit schematics and biology pathways, and a "Proof" mode for discrete math and logic courses. Mobile-native support. And an open API so other educators can build custom game modes on top of our platform.
Log in or sign up for Devpost to join the conversation.