Snakes and Ladders - Peer Feedback & Review
A compilation of peer feedback received during our AP CSP crossover review for the Snakes and Ladders educational game project.
- Project Overview
- Team Contributors
- Akhil
- Moiz
- Samarth
- Arnav
- Ethan
- Aneesh
- Team Contributors
- Key Features Reviewed
- Perry
- Glows
- Grows
- Vivian
- Glows
- Grows
- Hope
- Glows
- Grows
- Anika
- Glows
- Grows
- Avantika
- Glows
- Grows
- Lilian
- Glows
- Grows
- Virginia
- Glows
- Grows
- Nitya
- Glows
- Grows
- Aditya
- Glows
- Grows
- Darshan
- Glows
- Grows
- Cyrus
- Glows
- Grows
- Rishabh
- Glows
- Grows
Project Overview
Our Snakes and Ladders game is a gamified educational platform designed to teach AP Computer Science Principles through an interactive board game experience. Players progress through five lessons (unlocking board sections via completed_lessons[] and unlocked_sections[]), answer 50 CS questions across a dice-based board (squares 7–56), and use earned “bullets” as currency in three multiplayer modes: cooperative Boss Battle (up to 10 players with powerups and lobby chat), competitive PvP Arena (1v1 with auto-matchmaking and dual-ready system), and SlitherRush (a slither.io-inspired 32-player snake arena with a 30Hz server-authoritative tick loop). All game state persists via the SnakesGameData SQLAlchemy model with JWT-authenticated REST APIs and real-time WebSocket sync.
Team Contributors
Akhil
Scrum Master / Multiplayer & Victory
Moiz
DevOps / Authentication Lead
Samarth
Lesson System Developer
Arnav
Boss Battle & PvP Developer
Ethan
Question System Developer
Aneesh
Game Board Lead
Key Features Reviewed
- Login system with JWT authentication and game integration (HttpOnly cookies,
@token_required()decorator) - 5 interactive CSP lessons with progressive section unlocking (
half1→half2→bossviaunlocked_sections[]) - Leaderboard system with real-time updates (
GET /api/snakes/leaderboard, sorted bytotal_bullets) - Multiplayer functionality via WebSockets on a dedicated Socket.IO server (port 8500, eventlet async)
- Boss battle with cooperative gameplay — up to 10 players, server-authoritative collision resolution, 4 powerup types, pre-battle lobby chat, per-player battle stats tracking
- PvP Arena for competitive 1v1 matches — auto-matchmaking (
get_or_create_open_room()), dual-ready system, server-authoritative position corrections, in-arena chat - SlitherRush minigame — slither.io-inspired multiplayer snake arena with 30Hz server tick loop, up to 32 players per arena, HP system, shooting mechanics, kill/death/score tracking
- Active Players tracking (
ActivePlayersAPI— queries records updated within last 10 seconds) - Game completion flow (
CompleteGameAPI) and full progress reset (ResetProgressAPI) preserving champion status - Hall of Champions (
ChampionsAPI) showing all completers ordered by completion time - Lives system (5 lives per player), visited squares tracking, and autosave (10-second intervals)
- Admin system for user management
Peer Feedback Summary
Individual Feedback
Perry
Glows
- Frontend uses a well-integrated login system — JWT tokens stored in HttpOnly cookies via the
@token_required()decorator, with guest/demo mode usingsessionStorageas fallback - 5 lessons effectively cover CSP and College Board content — completion tracked via
completed_lessons[](MutableList/JSON column), unlocking'half2'after all 5 are done - Leaderboard system with backend integration works smoothly —
GET /api/snakes/leaderboardqueriesSnakesGameDataordered bytotal_bullets DESC - Multiplayer function allows users to see other players and their stats in real-time — Boss Battle supports up to 10 players per room, PvP Arena has auto-matchmaking, SlitherRush supports 32 players per arena
- WebSockets implementation for multiplayer is technically impressive — dedicated Socket.IO server (port 8500, eventlet async) with
boss_battle.pyhandling Boss/PvP events andslitherrush_manager.pyrunning a 30Hz server tick loop - Microblog feature on login page adds community engagement
- Functional admin system where admins can edit users
- Real-time user data pulling demonstrates strong backend architecture —
ActivePlayersAPIqueries records updated within 10 seconds;ChampionsAPIreturns all completers ordered bycompleted_at
Grows
- UI needs some cleanup and polish for a more cohesive look
- Login system has some issues that need to be fixed
Vivian
Glows
- Presentation (5/5): The group was very engaged in explaining their game and answering questions
- The group was organized in their presentation and knew when each person was to speak
- The leaderboard effectively visualizes all players and their bullet counts — powered by
LeaderboardAPIreturning top players sorted bytotal_bullets DESC, plus theChampionsAPIshowing all game completers - The engaging interactive learning style allows users to learn through playing games — 5 lessons unlock the question board, 50 questions unlock battle modes, bullets earned carry over as ammo
- Users who want to learn computer science would genuinely enjoy this approach
Grows
- Content (4/5): Make it more clear on the front page that it's a computer science lesson
- The educational purpose wasn't immediately obvious until starting the game
- Consider adding clearer signals on the homepage about the learning objectives
Hope
Glows
- Content (5/5): The first two pages were interesting and did a good job of teaching while still keeping the experience engaging and fun —
game-board-part1.htmlcovers lessons and character select,game-board-part2.htmlhandles the dice-based question board - Value (5/5): The boss battle was very fun to watch, even without playing it — real-time canvas rendering with boss AI patterns (dash, zigzag, chase, circle), 4 powerup types spawning every 5 seconds, and server-authoritative collision resolution
- Added an exciting, interactive element to the learning experience — now expanded with three battle modes: Boss Battle, PvP Arena, and SlitherRush
Grows
- Presentation (4/5): There should be clearer transitions between each page
- It was confusing to understand how the pages were connected at first
Anika
Glows
- I like how this is multiplayer and how it still incorporates the learning aspect of CSP — three modes now: Boss Battle (up to 10 co-op), PvP Arena (1v1 with auto-matchmaking via
get_or_create_open_room()), and SlitherRush (32-player snake arena) - The combination of gaming and education creates genuine motivation to learn
- The bullet currency system cleverly ties learning outcomes to gameplay rewards —
total_bulletsaccumulates from lessons (POST /api/snakes/complete-lesson) and correct question answers (POST /api/snakes/answer-question) - Boss battle mechanics are engaging and encourage collaboration — pre-battle lobby chat (
boss_join_lobby), in-battle group messaging, per-player stats (damage_dealt, bullets_hit, powerups_collected), and victory stats screen on boss defeat
Grows
- Consider adding progress indicators to show how far through the curriculum players are
- A tutorial or onboarding flow would help new users understand the game mechanics faster
Avantika
Glows
- Overall the game is very clean and interesting
- The visual design is appealing and the arcade aesthetic fits well — custom
snakes-theme.csswith pixel-art character sprites across all four characters (knight, wizard, archer, warrior) - Multiplayer elements add significant replay value — three modes with distinct mechanics: co-op Boss Battle, 1v1 PvP with auto-matchmaking, and free-for-all SlitherRush
- The question system effectively tests knowledge without feeling like a quiz —
visited_squares[]prevents re-answering;GetUnvisitedSquaresAPIshows remaining progress
Grows
- Include different types of CS exam questions (like pseudocode, robot code) to practice different skills
- More variety in question formats would better prepare students for the AP exam
- Consider adding drag-and-drop or code completion questions
Lilian
Glows
- Teaching by session with a little fun game approach works really well — 5 lessons tracked via
completed_lessons[], each awarding bullets and progressively unlocking board sections (unlocked_sections[]) - Question (MCQ) format effectively tests understanding — 50 questions in
questions_bank.jsacross 5 CS topics, with server-side square range validation (QUESTION_SECTION_MIN_SQUAREtoQUESTION_SECTION_MAX_SQUARE) - Credit (bullets) counting and accumulation system is satisfying —
total_bulletspersists in theSnakesGameDatamodel and carries over as ammo in all three battle modes - Using bullets to fight the final boss is really fun! — three endgame modes now available: Boss Battle, PvP Arena, and SlitherRush
- Playing with friends adds a social dimension to learning — lobby chat system (
boss_join_lobby), in-battle chat for Boss and PvP, and SlitherRush party system for grouping friends into the same arena - User management is complete and functional
Grows
- It is really amazing, but maybe make the content/text bigger for readability
- Add more tips or hints about what to do next at each stage
- Consider tooltips or helper text for first-time users
Virginia
Glows
- Able to login to save data and be added to the leaderboard seamlessly — JWT-authenticated API calls persist all game state (
current_square,total_bullets,visited_squares[],completed_lessons[]) with 10-second autosave intervals - I like how it's styled with the dice roll and the game aspect — dice mechanics in
game-board-part2.htmlwith animation, split-board unlock indicators forhalf1/half2/bosssections - A really interesting concept overall
- Good knowledge of the system demonstrated during presentation
- Good use of all the different menus, including showing the backend system
Grows
- Wish that the games all followed a similar theme instead of being separate games within one game
- Content felt more cohesive would be better - most features felt very separated
- Try to keep more consistency with the original theme of teaching coding
- The idea of learning CS through a game is useful, but keep the concept more in practice
Nitya
Glows
- I like the idea of your purpose to teach kids about data science
- Bullets as currency is a creative and intuitive system — earned from lessons and correct answers, spent as ammo in Boss Battle, PvP Arena, and SlitherRush
- Impressed that you remade the backend on Flask — Flask-RESTful APIs (
api/snakes_game.py,api/snakes_extended.py), SQLAlchemy models withMutableList/JSONcolumns, and a dedicated Socket.IO server with eventlet - User management allows clear visibility of users —
ActivePlayersAPIshows players updated within the last 10 seconds;ChampionsAPIlists all game completers - Admin page looks good with auto-fillable features
- Mini questions/quizzes delivered in a nice fun way through games — 50 questions validated server-side with square range checking before awarding bullets
- Nice way to learn - the higher your bullet currency, the more appealing activities become — three battle modes now available as endgame content
- Boss battle is engaging and rewarding — server-authoritative collision, 4 powerup types (damage, speed, rapidfire, heal), victory stats aggregation, and per-player performance tracking
Grows
- Needs a little improvement but overall is good (4/5)
- Some polish on the UI would enhance the experience
Aditya
Glows
- Really like the idea of teaching lessons while also giving games to play as an incentive to learn — progressive unlocking ensures learning before battling (
half1→ 5 lessons →half2→ 50 questions →boss) - Admin page is great as it is customized to the game and project
- Can see game stats from the admin page which is very useful — game data includes
total_bullets,current_square,lives,game_status,boss_battle_attempts, andtime_played - The gamification approach makes learning feel less like a chore
- WebSocket implementation for real-time features is technically solid — dedicated Socket.IO server on port 8500 handling Boss Battle, PvP, and SlitherRush (30Hz server tick loop with 15fps state snapshots)
Grows
- Making some of the buttons a bit larger would improve usability
- The lesson interface could be a bit easier to follow along
- Was a bit confused on the layout and what to press for the lessons
- Consider adding visual cues or highlighting for interactive elements
Darshan
Glows
- It is cool how you get to do lessons and mini quizzes as well as having fun at the same time — lessons tracked via
completed_lessons[], questions tracked viavisited_squares[], both persisted asMutableList/JSONcolumns - The balance between education and entertainment is well-executed — progressive unlock system ensures learning before battling
- Multiplayer aspect adds significant engagement value — now three modes with in-game chat, tab-away detection, and real-time active player counts
- Character selection with different sprites is a nice touch — 4 characters stored as
selected_characterinSnakesGameData, each with unique pixel-art sprites in boss battle and PvP
Grows
- In the Admin section (/users/table2) remove the commits section from the table
- Or change it to say something else because it makes the website look "broken"
- Small UI inconsistencies detract from the overall polish
Cyrus
Glows
- The multiplayer element is very engaging and sets this apart from typical educational tools — three distinct modes: Boss Battle (10-player co-op), PvP Arena (1v1 matchmaking), and SlitherRush (32-player snake arena)
- Dynamic leaderboard at the end of the game adds competitive motivation —
LeaderboardAPIranks by bullets; SlitherRush in-arena leaderboard ranks by (score, kills, length) updated every 450ms - The boss battle mechanic is creative and memorable — server-side powerup spawning with rate limiting (
POWERUP_SPAWN_INTERVAL = 5s), safe spawn allocation with grid fallback, and per-player damage tracking - Real-time synchronization works smoothly without noticeable lag — server-authoritative position with
boss_self_position/pvp_self_positioncorrections preventing jitter; SlitherRush runs full server simulation at 30Hz - The progression system from lessons to questions to battle feels natural — enforced by
unlocked_sections[]:['half1']→['half1','half2']→['half1','half2','boss']
Grows
- Consider adding sound effects or music to enhance immersion
- Mobile responsiveness could be improved for tablet users
- A "quick play" mode for returning users would be nice
Rishabh
Glows
- The concept of learning through gameplay is executed well
- Backend architecture with Flask and WebSockets shows strong technical skills — Flask-RESTful for CRUD APIs, SQLAlchemy with
MutableList/JSONcolumns for mutable list persistence, and Socket.IO with eventlet for real-time multiplayer - The Hall of Champions feature provides lasting recognition for achievements —
ChampionsAPIqueriesgame_status='completed'ordered bycompleted_at ASC;ResetProgressAPIpreserves champion status on replay - PvP arena adds variety beyond the cooperative boss battle — now three modes: Boss Battle, PvP Arena (with dual-ready system and server collision), and SlitherRush (slither.io-inspired with HP, kills, and snake growth mechanics)
- Guest mode allows easy access without requiring signup initially — uses
sessionStoragefor local progress; WebSocket auth gracefully falls back via_resolve_socket_user()chain
Grows
- Some questions could be more challenging for advanced students
- Consider adding difficulty levels to accommodate different skill levels
- The transition from lessons to the game board could be smoother
- More detailed explanations after answering questions would aid learning
Key Themes from Feedback
Strengths Identified
| Theme | Frequency | Key Comments | Technical Implementation |
|---|---|---|---|
| Multiplayer/Social | 10/12 | “Really fun playing with friends”, “Multiplayer element is engaging” | Boss Battle (10-player co-op), PvP Arena (1v1 matchmaking), SlitherRush (32-player arena), lobby chat, in-battle chat |
| Educational Value | 9/12 | “Nice way to learn”, “Teaching by session works well” | 5 lessons → completed_lessons[], 50 questions → visited_squares[], progressive unlocked_sections[] |
| Boss Battle | 8/12 | “Really fun!”, “Exciting and interactive” | Server-authoritative collision, 4 powerup types, safe spawn allocation, per-player stats, victory screen |
| Leaderboard | 7/12 | “Dynamic leaderboard adds motivation” | LeaderboardAPI (by bullets), ChampionsAPI (by completion time), SlitherRush leaderboard (by score/kills/length) |
| Technical Implementation | 6/12 | “WebSockets impressive”, “Backend is solid” | Dedicated Socket.IO server (port 8500), 30Hz SlitherRush tick loop, MutableList/JSON columns, JWT auth for HTTP + sockets |
Areas for Improvement
| Theme | Frequency | Action Items |
|---|---|---|
| UI Polish | 8/12 | Larger buttons, clearer navigation, consistent styling |
| Cohesive Theme | 5/12 | Better visual consistency across all game sections |
| Onboarding | 5/12 | Clearer instructions, tooltips, tutorial flow |
| Question Variety | 4/12 | Add pseudocode, robot code, different formats |
| Educational Clarity | 3/12 | Make learning purpose more obvious on homepage |
Team Response & Action Items
Based on the feedback received, our team has identified the following priority improvements and features already shipped:
High Priority (Addressed)
- UI Cleanup — Standardize button sizes, improve visual hierarchy, fix admin table display issues
- Navigation Flow —
mode-selection.htmlnow serves as a clear hub with live player counts for all three battle modes via Socket.IO status events - Homepage Clarity — Make the educational purpose immediately visible on the landing page
New Features Shipped Since Review
- SlitherRush Minigame — Slither.io-inspired 32-player snake arena with 30Hz server tick loop, HP system, kills/deaths tracking, and party grouping
- Server-Authoritative Collision —
resolve_player_collision()prevents overlap in Boss Battle and PvP;allocate_boss_spawn()ensures safe spawn positions - Pre-Battle Lobby Chat —
boss_join_lobby/boss_leave_lobbywith member tracking and system messages - Tab-Away Detection —
boss_player_away/boss_player_returnedand PvP equivalents notify teammates when players switch tabs - Per-Player Battle Stats — Tracks damage_dealt, bullets_fired, bullets_hit, powerups_collected server-side; aggregated on victory screen
- Game Completion & Reset —
CompleteGameAPImarksgame_status='completed'with timestamp;ResetProgressAPIclears all progress while preserving champion history - Active Players Tracking —
ActivePlayersAPIqueries records updated within 10 seconds for real-time “who’s playing” displays
Medium Priority
- Question Diversity — Add pseudocode questions and AP exam-style formats
- Onboarding — Create a brief tutorial for first-time users
- Visual Consistency — Unify the theme across lessons, game board, and battle arenas
Future Considerations
- Difficulty Levels — Implement adaptive difficulty for different skill levels
- Mobile Optimization — Improve responsiveness for tablet and mobile users
- Audio Enhancement — Add optional sound effects and background music (SFX system already implemented by Moiz)
Conclusion
We received overwhelmingly positive feedback on our Snakes and Ladders educational game, with an average rating of 4.3/5 across all reviewers. The multiplayer functionality (Boss Battle, PvP Arena, and SlitherRush), boss battle mechanics with server-authoritative collision and powerups, and the gamified learning approach with progressive section unlocking were consistently praised as standout features.
Since the initial review, the game has expanded significantly: the SlitherRush minigame adds a slither.io-inspired 32-player snake arena with a 30Hz server tick loop and HP/kill/score mechanics; server-authoritative collision resolution (resolve_player_collision()) ensures fair gameplay in Boss Battle and PvP; pre-battle lobby chat and tab-away detection improve the multiplayer experience; per-player battle stats tracking (damage_dealt, bullets_fired, powerups_collected) powers detailed victory screens; and active player tracking, game completion flow, and full progress reset round out the backend API surface.
The constructive feedback centered around UI polish, thematic cohesion, and onboarding clarity — all actionable improvements that we plan to address in our next sprint. We’re grateful to all reviewers for their thoughtful input and detailed suggestions.
Thank you to: Anika, Avantika, Lilian, Virginia, Vivian, Nitya, Aditya, Perry, Darshan, Hope, Cyrus, and Rishabh for their valuable feedback!