The Complete iOS Game Course - Build a Flappy Bird Clone
Over 350+ videos taking you step-by-step through process of building 8+ different applications using Sprite Kit
 Enroll in Course for only a Tweet!

We built an immersive game development course that teaches you all of the fundamentals so you can build your own games on iPhones and iPads. We combine videos, notes, collaborative discussion forums, and challenging assignments to have students build real apps. Teaching online is not new to us. Our highly successful Beginner iOS Bootcamp (over 18k students and 5 star review) teaches students the basics of programming iOS apps. We use the same proven pedagogy to teach game development.

The course will include over 120 hours of content (30 hours of video plus notes and challenges), an active discussion forum where students and teachers answer questions, and multiple fully coded example projects that you can download.

Topics covered:

  • Introduction to Game Development , Sprite Kit , Scenes and Nodes, Coordinates, Game Loop
  • Sprite/Texture Creation, Sprite Theory, Atlas Files
  • Animation, Parallax Scrolling, Character animation
  • Physics Bodies, Physics Properties, Bit Fields, Collisions, Contact Detection
  • User Input, Context Based Input Handling
  • Character Movement/Physics, State machines, Player Physics, Jump Curve, Double Jump, Gravity, etc.
  • Tile Based Game World, Tile Sprites, Tiled, Creating and Loading Tiled files
  • World Collision Detection, Axis Alined Bounding Box, Collision Bit Masks
  • Obstacles, Collectables, Power Ups
  • Effects, Particle Effects, Weather Effects
  • Sound, Adding Music, Adding Sound Effects
  • Scoring, HUD, Lives, Stats, Score Board
  • Game Menus, Level Selection, Saving/Loading Game Progression

Reviews from our iOS course

"I must say that so far, this course is awesome. Having the challenging assignments, daily discussions and feedback from the instructors, has been the missing piece that I have been looking for. I have read a handful of books, watched hours of video & typed in a bunch of tutorials, and finally, having to work through tough assignments and applying what I have been learning, it is all starting to click - Finally!" - Mark S.

“Code Coalition's discussion board is one of the best resources for a beginning iOS developer. So much help being offered” - Omar S.

“I've just completed the iOS101 course, which I thought was a great intro to the XCode environment... I feel it's been well worth the investment. ” - Herdy H.

"Wow, @CodeCoalition! Moving quickly! Week 2 is so different than week 1...and I like it :) Thnx for the challenge" - Melissa B.

“Just discovered @CodeCoalition! An excellent resource for anyone who wants to make their first iPhone app.” -Novall K.

“Can't reiterate it enough how this course is helping me with my iOS dev skills. I think using protocols and delegation is finally becoming second nature. Fingers crossed :-)” -Alex P.

“I am really loving the class. I have taken classes at Code School & Treehouse and both were missing a key element. The ability to ask questions as you complete a section and get an answer. “ -Lisa A.

“Your training is the best out there so far. I wish I had the time away from regular job to follow along.” -Christian S.

“Im loving this.. I have been through at least 5 books, and many online deals. Yours is super so far. Finally, i can get from start to finish on a lesson without wondering why on "Everything" thank youCant wait to do more.. “ -Kevin R.


Why take this course and how much time does it take to complete?

iOS game development, and software development as a whole, is a booming career. The demand for new developers at all levels far outweighs the supply. Barrier to entry is not as high as one would think - though passion and hard work are necessary, a degree in computer science or any other technical field is not required.

We aim to take you from complete beginner to junior game developer in three months. The apps you create in this course can be used on your portfolio so you have something to show when you apply for jobs. Not only that, you can throw your apps on the app store and be the next Flappy Bird!


 Enroll in Course for only a Tweet!
Your Instructor

Jed worked for many years as a web developer for various companies in Australia and the UK. He co-founded indie games development studio, Whistlefire that recently launched their first game for iOS, Jungle Raider. He currently resides in Berlin where he is working for Toywheel, designing and building mobile games and digital toys for kids.

