Sewer Search: A Pygame Adventure
Inspiration
The inspiration for Sewer Search came from classic platformer games like Super Mario and Sonic the Hedgehog. We wanted to create a game that combined fast-paced action, exploration, and a unique underground theme. The idea of navigating through a sewer system filled with enemies and obstacles felt both challenging and exciting, and it allowed us to experiment with mechanics like gravity, collision detection, and scrolling levels.
What It Does
Sewer Search is a 2D platformer game where the player controls a character navigating through a sewer system. The goal is to avoid enemies (rats), collect items, and reach the end of the level to win. The game features:
- Player Movement: Run, jump, and avoid hazards.
- Enemies: Rats that patrol back and forth.
- Health System: The player has three hearts, and colliding with enemies reduces health.
- Scrolling Levels: The screen scrolls vertically as the player moves downward.
- Timer: A countdown timer adds urgency to the gameplay.
How We Built It
We built Sewer Search using Python and the Pygame library. Here's how we approached the development:
- Game Design:
- Designed the player, enemies, and tiles using simple sprites.
- Created a tilemap system to generate levels dynamically.
- Player Mechanics:
- Implemented gravity, jumping, and collision detection.
- Added health and damage systems.
- Enemy AI:
- Created patrolling rats that move back and forth.
- Scrolling:
- Added vertical scrolling to create a sense of depth and exploration.
- UI:
- Added a health bar and timer to display the player's status.
- Assets:
- Used custom sprites for the player, enemies, and tiles.
Challenges We Ran Into
- Collision Detection:
- Implementing precise collision detection between the player and tiles/enemies was tricky. We had to account for gravity and ensure the player didn't get stuck in walls.
- Scrolling:
- Making the background and tiles scroll smoothly while keeping the player centered was challenging. We had to adjust the rendering logic to handle offsets correctly.
- Font Issues:
- The game initially crashed when the specified font (
'Arial') wasn't available. We fixed this by adding a fallback to the default font.
- The game initially crashed when the specified font (
- Performance:
- Rendering a large tilemap with many tiles caused performance issues. We optimized the rendering logic to only draw visible tiles.
Accomplishments We're Proud Of
- Smooth Gameplay: The player movement and scrolling feel responsive and polished.
- Dynamic Level Design: The tilemap system allows for flexible and reusable level creation.
- Creative Theme: The sewer setting and rat enemies give the game a unique identity.
- Completed Project: Despite the challenges, we delivered a fully functional game with a clear goal and mechanics.
What We Learned
- Game Development Workflow: We gained experience in designing, implementing, and testing game mechanics.
- Pygame Basics: We learned how to use Pygame for rendering, input handling, and collision detection.
- Debugging: We improved our debugging skills by identifying and fixing issues like font crashes and performance bottlenecks.
- Team Collaboration: Working together taught us how to divide tasks, communicate effectively, and merge our work seamlessly.
What's Next for Sewer Search
- More Levels: Add additional levels with increasing difficulty and unique challenges, such as acid, and acid rain.
- Power-Ups: Introduce items like speed boosts or temporary invincibility.
- Enemy Variety: Add new enemies with different behaviors, such as flying rats or stationary hazards.
- Sound Effects: Incorporate sound effects for jumps, collisions, and background music.
- Multiplayer: Explore the possibility of adding a cooperative or competitive multiplayer mode.
About the Project
Sewer Search is a passion project created by a small team of developers who love retro games and Python programming. It was built as a learning experience and a way to explore game development concepts. We hope players enjoy navigating the sewers as much as we enjoyed creating them!
Log in or sign up for Devpost to join the conversation.