Flappy Bird
- 4 Devlogs
- 6 Total hours
I'm building a classy game Flappy Bird, if you know this game was a banger a long time ago and I just wanted to recreate it with my own coding knowledge
I'm building a classy game Flappy Bird, if you know this game was a banger a long time ago and I just wanted to recreate it with my own coding knowledge
Finally I read through peoples replies and feedback and I already knew the problem was gonna be with the gravity and flap strength, so after fixing that and also making the bird look a little better, I am finally done with this. Hopefully!
We have officially reached the finish line for Iteration 2 of Flappy Bird! The final phase of this sprint was all about pushing the visual aesthetic to a premium arcade standard and overcoming the hurdle of accessibility. Instead of relying on flat, basic shapes, I completely overhauled the rendering logic to introduce true geometric depth. By utilizing advanced vector layering, drop shadows, and gloss highlights directly on the canvas, the bird now sports a vibrant 3D spherical look. The obstacles received a massive upgrade as well; the pipes are now modeled with authentic wide rim caps and custom gradient shading to mimic the nostalgic look of classic arcade games. Players can also fully personalize their experience right from the start menu using interactive on-screen buttons to swap between multiple sky themes like pink, light blue, and midnight black.The biggest breakthrough of this update, however, was figuring out how to bring this desktop application into the modern web ecosystem. Moving away from local Python execution, the project was successfully migrated onto a web framework using a Python Flask backend paired with an HTML5 Canvas frontend. This transition allows the game loop to execute flawlessly at a locked 60 frames per second right inside any web browser, eliminating lag and making the game instantly playable via a single cloud link. With precision collision boundaries fully locked down, dynamic acceleration curves scaling the difficulty every three points, and the live link officially deployed on Replit, the game is polished, optimized, and ready for the world to play. Time to ship it!
The primary milestone of this development cycle was transforming a loose, functional prototype into a structured, scalable application using Object-Oriented Programming (OOP). By encapsulating all game states—such as scores, velocities, and tracking arrays—inside a master FlappyBirdGame class, the architecture became self-contained, eliminating the risk of global variable pollution. A critical part of this refactoring involved dismantling the splintered, independent. after () loops that separately ran gravity, pipe movement, and scoring. These were consolidated into a single unified game_loop running at approximately 60 frames per second (~16ms). This master clock synchronizes all physics updates and collision checks simultaneously, removing the erratic micro-stutters from the previous version and delivering a noticeably smoother gameplay experience. In addition to structural overhaul, several game-breaking bugs and interface oversights were resolved. The disruptive terminal-based color input was entirely removed, replaced by an integrated canvas menu featuring clickable native tk.Frame buttons for interactive background selection. To fix an instant-death bug where the bird would plunge into the ground the millisecond the game started, an initial upward velocity pulse (FLAP_STRENGTH) was injected straight into the start sequence, giving the player immediate buoyancy and reaction time. Critical syntax errors were also squashed, including a casing typo that turned tk.Frame into an invalid lowercase property, and a keybind mismatch that wrongly mapped the “P” key to a non-existent method instead of the intended toggle_pause function.Finally, core mechanics were tuned to match genuine arcade standards. The superficial timer-based score keeper was abandoned; instead, pipes are now generated with unique geometric tags so that points are only awarded when the bird’s trailing horizontal boundary completely clears the obstacle. A ceiling boundary collision check (b_y1 <= 0) was added to close a loophole where players could fly off-screen to bypass pipes entirely. To keep the gameplay loop engaging, a difficulty scaling mechanic was implemented to speed up the incoming pipes by 1.5 pixels every 3 points, while a session-wide high score counter was added to track and display the player’s best run. The iteration concludes with a polished game loop, stable crash boundaries, and a foundation ready for external asset implementation.
Now working on the bird itself to try and make it look like an actual bird