Course Curriculum
Section 1 - Sprite Kit Concepts
  Introduction (04:12)
  Nodes (09:58)
  A Closer Look At Nodes Part 1 (07:54)
  A Closer Look At Nodes Part 2 (05:45)
  Adding Images to Projects (05:21)
  Coordinates (11:05)
  A Closer Look at Anchor Points (06:20)
  Game Loops (04:06)
  Overview of Actions (06:24)
  Diagnostics (03:58)
Section 2 - Our First Game! Build a Space Cannon Shooter
  Space Cannon (10:39)
  Review: Space Cannon Setup (08:54)
  Add shoot method (05:11)
  Working With Angles (06:59)
  Data Types (05:18)
  Add physics body (05:51)
  Shoot Method Review (06:54)
Section 3 - Review of Shooting with our Space Cannon
  Clean up (03:28)
  Using Breakpoints (08:40)
  Review of Physics Body Basics (08:38)
  Timing (04:44)
  Review of Game Loop (06:18)
  Adding Edges to the scene (06:55)
Section 4 - Challenge 1: Bouncing Balls
  Challenge: Ball Challenge (01:17)
  Challenge: Ball Challenge: Solution Part 1 (04:11)
  Challenge: Ball Challenge: Solution Part 2 (09:57)
  Challenge: Ball Challenge: Solution Part 3 (06:42)
Section 5 - Adding Halos to our Space Cannon Game
  Adding randomness (03:46)
  Adding Halos (08:02)
  Review - Random in Range and Spawn Halo Action (06:10)
Section 6 - Detecting Collisions and Contacts
  BitFields (07:38)
  Collision BitMasks (06:46)
  Contact Test BitMask (06:31)
  Review: Contact Delegate, Bit Masks (07:47)
Section 7 - Particle Effects and Explosions
  Particles (07:06)
  Add Explosion Effect (05:34)
  Creating SKEmitterNodes Manually (06:45)
  Shot Limiting (07:01)
Section 8 - Challenge 2: Alternate Shot Limiting
  Challenge: Alternate Shot Limiting (01:57)
  Challenge: Alternate Shot Limiting: Solution (05:03)
Section 9 - Shields and start a Lifebar
  Add Shields (06:54)
  Review - Add Shields (06:51)
  Add Life Bar (06:12)
Section 10 - Challenge 3: Explosion on Bounce
  Challenge: Add Explosion on Bounce (00:27)
  Challenge: Add Explosion on Bounce Solution (06:16)
Section 11 - Game Reset and Scoring
  Game Over and New Game (05:26)
  Review: Game Reset Functionality (05:19)
  Add Scoring (04:51)
Section 12 - Adding Basic Sounds
  Free art resources: OpenGameArt.org (02:35)
  Editing Sounds with Audacity (05:38)
  Converting Sounds to CAF Format (04:02)
  Space Cannon - Adding Sounds (08:56)
Section 13 - Adding Menus
  Space Cannon - Add Menu (06:22)
  Space Cannon - Make Menu Functional (06:08)
  Review: locationInNode (03:20)
  Space Cannon - Fix Delay (03:50)
  Space Cannon - Add Scores to Menu (07:38)
  Review: Adding Scores to Menus (04:55)
Section 14 - Save with NSUserDefaults
  A Look at NSUserDefaults (04:37)
  Space Cannon - Save Scores Using NSUserDefaults (05:32)
  Space Cannon - Bug Fixes (10:21)
Section 15 - Particle Trail and Action Speeds
  Space Cannon - Increase Halo Spawn Speed (05:02)
  Space Cannon - Create Particle File for Trail Effect (03:01)
  Space Cannon - Add Trail Emitter Node To Balls (04:33)
  Space Cannon - Adjust Ball Trails With New Ball Class (07:51)
  Adjust Ball Trails With New Ball Class.mov (07:51)
  Review: Action Speed and Particle Trail Effect (08:16)
Section 16 - Bounce Limit and Power Up
  Space Cannon - Set Bounce Limit (03:27)
  Space Cannon - Add Point Multiplier Halo (06:03)
  Space Cannon - Add Point Multiplier (07:16)
