Endless Worlds with Swift and Sprite Kit


Updated on

Course overview

Course type
Paid course
7 hours
33 lessons
Available on completion
Course author
Justin Dike
  • Use a world node to move all the visible objects in play
  • Create level units, or sections of levels, invisibly stitched together, moving at once
  • Generate parts of levels as needed and remove them when they aren’t in use
  • Add player controls, like jumping, running, attacking, etc
  • Program physics objects and detect collisions or contacts
  • Reset levels when players are killed or move outside of the play area


Create limitless levels in a variety of projects, such as RPG's, endless runners, platform games, Frogger games, & more!



This six hour Swift and Sprite Kit tutorial series has an one big theme tying each example project together: gameplay that can go on as long as the player can manage to stay alive. The challenge of an endless-style game isn't to beat up as many street thugs as possible, it taps into something more addictive. An endless game tests your reflexes and makes you struggle to best yourself again, and again, and again. Modern classics like Crossy Road or Banana King are two great examples of endless-style games we'll try to emulate in this series. Along the way, you'll learn some key concepts every Swift and Sprite Kit developer should have in their arsenal of knowledg

Session 1 – The Endlessly Moving World Node

In this first project we will populate a perpetually moving “world” node with randomly generated physics objects. We also look at converting CGPoint locations in Swift from the worldNode coordinates to scene coordinates, enumerating through every child in the scene, adding and clearing out nodes as needed, and much more!

Session 2 – Endless Level Units

In this series of videos we will modify the project from the first section and create “level units”, for example, sections or modules of a level that each can contain their own objects and be generated as needed or removed when they become out-of-view. The finished example project creates a kind of elevator style game where the character hops from platform to platform as long as possible. We will also look at the code to randomly move each platform (or any object) up and down and switch direction if it exceeds the visible screen area, as well as some ever-useful code to always center a world node on the player.

Session 3 – An Endless Frogger Project

In these video tutorials we will create an endless game similar to Frogger or Crossy Road. Level units will again be created on the fly, with the distinction now of being either a “road” unit or “water” unit, each one having their own type obstacles. Physics-wise we will have four Body types: road, water, roadObject (cars) and waterObject (lilypads), and leave the door open to many more!

Session 4 – Endless RPG Style Level

In this session we will convert the previous project to an endless top-down viewed RPG style world. The player can wander endlessly through randomly generated worlds, possibly to avoid objects or collect them. We will setup an array to track “level unit” locations that have already been added, then as the character wanders around, create new level units as needed. We will also include the option to remove level units the character has left (which could replace those units when the character walked back to them)

Session 5 -An Endless Runner

Modeled after the very-popular Banana Kong game, this 5th project builds upon our previous ones in the series with a few notable changes, and ironically some simplifications. This session begins by limiting character movements to only one direction. Then we'll give our character some typical side scroller controls (jumping, running, sliding and gliding). We'll add a looping parallax background, and adjust our LevelUnit and Object classes to create ground/water planes and obstacles for a 2D platform world. And finally we'll finesse our collision detection code so the character can drop down through Platforms when swiping down, break certain objects when sliding, and of course get killed when running into other objects.

Similar courses

Endless Worlds with Swift and Sprite Kit
  • English language

  • Recommended provider

  • Certificate available