Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Getting Started with SpriteKit
Getting Started with SpriteKit

Getting Started with SpriteKit:

eBook
€23.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Getting Started with SpriteKit

Chapter 2. What Makes a Game a Game?

In Chapter 1, The First Step toward SpriteKit, we set the basis of our game by adding a background and the first sprite to our project. In the following pages, I will show you the key elements that take part in every game, such as the movement of sprites in a scene, the detection of touches, and the handling of collisions. You will also learn how to add labels to a scene and play music and sound effects.

The things that you will learn in this chapter are as follows:

  • How to detect touch interaction
  • How to execute actions on sprites
  • How to handle collisions
  • Creating and updating labels
  • Playing music and sound effects

Handling touch events

Our beloved main character is supposed to run though several doors, but some of them are closed and others are open, so it will need to move laterally to choose the right ones. We will need to handle the players' interaction to help the rabbit properly select a door.

By default, SpriteKit listens to touch events, and we can manage them by implementing some of the methods provided by the UIResponder class, which is the parent class of SKNode.

The following four methods are available if you wish to detect and handle touches:

  • The touchesBegan method: This method is triggered as soon as the user touches the screen, and it can detect one or more touches. That's why it receives a set of UITouch instances. We can use this method to select the place where we want the rabbit to be moved in the game.
  • The touchesMoved method: This method will be triggered when one or more fingers that are touching the screen begin to move. We can take advantage of this method to update...

1-star challenge: an easier way to reset position

I chose the solution of running two actions in order to recover the initial position because I wanted to introduce you to sequences, but there is an easier and fancier way of achieving the same result. With the knowledge that you have so far, try to get the same results that you got when using a sequence.

Solution

The key to this challenge is to use the runAction(_:, completion:) method so that we can execute the same block of code as that of resetPositionAction. Go to the initializeWallMovement method and replace moveWallAction with the following code:

wall.runAction(moveWallAction, completion: {
    self.wall.position = CGPoint(x:(self.view!.bounds.size.width/2), y: self.view!.bounds.size.height + self.wall.frame.size.height/2)
})

There you are. With this change, you will just execute one action with a completion block associated with it, thus obtaining the same behavior as the one that you got before.

Creating loops

Now that we have the wall...

Collision management

In the previous section of this chapter, we learned the most important techniques to perform actions on nodes, namely movements. Now that everything is moving, we need a way to detect when the main character tries to cross a closed door (a wrong door) or an open one (a correct door).

Detecting and handling collisions is one of the main techniques in game development, as a vast percentage of games is founded upon enemies trying to hit our character in many different ways or the player trying to kill the enemies by shooting them, jumping at them, and so on. But, what is a collision?

Understanding collisions

In game development, a collision is an intersection between two or more elements in a scene. There are different ways to detect them, from the most basic's such as checking whether the area of the frame of each node intersects other nodes' frames, to the advanced ones such as making use of the physics engines that most of the games' engines (including SpriteKit...

1-star challenge: check collisions accurately

We learned how to detect collisions thanks to the intersects method provided by CGRect, but in this way, the collision will be triggered as soon as the rabbit's ears touch the doors. Let's add another condition to the if statement in detectCollisions in order to take into account the rabbit's and door's frame position. Thus, the collision will only happen when the door reaches half the rabbit's frame. As shown in the following screenshot:

1-star challenge: check collisions accurately

Solution

This challenge is very easy and I hope you were able to solve it. To perform this check, you just need to add the following condition to the if statement:

&& (node.position.y - node.frame.height/2) <= self.rabbit.position.y

Keep this line in the code as we are going to use this condition in order to make the collisions more realistic.

Creating labels

In almost every game, there are different elements (scores or text labels) to provide visual information to the player and give them an incentive to keep playing in order to beat its score record. In this section, we are going to learn how to add these informative elements to a scene.

In SpriteKit, we have a class named SKLabelNode that inherits from SKNode and provides all the methods and attributes to load fonts and manage every label that we want to show on the screen. We are going to use this class to add a score label at the top-right side of the screen and update it, as the rabbit avoids wrong doors.

Let's start by creating our first label. Then, we will learn how to update it programmatically. For this purpose, we are going to need a new variable. So, add the following line to GameScene just after the declaration of isCollisionDetected:

private var labelScore: SKLabelNode!

Next, we need to call a method to initialize it. So, add the following line at the end of didMoveToView...

Handling touch events


Our beloved main character is supposed to run though several doors, but some of them are closed and others are open, so it will need to move laterally to choose the right ones. We will need to handle the players' interaction to help the rabbit properly select a door.

By default, SpriteKit listens to touch events, and we can manage them by implementing some of the methods provided by the UIResponder class, which is the parent class of SKNode.

The following four methods are available if you wish to detect and handle touches:

  • The touchesBegan method: This method is triggered as soon as the user touches the screen, and it can detect one or more touches. That's why it receives a set of UITouch instances. We can use this method to select the place where we want the rabbit to be moved in the game.

  • The touchesMoved method: This method will be triggered when one or more fingers that are touching the screen begin to move. We can take advantage of this method to update a node's position...

1-star challenge: an easier way to reset position


I chose the solution of running two actions in order to recover the initial position because I wanted to introduce you to sequences, but there is an easier and fancier way of achieving the same result. With the knowledge that you have so far, try to get the same results that you got when using a sequence.

Solution

The key to this challenge is to use the runAction(_:, completion:) method so that we can execute the same block of code as that of resetPositionAction. Go to the initializeWallMovement method and replace moveWallAction with the following code:

wall.runAction(moveWallAction, completion: {
    self.wall.position = CGPoint(x:(self.view!.bounds.size.width/2), y: self.view!.bounds.size.height + self.wall.frame.size.height/2)
})