Section 17 - Challenge 4: Add Bomb Power Up
  Challenge: Add Bomb Power Up (02:37)
  Challenge: Add Bomb Power Up Solution Part 1 (06:42)
  Challenge: Add Bomb Power Up Solution Part 2 (07:17)
Section 18 - Create Shield Power Up
  Space Cannon - Create Pool for Shield Nodes (07:30)
  Space Cannon - Spawn Shield Power Ups (07:29)
  Space Cannon - Make Shield Power Ups Collectable (06:17)
Section 19 - Challenge 5: Multi Shot Power Up
  Challenge: Multi Shot Power Up (01:08)
  Challenge: Multi Shot Power Up Solution Part 1 (04:28)
  Challenge: Multi Shot Power Up Solution Part 2 (08:02)
  Challenge: Multi Shot Power Up Solution Part 3 (06:59)
  Challenge: Multi Shot Power Up Solution Part 4 (09:35)
Section 20 - Animate Menus
  Space Cannon - Add Show and Hide Methods to Menu Class (06:32)
  Space Cannon - Animate the Menu's Title (06:15)
  Space Cannon - Animate Score Board (05:32)
  Space Cannon - Complete Menu Animations (04:15)
Section 21 - Add Pause Functionality
  Space Cannon - Add Pause and Resume Buttons (04:43)
  Space Cannon - Hook Up Pause Functionality (06:32)
  Space Cannon - Pause When Quitting Or When A Notification Is Received (04:57)
  Space Cannon - Add Music (05:08)
Section 22 - Challenge 6: Add Music On/Off Button
  Challenge: Add Music On Off Button (01:31)
  Challenge: Add Music On Off Button Solution Part 1 (04:13)
  Challenge: Add Music On Off Button Solution Part 2 (05:49)
Section 23 - Complete Space Cannon
  App Icon Template (04:55)
  Complete Space Cannon (04:50)
Section 24 - Assignment 1: Brick Breaker
  Introduction to Brick Breaker Assignment (06:01)
  Brick Breaker Assignment Requirements
  Setup (02:12)
  Add Paddle and Getting it Moving (05:02)
  Limit Paddle Movement (04:36)
  Add Ball (06:56)
  Setup Category Bit Mask (05:17)
  Setup Contact between Ball and Paddle (07:33)
  Complete Contact between Ball and Paddle (08:55)
  Fix Anti Gravity Ball (01:28)
  Add Bricks (08:47)
  Remove Bricks When Hit by a Ball (04:42)
  Create Class for Brick (09:32)
  Setup Blue Brick Behaviour (05:07)
  Create Load Level Method And Array For Level (04:12)
  Load Level (06:17)
  Setup Ball Release Functionality (05:38)
  Add Grey Brick Type (05:38)
  Add Extra Levels (03:40)
  Add Method to Check if Level Is Complete (03:08)
  Load Next Level and Reset Ball (06:22)
  Requred Touch Began Event to Release Ball (03:54)
  Add a Hud Bar (05:20)
  Add a Lives Property (03:23)
  Display Lives (05:56)
  Lose Lives and Reset Game (07:45)
  Add Level Display Label (03:10)
  Setup Property For Current Level Number (06:32)
  Create Particle File (03:10)
  Add Particle Effect When Bricks Are Removed (05:24)
  Create Menu Class (07:43)
  Add Text to Menu (04:00)
  Implement Hide and Show Methods on Menu (04:20)
  Make Menu Functional (07:11)
  Update Colors (03:25)
  Add Sounds (09:38)
  Restrict Paddle Movement When Positioning Ball (03:36)
  Create Yellow Brick Type (03:12)
  Spawn Extra Ball (08:54)
Section 25 - Tappy Plane: A Flappy Bird Evolution
  Setup Project (07:45)
  Source Control With SourceTree (03:58)
  Batch File Rename (02:01)
  Planes Atlas File (07:00)
  Add Plane Class (05:03)
