Inspiration
Legend Wings was inspired by EverWing, the massively popular action arcade game that captivated millions of players with its simple yet addictive gameplay. The idea was to recreate a similar fast-paced, side-scrolling shooter experience natively on iOS using Swift. The goal was to explore game development on Apple's platform while paying homage to the classic shoot-'em-up genre — combining survival mechanics, gold collection, and character progression into a fun, replayable mini clone.
What it does
Legend Wings is an iOS action arcade game where players:
Survive endless waves of enemies for as long as possible Earn gold by defeating enemies and collecting in-game rewards Upgrade characters to become more powerful and last longer Purchase new characters with unique abilities and stats Experience progressively challenging gameplay inspired by EverWing's core mechanics The game features smooth animations, enemy AI, projectile systems, and a character progression system — all running natively on iOS.
How we built it
Language: Swift — Apple's modern, performant programming language Framework: SpriteKit — Apple's native 2D game framework for rendering sprites, handling physics, and managing game scenes Platform: iOS (iPhone/iPad) Architecture: Scene-based game architecture with separate modules for player controls, enemy spawning, collision detection, gold/reward systems, and character upgrades Assets: Custom and adapted sprite sheets for characters, enemies, projectiles, and backgrounds Versioning: Iterative development from early alphas (v3.0.4) through improved builds (v3.5.1) with intro videos documenting progress
Challenges we ran into
Performance optimization: Keeping the game running at a smooth frame rate with multiple enemies, projectiles, and particle effects on screen simultaneously Collision detection: Fine-tuning SpriteKit's physics engine for accurate and responsive hit detection Game balancing: Making the difficulty curve feel fair yet challenging — tuning enemy spawn rates, health, and gold rewards Character progression system: Designing an upgrade and purchase system that feels rewarding without being pay-to-win Sprite animations: Managing complex sprite sheet animations and ensuring smooth transitions between character states Memory management: Preventing memory leaks and efficiently managing game assets during extended play sessions
Accomplishments that we're proud of
Successfully built a fully playable EverWing-style clone natively in Swift using SpriteKit Implemented a complete character upgrade and purchase system Achieved smooth, responsive gameplay with intuitive touch controls Iterated through multiple alpha versions (v3.0.4 → v3.5.1), showing clear progress and polish Created intro videos to showcase development milestones Gained deep, hands-on experience with iOS game development from scratch What we learned How to leverage SpriteKit for 2D game development on iOS Advanced Swift programming techniques including protocols, enums, and memory management Game development fundamentals: game loops, sprite rendering, physics engines, and collision detection The importance of iterative development — starting with a minimum viable product and improving over time How to manage game state, scoring systems, and player progression UX principles specific to mobile gaming — touch controls, screen real estate, and visual feedback What's next for iOS Swift Project New characters and abilities — Expand the roster with unique power-ups and special attacks Boss battles — Introduce challenging boss enemies at milestone waves Multiplayer support — Add cooperative or competitive modes using GameKit Leaderboards and achievements — Integrate Game Center for global rankings Enhanced visual effects — Add particle effects, screen shake, and more polished animations Sound design — Implement a full soundtrack and dynamic sound effects App Store release — Polish the game for a public release on the App Store Cross-platform support — Explore porting to macOS or tvOS using shared Swift code
Log in or sign up for Devpost to join the conversation.