A simple, open-source Python/Pygame educational project exploring game development concepts; Made by a beginner for other beginners.
Note: This repository contains code only — assets not included. The project is intended as a learning resource
- About The Project
- Project Structure
- Key Features
- Learning Objectives
- Web Port & EXE building Notes
- Contributing
- License
The Worst Fishing Game Ever started as a school assignment in Python — and grew into a simple, open-source Pygame project built with intention of being used an educational resource for first time developers exploring game development in simple concepts. It features some simple physics, a shop and inventory system, a collectible-focused Fishpedia, and player progression mechanics with an actual ending.
The code is (still in the process of being) heavily commented, offering insight into logistics and decision making of game design; Exactly the kind of resource I wished I had when I started learning.
Pygame-Fishing-game/
│
├─ Desktop/
│ ├─ main.py # Entry point for the desktop version
│ ├─ game.py # Core game loop
│ ├─ rope.py # Rope physics
│ ├─ fishing.py # Rod and bait calculations
│ ├─ catch_mode.py # Catch minigame
│ ├─ shop.py # Shop system
│ ├─ inventory.py # Inventory system
│ ├─ fishpedia.py # Collectible encyclopedia
│ ├─ menus.py # Menu screens
│ ├─ ui.py # UI elements
│ ├─ cutscene.py # Cutscene/Typewriter system
│ ├─ splash.py # Splash system
│ ├─ save_system.py # Save/load system
│ ├─ scaling.py # Resolution scaling
│ ├─ settings.py # Game settings
│ ├─ fish_data.py # Fish data
│ └─ assets.py # Assets loading
│
├─ WebPort/
│ ├─ main.py # Entry point for the web version
│ └─ ... # (mirrors Desktop)
│
├─ Itch_page_css # CSS styling for the itch.io page
├─ web_loading_screen.tmpl # Custom Pygbag loading screen template
├─ LICENSE
└─ README.md
- Simple Physics — Fake perspective of bait and splash; Dynamic rope movement; The physics behind catching minigame
- Shop & Inventory — Buying system with locked progress; Inventory system holding caught fish and calculating their price
- Fishpedia — Collectible tracking system
- Progression Mechanics — Player upgrades rod, unlocing new tiers and upgrades(needles cosmetics included)
- Web Port — Full Pygbag browser build with custom loading screen
- Educational Codebase — (In progress of being) Heavily commented to explain (hopefully decent) Python game development practices
- Human-Made Code — No AI-generated code or assets (Apologies for typos in advance)
This project is intended for new developers who want to:
- Understand how game loops and systems work in general
- Explore basic physics and upgrade systems
- See real-world, beginner code organization for a simple 2D game
- Experiment with Pygbag for web deployment (requires adding your own assets)
Browse the source files directly on GitHub, or clone the repo and open it in your editor.
git clone https://github.com/Sueeeee3/Pygame-Fishing-Game.gitThe game cannot be run without the missing assets — this repo is for reading and learning, not executing.
Before anything: This project cannot be run as-is — assets are not included in this repository. The commands below are written assuming Python was not added to PATH during installation.
-
Install Python — Download from python.org.
-
Install Pygame
py -m pip install pygame- Install auto-py-to-exe
py -m pip install auto-py-to-exe- Run it
py -m auto-py-to-exe- Select
main.pyas your script, choose One Directory mode, and click Convert.
Note: You will need to manually include your assets folder and font in the auto-py-to-exe interface under "Additional Files".
- Install Pygbag
py -m pip install pygbag- Run it from your project folder
py -m pygbag main.py Use this command to generate a build with your custom loading screen
py -m pygbag --template path/to/loadingscreen.tmpl main.py- Open your browser and go to
http://localhost:8000to test it.
Note: The
web/folder in this repo shows an example of a finished Python code, ready to build, showing changes needed to make it run on web.
This project is primarily a learning resource, so contributions that help with that are most welcome — things like improving comments, fixing typos, or cleaning up code readability.
If you'd like to contribute, feel free to open an issue or submit a pull request!
Distributed under the MIT License. See LICENSE for more information.
Made with much love for game dev <3