Section 26 - Animating our Plane
  Add PlanesAnimation plist file (03:02)
  Method to Create Animation Action From Array (06:15)
  Get Plane Animating (07:32)
Section 27 - Challenge 7: Animation an Alien
  Challenge: Animation (01:30)
  Challenge: Animation Solution (10:44)
Section 28 - Smoke Puff Particle Trail
  Create EngineRunning Property (07:54)
  Review: Animations (07:13)
  Create Particle file (04:28)
  Add Puff Trail To Plane (06:27)
Section 29 - Get Plane Moving
  Configure Gravity (05:23)
  Add basic physics (06:05)
  Set Target Node For Puff Trail (02:04)
Section 30 - Scrolling Background
  Create Scrolling Node Class (05:58)
  Create TPScrollingLayer (05:32)
  TPScrollingLayer - Implement layoutTiles method (04:13)
  Implement Tile Scrolling (06:40)
  Review: Scrolling (05:18)
  Scrolling In Both Directions (04:03)
  Create Background Layer (07:55)
  Getting the time elapsed between frames (05:30)
Section 31 - Challenge 8: Left & Right Scrolling
  Challenge: Left & Right Scrolling (01:49)
  Challenge: Left & Right Scrolling Solution Part 1 (04:57)
  Challenge: Left & Right Scrolling Solution Part 2 (07:21)
  Challenge: Left & Right Scrolling Solution Part 3 (06:52)
  Challenge: Left & Right Scrolling Solution Part 4 (05:43)
Section 32 - Adding the Terrain to our Game
  Set Background Colour (04:25)
  Add Foreground layer (06:44)
  SKPhysics Body Path Generator (06:03)
  Visualising path based physics bodies (03:59)
  Create path based physics body for plane (04:13)
  Setup Category Bit Masks (05:36)
  Setup didBeginContact method (03:03)
  Implement Collide Method and Get Plane to Crash (06:44)
Section 33 - Game Reset and Plane Rotation
  Reset game (06:19)
  Tweaks on game reset (04:58)
  Add Rotation Effect (05:26)
Section 34 - Create Mountains
  Photoshop Tips: Vectors, Smart Object, Export Layers To Files (08:21)
  Create TPObstacleLayer Class (04:53)
  Implement Update Method (06:07)
  Add createObjectForKey Method (05:18)
  Add Physics Bodies To Mountains (04:07)
Section 35 - Adding Mountain Obstacles
  Create Obstacle Set (05:58)
  Randomize Mountain Obstacle Heights (06:58)
  Recycle Mountain Nodes (07:20)
  Add reset Method (04:50)
  Add Obstacles To Game (06:17)
  ObstacleLayer Pseudo Pooling Check and Review (09:40)
  Source Tree Commits. Context, Discard and Stage by Hunk or Line, Amend Commit (04:15)
  Set Maximum Altitude for Plane (03:24)
Section 36 - Challenge: Flappy Controls
  Flap Challenge - Intro (01:03)
  Flap Challenge - Solution (08:27)
Section 37 - Adding Collectables
  Create Collectable Star Object (06:40)
  Add collectables to obstacle layer (08:19)
  Review of positioning collectables (05:14)
  Get plane to remove the stars it touches (04:23)
  Create class for collectables (08:12)
  Setup creation of collectables to use new class (04:42)
  Hook up scene as collectable delegate (04:56)
  Review of Collectable Setup (07:31)
  Fix Warnings (03:38)
Section 38 - Bitmap Font's
  Create Class for Bitmap Font (05:31)
  Implement Bitmap Font Properties (04:30)
  Start Layout of Bitmap Font Letters (06:39)
  Complete letter layout (07:20)
  Center Align Text (05:57)
  Review of Bitmap Font Class (06:01)
  Add instance of BitmapFontLabel to display score (08:05)
Section 39 - Tilesets
  Create Plist For Tileset Graphics (06:19)
  Setup Singleton (05:06)
  Start Loading Tileset Plist File (05:57)
  Complete Loading of Property List (06:46)
  Randomize Tileset (04:11)
  Return Texture for Key from Current Tileset (02:23)
  Use Tileset Texture Provider to Randomize Mountain Textures (07:30)
