Inspiration
Scholar Fight Club was inspired by the UFC. The structure of combat sports, divisions, ranked fighters, title belts, and challengers, maps perfectly onto how studying works. Every subject is a division. Every topic is an opponent. Every quiz is a fight. The goal was to take that same competitive energy from fight night and put it in the classroom.
What It Does
Scholar Fight Club is a browser-based studying game built around a full fighting game progression system. You create a fighter, pick one of 8 subject divisions (Math, Physics, Chemistry, CS, English, History, Biology, French), and fight opponents representing topics within that subject by answering multiple choice quiz questions.
Correct answers deal damage. Wrong answers cost you. Win fights to earn rank points and climb from Unranked to Top 15, Top 10, Top 5, Number 1 Contender, and finally Division Champion. Beat every topic in a division and you can challenge the belt. Win it and challengers come for you. You get 2 dodges before you are forced to defend.
The game tracks rank, grade (D through A+), fitness, streaks, badges, and fight history per subject. There are 1,516 unique questions across 160 topics, 4 fight modes (Ranked, Main Event, Title Fight, Fight Camp), pixel art animated fighters, 8-bit chiptune music, and a live leaderboard.
How We Built It
The entire app is built in React with no build step. It runs as a single HTML file with a separate compiled JavaScript bundle, loading React via CDN. All music and sound effects are generated in real time using the Web Audio API with no audio files. Animations are pure CSS. Progress saves to localStorage. The leaderboard mixes real players with AI opponents seeded by subject and date.
Challenges
The biggest challenge was balancing the game mechanics so the progression felt rewarding without being too easy or too grindy. Getting the rank point thresholds, fitness drain, and grade delta values right required a lot of iteration.
Building the music engine from scratch using the Web Audio API was also tricky. Getting chiptune-style loops to play cleanly, switch between tracks without overlap, and mute instantly without popping took significant debugging.
The title defense system required careful state management. A bug where the dodge count reset after a fight (due to a stale closure in React) took time to track down and fix.
What We Learned
Building a complete game loop with meaningful progression in a single React file without any game engine taught us a lot about state management at scale. Managing dozens of interdependent stats across 8 subjects, all updating after every fight, required careful architecture to avoid bugs.
We also learned that the framing of an activity matters as much as the activity itself. The quiz questions in Scholar Fight Club are identical to what you would find in a textbook. The difference is that inside a fight, with a timer counting down and rank points on the line, you actually care about getting them right.
Log in or sign up for Devpost to join the conversation.