{"id":34732345,"url":"https://github.com/jvaguiar05/tappy_plane","last_synced_at":"2026-05-21T23:12:00.309Z","repository":{"id":328815504,"uuid":"1116439686","full_name":"jvaguiar05/tappy_plane","owner":"jvaguiar05","description":"A Flappy Bird-inspired side-scroller developed in Godot. Features parallax backgrounds, dynamic obstacle generation, score tracking, and custom 2D physics.","archived":false,"fork":false,"pushed_at":"2025-12-16T02:28:35.000Z","size":2585,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-18T17:28:49.053Z","etag":null,"topics":["2d-game","endless-runner","flappy-bird-clone","gamedev","gdscript","godot","godot-4"],"latest_commit_sha":null,"homepage":"","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jvaguiar05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-14T21:23:37.000Z","updated_at":"2025-12-16T22:23:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jvaguiar05/tappy_plane","commit_stats":null,"previous_names":["jvaguiar05/tappy_plane"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jvaguiar05/tappy_plane","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvaguiar05%2Ftappy_plane","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvaguiar05%2Ftappy_plane/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvaguiar05%2Ftappy_plane/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvaguiar05%2Ftappy_plane/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jvaguiar05","download_url":"https://codeload.github.com/jvaguiar05/tappy_plane/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvaguiar05%2Ftappy_plane/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28017829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d-game","endless-runner","flappy-bird-clone","gamedev","gdscript","godot","godot-4"],"created_at":"2025-12-25T03:12:31.818Z","updated_at":"2025-12-25T03:12:32.959Z","avatar_url":"https://github.com/jvaguiar05.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tappy Plane 🛩️\n\nA 2D endless runner game inspired by Flappy Bird, built with Godot 4 for educational purposes.\n\n## 📚 Educational Purpose\n\nThis project was created as part of my game development studies, following the comprehensive roadmap from the Udemy course:\n**[Jumpstart to 2D Game Development: Godot 4 for Beginners](https://www.udemy.com/course/jumpstart-to-2d-game-development-godot-4-for-beginners/)**\n\nThe main goal is to learn fundamental game development concepts and Godot 4 engine features through hands-on practice.\n\n## 🎮 Game Overview\n\nTappy Plane is a simple yet engaging game where players control a plane that must navigate through pipes by tapping/pressing space to \"fly\" upward. The challenge is to pass through as many pipe gaps as possible without crashing.\n\n### Core Gameplay\n\n- **Tap/Space** to make the plane fly upward\n- **Gravity** constantly pulls the plane down\n- **Avoid** hitting pipes or the ground\n- **Score points** by passing through pipe gaps\n- **Beat your high score** and try again!\n\n## 🛠️ Technical Features\n\n### Game Architecture\n\n- **Scene Management**: Clean separation between main menu and game scenes\n- **Signal System**: Decoupled communication between game objects\n- **Singleton Pattern**: Global managers for game state, scoring, and scene transitions\n- **Component-Based Design**: Each game object has specific responsibilities\n\n### Key Systems\n\n#### 1. **Physics \u0026 Movement**\n\n- Gravity-based plane physics\n- Input-responsive flight mechanics\n- Smooth collision detection\n\n#### 2. **Obstacle Generation**\n\n- Procedural pipe spawning\n- Random gap positioning\n- Automatic cleanup system\n\n#### 3. **Scoring System**\n\n- Real-time score tracking\n- High score persistence\n- Score validation and formatting\n\n#### 4. **Audio Integration**\n\n- Engine sound effects\n- Scoring audio feedback\n- Game over sound cues\n\n#### 5. **UI Management**\n\n- Responsive game interface\n- Pause/unpause functionality\n- Game state transitions\n\n### Design Patterns Implemented\n\n- **Observer Pattern** (SignalHub): Event-driven communication\n- **Singleton Pattern** (GameManager, ScoreManager): Global state management\n- **Component Pattern**: Modular, maintainable code structure\n\n## 📁 Project Structure\n\n```\ntappy_plane/\n├── assets/              # Game assets (sprites, audio, fonts)\n├── globals/             # Singleton managers and signal hub\n├── scenes/              # Game scenes and components\n│   ├── main/           # Main menu scene\n│   ├── game/           # Core gameplay scene\n│   ├── tappy_plane/    # Player character\n│   ├── pipes/          # Obstacle system\n│   ├── game_ui/        # User interface\n│   └── ...             # Other components\n├── notes/              # Documentation and learning notes\n└── resources/          # Godot resource files\n```\n\n## 🎯 Learning Outcomes\n\nThrough this project, I gained hands-on experience with:\n\n- **Godot 4 Engine**: Scene system, nodes, and scripting\n- **Game Physics**: Gravity, collision detection, and movement\n- **Software Architecture**: Clean code principles and design patterns\n- **State Management**: Game states and scene transitions\n- **Audio Programming**: Sound integration and management\n- **UI Development**: Responsive game interfaces\n- **Resource Management**: Asset organization and optimization\n\n## 🎨 Assets \u0026 Attribution\n\nAll assets used in this project are **100% free to use** and include:\n\n- Sprite graphics for planes, pipes, and backgrounds\n- Sound effects for gameplay interactions\n- Custom fonts for UI elements\n\n_Note: This is an educational project created for learning purposes._\n\n## 🚀 How to Run\n\n1. **Install Godot 4.5+**\n2. **Clone this repository**\n3. **Open the project in Godot**\n4. **Press F5 to run the game**\n\n## 🎓 Key Takeaways\n\nThis project demonstrates:\n\n- Clean, maintainable code architecture\n- Proper separation of concerns\n- Event-driven programming\n- Resource management best practices\n- Game development workflow in Godot\n\n## 📖 Additional Learning Resources\n\n- [Godot Documentation](https://docs.godotengine.org/)\n- [GDScript Style Guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html)\n- [Game Programming Patterns](https://gameprogrammingpatterns.com/)\n\n---\n\n_This project serves as a foundation for understanding game development concepts and can be extended with additional features like power-ups, different difficulty levels, or multiplayer functionality._\n\n---\n\n## 🧑🏼‍🦱 About Me\n\nHi! I'm João Vítor, I'm just starting to learn about game developing. I'm passionate about creating engaging experiences and learning new technologies. This project is part of my journey to master 2D game development using Godot Engine. Feel free to reach out or check out my other projects!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvaguiar05%2Ftappy_plane","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjvaguiar05%2Ftappy_plane","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvaguiar05%2Ftappy_plane/lists"}