Section 40 - Updating the Tileset
  Update Ground Nodes to Use Tileset Texture (03:02)
  Review of Tileset System (08:15)
  Update Background Image to Fill To Bottom (05:09)
Section 41 - Challenge: Obstacle
  Obstacle Challenge - Intro (02:21)
  Obstacle Challenge - Setup ChallengeProvider Class (06:42)
  Obstacle Challenge - Start Implementing Challenge Provider (06:17)
  Obstacle Challenge - Start Implementing Challenges (06:15)
  Obstacle Challenge - Using An Image Editor To Design Challenges (09:56)
  Obstacle Challenge - Load Challenges in Obstacle Layer (08:43)
  Obstacle Challenge Bonus - Mixing up the Textures (08:46)
Section 42 - A Button Class
  Create Button Class (03:24)
  Set Initial Properties on Button (04:27)
  Set Button Scale Based on Touch Events (05:53)
  Test Button and Fix Scaling Issue (07:27)
  Target Action Pattern (06:43)
  Test Button Press Event (04:01)
  Source Tree - Discard Changes to TPGameScene (02:56)
  Review of Button Class (07:14)
Section 43 - Game Over Menu
  Import Graphics For Game Over Menu (04:43)
  Setup Properties on Game Over Menu (04:46)
  Center Rect Property (08:20)
  Test Menu Panel Display (04:25)
Section 44 - Additional Menu Features
  Setup Title Nodes on Game Over Menu (08:56)
  Add Display of Medal (08:30)
  Add Text Alignment to TPBitmapFontLabel (07:23)
  Add Text Labels to Menu (07:58)
  Add Game Over Text and Play Button to Menu (06:31)
  Animate Game Over Text (05:02)
  Animate Menu Panel (05:05)
  Space Cannon - Crash on Quit Bug Fix (03:00)
  Complete Show Animation For Game Over Menu (04:28)
Section 45 - Game State
  Setup Game State in the Game Scene (08:50)
  Trigger Game Over State (06:08)
  Start New Game On Button Press (07:56)
Section 46 - Score Display
  Display Scores and Medal on Game Over Menu (09:53)
  Use NSUserDefaults to Save Best Score (07:28)
Section 47 - Add Effects
  Add Fade To Black Transition Between Games (05:16)
  Add Bump Effect On Plane Crash (04:23)
Section 48 - Get Ready Menu
  Setup TPGetReadyMenu Class (04:22)
  Add Get Ready Text (05:47)
  Add Tap Icons to Get Ready Screen (08:18)
  Hide Get Ready Menu When Game Starts (07:23)
Section 49 - Challenge 9: Weather
  Weather Challenge Intro - Weather Effects in Tappy Plane (02:06)
  Weather Challenge - Create Snow Effect (04:47)
  Weather Challenge - Create Rain Effect (03:11)
  Weather Challenge - Create Weather Layer Class (08:33)
  Weather Challenge - Setup Weather Conditions Property (04:23)
  Weather Challenge - Setup Constants For Tileset Name (04:28)
  Weather Challenge - Display Weather Layer (04:28)
  Weather Challenge - Complete Weather Challenge (04:59)
Section 50 - Additional Tappy Plane Assets
  Tint Plane Red When it Crashes (05:21)
  Freesound.org for Great Sound Assets (03:36)
Section 51 - Sounds
  Creating Looping Sounds with Audacity (05:21)
  Refresh on Using afconvert to Prepare Audio (04:12)
  Sound Manager For More Advanced Audio (06:29)
  Add Crunch Sound on Plane Crash (05:46)
  Add Star Collection Sound (05:00)
  Add Button Sound (06:16)
  Add Engine Sound to Plane (08:15)
  Add Rain Sound (05:20)
Section 52 - Tappy Plane Conclusion
  We've Completed Tappy Plane (03:23)
Section 53 - Alien Runner
  Making Levels with Tiled (02:29)
  Resizing Tiles (05:08)
  Create Tileset Image to Use With Tiled (07:11)
