Skip to content
 
 

Repository files navigation

Contributors Forks Stargazers Issues License LinkedIn

Logo

dpx_tunnel_83

Navigate the Ever-Narrowing Tunnel! 🚗

A Python remake of the classic TI-83 calculator game "Tunnel" by Joe Wingbermuehle
» Project Here! »
Report Bug · Request Feature


Table of Contents

  1. About The Project
  2. Getting Started
  3. Usage
  4. Releasing
  5. Reflection
  6. Roadmap
  7. Contributing
  8. License
  9. Contact
  10. Acknowledgments
  11. Recent changes

About The Project

Navigate your car through an ever-narrowing tunnel! Avoid hitting the walls as the tunnel randomly shifts left and right. The longer you survive, the narrower the tunnel becomes, making the game increasingly challenging.

This is a Python adaptation of the classic Z80 assembly game written for TI-83/TI-83+ graphing calculators. The original game was written by Joe Wingbermuehle and was popular in the calculator gaming community.

Features:

  • Classic tunnel-running gameplay
  • Progressive difficulty (tunnel narrows over time)
  • Random tunnel movement
  • Score tracking with high score
  • Smooth pygame graphics
  • Pause functionality
  • Simple controls

author(s): // www.dubpixel.tv - i@dubpixel.tv | Original Game by Joe Wingbermuehle

Images

FRONT

FRONT

(back to top)

Built With

  • Python
  • Pygame

(back to top)

Getting Started

Prerequisites

  • Python 3.7 or higher
  • Pygame 2.5.0+

Installation

  1. Clone the repo
    git clone https://github.com/dubpixel/dpx_tunnel_83.git
  2. Install required packages
    pip install -r requirements.txt
    Or install pygame directly:
    pip install pygame

(back to top)

Usage

  1. Run the game:

    python src/tunnel.py

    or

    python3 src/tunnel.py
  2. Controls:

    • Arrow Keys or A/D - Move car left/right
    • P - Pause game
    • SPACE - Restart after game over
    • ESC - Quit game
  3. Objective:

    • Keep your car between the white tunnel walls
    • Survive as long as possible
    • Beat your high score!

Gameplay:

  • The tunnel scrolls continuously downward
  • Your car stays near the bottom of the screen
  • The tunnel randomly shifts left or right
  • Every 16 points, the tunnel gets slightly narrower
  • The game ends when your car hits a wall

Releasing

Release builds are produced with PyInstaller for Windows (on this machine) and macOS (via GitHub Actions). Users get a single executable per platform with no Python or dependency install.

Prerequisites: GitHub CLI installed and authenticated (gh auth login).

  1. Tag and push (use the version you are releasing, e.g. v1.0.0):
    git tag v1.0.0
    git push origin main --tags
  2. Build the Windows binary (from project root):
    pip install pyinstaller
    pyinstaller Tunnel83.spec
    Output: dist\Tunnel83.exe
  3. Create the GitHub release and attach the Windows build (and release/install notes):
    gh release create v1.0.0 .\dist\Tunnel83.exe --title "Tunnel83 v1.0.0" --notes-file RELEASE_NOTES.md
    Use --notes "..." for inline notes if you prefer.
  4. Trigger the macOS build so it runs on GitHub and uploads to the same release:
    gh workflow run build-macos-release.yml -f tag=v1.0.0
  5. When the Actions run completes, the release will have Tunnel83.exe (Windows) and Tunnel83-macos (macOS). No manual upload for the Mac build.

Use the same steps for future versions (e.g. v1.0.1): change the tag and run the workflow with that tag.

(back to top)

Reflection

  • What did we learn?
    • Converting retro games to modern platforms while preserving gameplay
    • Working with Pygame for 2D graphics and game loops
    • Implementing progressive difficulty systems
  • What do we like?
    • The simplicity and addictiveness of the original game design
    • Smooth pygame graphics while maintaining classic feel
    • Easy-to-modify Python code for further enhancements
  • What could we do differently?
    • Add sound effects and background music
    • Implement multiple difficulty modes
    • Add power-ups or special tunnel sections

Roadmap

  • Add sound effects and background music
  • Implement multiple difficulty modes
  • Add color themes (retro green monochrome, etc.)
  • Add leaderboard with name entry
  • Create power-ups (shield, slow-mo, etc.)
  • Add mobile/touch controls support
  • Fix The Jitter

See the open issues for a full list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Commit messages and changelog: Use a structured commit message: (1) reason for the changes, (2) detailed list of changes and files affected so the "why" is clear, (3) list of files affected. You may update the Recent changes section with highlights of what was added or updated and when; document only what actually shipped (omit reverted or pre-push experiments). Group multiple commits from the same day or session into one entry.

Top contributors:

contrib.rocks image

License

This is a fan remake of the original calculator game for educational and entertainment purposes. See LICENSE.txt for more information.

Contact

Joshua Fleitell - i@dubpixel.tv

Project Link: https://github.com/dubpixel/dpx_tunnel_83

Acknowledgments

(back to top)

Recent changes

March 2026 (@JacksonTerror)

  • Grey wall background so score text is visible; larger score font in top-left.
  • Finer car movement (3 px/frame) for better control.
  • Tunnel narrows from the top only: per-row width in buffer so new rows are narrower and chunks no longer shift inward.
  • Subtle rock/dirt chunks on both walls (small circle count, scroll with tunnel).
  • Windier turns as score increases; tunnel narrows more slowly (every 20 pts, 1 px).
  • Now with sound! Added UI and in game sounds, including music.
  • In-game toggle to pick music on or music off (player vehicle sfx)
  • new player graphic with animation
  • Menu refinement: intro music plays > then start prompt appeara, giving time to read start screen /credits. and letting intro melody play (3s)
  • Race start countdown. Pre-race you see 3,2,1, GO, W/UI sounds and then race appears and begins.

(back to top)

About

might add sound

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages