Endless Worlds with Swift and Sprite Kit

Create limitless levels in a variety of projects, such as RPG's, endless runners, platform games, Frogger games, & more!
4.1 (22 ratings) Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
290 students enrolled
$19
$30
37% off
Take This Course
  • Lectures 33
  • Length 6.5 hours
  • Skill Level Intermediate Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 6/2015 English

Course Description

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.

What are the requirements?

  • Some fundamentals of programming with Swift
  • Xcode on a Mac

What am I going to get from this course?

  • 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

What is the target audience?

  • Intermediate Swift / Sprite Kit developers

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: The Endlessly Moving World Node
Series Introduction
Preview
01:22
All Course Projects (For Every Section)
Article
07:22

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!

Quick Overview of the Starting Template
11:05
Create a Perpetually Moving World Node
16:33
Clearing Unseen Nodes and Adding the Player
14:25
Touching Objects to Move them and adding the Contact Listener
18:06
Section 2: Endless Level Units
01:50

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 get created or removed as needed. 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.

Creating the Level Unit Class
19:15
Moving the World and Platforms within the Level Unit
20:11
Centering the World on the Character
19:54
Section 3: The "Crossy Frogger" Project
01:52

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" type or "water" type, 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 possibly!

Tweaks from the Last Project and Creating Multiple Level Types
16:06
Different Objects for Different Level Types
18:26
Changing Object Speeds and Repositioning Offscreen Objects
12:46
Hopping on Water Objects
15:39
Resetting Levels
15:36
Section 4: Endless RPG Style Level
02:23

In these vides 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)

Adjusting the PlayerClass and Movements
16:22
Adding Endless LevelUnits Going North
12:48
Adding Endless Levels Units Going North (continued)
09:27
Adding All LevelUnits and Clearing Unseen Units
12:46
Adding Grass and Water Objects within Each Level Unit
10:07
Section 5: An Endless Runner
The Endless Runner Tutorial - Introduction
Preview
01:57
Initial Setup
15:40
Player Setup and Adding Jump Controls
11:10
Player Setup and Adding Jump Controls (continued)
09:44
Adding Gliding and Sliding Controls
12:44
Looping Background and Resetting the World
13:56
Looping Background and Resetting the World (continued)
08:56
Adjusting the Level Unit Class
10:44
Adjusting the Object Class
16:26
Contact Testing and Wrap Up
14:40

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Justin Dike, CartoonSmart / Owner / Leader Developer and Instructor

Justin Dike is the founder of CartoonSmart one of the internet's first video training websites. He is a long-time illustrator and animator, focusing mostly on Adobe Flash, and experienced programmer with Swift, Sprite Kit, Actionscript 3, Objective C and Cocos2d. For CartoonSmart he has recorded hundreds of hours of video tutorials and recently published his first full length book titled iOS Programming with Xcode and Cocos2d available in the iBookstore. Justin has also developed many iOS games, including a side scrolling game engine.

Ready to start learning?
Take This Course