Section 54 - Tiles
  Creating a Tiled Map (06:27)
  Complete Level Using Tiled (07:17)
  Setup Alien Runner Project (05:30)
  Import JSTileMap (03:37)
  Load Tile Map (04:15)
  Setup Camera Node (06:34)
  Scroll Map As Camera Moves (03:29)
  Add Clamping to Camera (06:40)
  Setup Class for Player (05:34)
  Add Object Layer to Tiled Level (04:56)
  Position Player With Marker From Map Object Layer (05:55)
Section 55 - Camera Nodes
  Make Camera Follow Player (05:51)
  Add Velocity to Player and Apply Gravity (07:23)
  Discussion on Using Time Delta for Updates (08:11)
  Setup Target Position on Player (03:14)
Section 56 - Collisions
  Define Collision Rectangle for Player (05:24)
  Show Collision Rectangle Visually (04:55)
  Discussion of Algorithm for World Collision (07:10)
  Declare Method for World Collision (07:07)
  Loop Through Coordinates for Tiles to Examine (05:34)
  Get GID for Tile (06:38)
  Calculate Intersection Between Player And Tile (08:46)
  Work Out Which Way To Move the Player (06:35)
  Complete Collision With World (07:14)
  Test Collide Method (03:16)
  Collide Method Review Part 1 (07:40)
  Collide Method Review Part 2 (04:43)
  Test Left and Right Movement (04:00)
  Fix Bug in Collision Algorithm (03:18)
  Accelerate Player to the Right (06:47)
Section 57 - Player Jumping
  Give Player Jump Ability (06:12)
  Get Player Jumping (05:59)
Section 58 - Gravity
  Setup Properties For Flipping Gravity (04:48)
  Apply Changes to Gravity (06:22)
  Test Flipping of Gravity (03:32)
  Tweak Map and Player Movement (06:25)
  Frame Size With Atlas Sprites (05:01)
  Fix Collision Rectangle Dimensions (06:36)
  Flip Alien Image When Gravity Flipped (05:46)
Section 59 - Changes to Player
  Add Animation to Player (05:04)
  Add State And Change Texture For Player (06:16)
  Reset Game When Falling Too Far (05:03)
  Update Collide Method (04:24)
  Collide Player With Spikes (04:08)
  Make Player Bounce Of Screen When Hitting Spikes (06:46)
Section 60 - Changing Scenes
  Setup Scene Class for Main Menu (04:55)
  Add Title And Alien to Menu (04:23)
  Add Label For Level and Import Button Class (04:22)
  Add Play And Level Buttons (05:31)
  Switch Between Scenes (03:22)
  Create Level Selection Scene (05:41)
  Add Disabled Property to Button (04:45)
  Complete Setup of Disabled Property on Button (02:24)
Section 61 - Level Selection
  Add Level Selection Buttons (06:10)
  Position Level Selection Buttons (03:41)
  Respond to Level Selection Buttons (05:55)
  Create Constants File (04:50)
  Setup Defaults plist for NSUserDefaults (05:38)
  Save Selected Level to NSUserDefaults (06:07)
  Add Constant for Highest Level (03:02)
  Unlock New Levels at Game Over (06:44)
  Add Ability To Complete Level (04:53)
  Add Different Modes to Main Menu (07:24)
  Add Extra Levels (06:40)
  Fix Graphical Glitches Between Tiles (05:21)
  Add Parallax Scrolling Effect (06:03)
  Sound Discussion (04:08)
Section 62 - Challenge Player Movement
  Challenge: Player Movement - Intro (02:44)
  Challenge: Player Movement - Double Jump (03:18)
  Challenge: Player Movement - Left and Right Movement (06:38)
  Challenge: Player Movement - Hook Up Touch Events (07:44)
  Challenge: Player Movement - Set Sprite Direction and Animation (04:23)
  Course Complete!! (02:39)
FAQs
When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound?
After purchase, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy!
If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.
Join 6627 students and Get Started Now