There you are. With this change, you will just execute one action with a completion block associated with it, thus obtaining the same behavior as the one that you got before.

Creating loops

Now that we have the wall...

Collision management


In the previous section of this chapter, we learned the most important techniques to perform actions on nodes, namely movements. Now that everything is moving, we need a way to detect when the main character tries to cross a closed door (a wrong door) or an open one (a correct door).

Detecting and handling collisions is one of the main techniques in game development, as a vast percentage of games is founded upon enemies trying to hit our character in many different ways or the player trying to kill the enemies by shooting them, jumping at them, and so on. But, what is a collision?

Understanding collisions

In game development, a collision is an intersection between two or more elements in a scene. There are different ways to detect them, from the most basic's such as checking whether the area of the frame of each node intersects other nodes' frames, to the advanced ones such as making use of the physics engines that most of the games' engines (including SpriteKit) provide...

Left arrow icon Right arrow icon

Key benefits

  • Learn the key concepts of game development in iOS
  • Take advantage of SpriteKit to create your own games and improve your apps
  • Follow the step-by-step chapters to create a complete product ready to submit to the App Store

Description

SpriteKit is Apple’s game engine to develop native iOS games. Strongly boosted by the Apple Inc., Cupertino, it has increased in popularity since its first release. This book shows you the solutions provided by SpriteKit to help you create any 2D game you can imagine and apply them to create animations that will highlight your existing apps. This book will give you the knowledge you need to apply SpriteKit to your existing apps or create your own games from scratch. Throughout the book, you will develop a complete game. The beautiful designs implemented in the game in this book will easily lead you to learn the basis of 2D game development, including creating and moving sprites, and adding them to a game scene. You will also discover how to apply advanced techniques such as collision detection, action execution, playing music, or running animations to give a more professional aspect to the game. You will finish your first game by learning how to add a main menu and a tutorial, as well as saving and loading data from and to the player’s device. Finally, you will find out how to apply some mobile games techniques such as accelerometer use or touch detection.

Who is this book for?

Getting Started with SpriteKit is for beginner-level iOS developers who want to add an extra edge to their apps and create amazing games using SpriteKit. It doesn’t matter whether you have experience in iOS development or not as this book will show you the swift tricks you can use to create games.

What you will learn

  • Create and configure a SpriteKit project from scratch
  • Load and manage the basic elements of games such as sprites, labels, and geometrical primitives
  • Handle touch events, detect collisions, and play sound audio files
  • Create complex elements, animate sprites, and run the parallax effect
  • Complete your games with key components such as a main menu, transitions between scenes, a tutorial, and the ability to load and save data
  • Increase the efficiency of your device using the accelerometer or by adding shaders, lights, and shadows
  • Gain complementary techniques such as creating or finding audio resources, applying SpriteKit to apps, or using third-party tools

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jan 25, 2016
Length: 226 pages
Edition : 1st
Language : English
ISBN-13 : 9781785885280
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Jan 25, 2016
Length: 226 pages
Edition : 1st
Language : English
ISBN-13 : 9781785885280
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 98.97
Swift 3 Game Development
€32.99
Getting Started with SpriteKit
€32.99
Game Development with Swift
€32.99
Total 98.97 Stars icon

Table of Contents

7 Chapters
1. The First Step toward SpriteKit Chevron down icon Chevron up icon
2. What Makes a Game a Game? Chevron down icon Chevron up icon
3. Taking Games One Step Further Chevron down icon Chevron up icon
4. From Basic to Professional Games Chevron down icon Chevron up icon
5. Utilizing the Hardware and Graphics Processor Chevron down icon Chevron up icon
6. Auxiliary Techniques Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.2
(5 Ratings)
5 star 60%
4 star 0%
3 star 40%
2 star 0%
1 star 0%
The_Gamebook_Nook Jul 23, 2016
Full star icon Full star icon Full star icon Full star icon Full star icon 5
You will make a simple game, and will have knowledge / intuition to tweak it or make your own version. As a tutor and a student, i found this book to be effective.
Amazon Verified review Amazon
SuJo Feb 27, 2016
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Excellent resource on learning SpriteKit, much easier than the older methods for creating iOS games. It's easy to follow along with, the project created in the book covers all the basics and even get's you up to submitting your application to Apple which is really helpful. I don't really enjoy following along in a book and getting to the end just to see I'll need to pickup another book to continue onward, this book didn't do that and I highly recommend it.
Amazon Verified review Amazon
pauland Feb 25, 2016
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I've seen a few books on SpriteKit and I think this is probably the easiest to assimilate. The book is mostly built around a single game project that expands in completeness/complexity as the book progresses. The author takes you from a very simplistic app to one that has simple gameplay but covers all of the basic operation of SpriteKit to a complete app that includes sound, hardware interaction and particle emitters.At first I did wonder if this concentration on a single game would be limiting, but it is not. The author takes the time to explain just about everything and the one game really is an ideal vehicle to understand what you need to build just about any game with SpriteKit. I particularly liked the section about adding shadows.A great intro to Spritekit, clearly explained and with some very practical information about handling Audio.
Amazon Verified review Amazon
Dave Aug 15, 2019
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
The book presents, in a pretty straightforward way, how to get a project up and running. However, I was unable to make progress past the beginning of the overall project, since the download files are impossible to obtain from the PacktPub site. To their credit, the publishing company responded in a timely fashion to my plight, and provided links to all of the necessary materials. So, I have upgraded my assessment.
Amazon Verified review Amazon
Vince Nov 13, 2017
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
Um. Not sure. One the one hand this book covers the subject I am interested in - SpriteKit - on the other hand it seems to be very superficial in its coverage of details; by which I mean it falls back frequently on the standard documentation. It reads very much written to order rather than written from self motivation.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.