Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
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
Swift 3 Game Development
Swift 3 Game Development

Swift 3 Game Development: Build iOS 10 Games with Swift 3.0 , Second Edition

eBook
€17.99 €26.99
Paperback
€32.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Swift 3 Game Development

Chapter 2. Sprites, Camera, Action!

We will start our first game by learning how to draw shapes and textures on the screen. SpriteKit makes drawing simple by doing a lot of the hard work and exposing simple classes we can use for rendering. We are free to focus on building great gameplay experiences while SpriteKit performs the mechanical work of the game loop.

To draw an item on the screen, we create a new instance of a SpriteKit node. These nodes are simple; we attach a child node to our scene, or to existing nodes, for each item we want to draw. Sprites, particle emitters, and text labels are all considered nodes in SpriteKit.

Note

The game loop is a common game design pattern used to constantly update the game many times per second and maintain the same gameplay speed on fast or slow hardware. SpriteKit wires new nodes into the game loop automatically. As you gain expertise with SpriteKit, you may wish to explore the game loop further to understand what is going on...

Sharpening our pencils

There are three quick items to take care of before we start drawing. To begin the preparation, go through the following steps:

  1. Since we will design our game to use landscape screen orientations, we will have to disable the portrait view altogether:
    1. With your game project open in Xcode, select the overall project folder in the project navigator (the uppermost item).
    2. You will see your project settings in the main frame of Xcode. Under Deployment Info, find the Device Orientation section.
    3. Uncheck the Portrait option, as shown in the following screenshot:

      Sharpening our pencils

  2. We need to resize our scene to fit the new landscape view. Follow these steps to resize the scene:
    1. Open GameViewController.swift from the project navigator and locate the viewDidLoad function inside the GameViewController class. The viewDidLoad function is going to fire before the game realizes it is in landscape view, so we need to use a function that fires later in the startup process. Delete viewDidLoad completely, removing...

Checkpoint 2-A

I will provide two checkpoints per chapter, each with a link to download the sample code at that point in time. I hope this will help you move forward if you are stuck or want to check your code against mine. If you want to download the sample project upto this point, you can do so from http://www.joyfulgames.io/chapter-2

Drawing your first sprite

It is time to write some game code-fantastic! Open your GameScene.swift file and find the didMove function. Recall that this function fires every time the game switches to the GameScene. We will use this function to get familiar with the SKSpriteNode class. You will use SKSpriteNode extensively in your game whenever you want to add a new 2D graphic entity.

Note

The term sprite refers to a 2D graphic or animation that moves around the screen independently from the background. Over time, the term has evolved to refer to any game object on the screen in a 2D game. We will create and draw your first sprite in this chapter: a happy little bee.

Building a SKSpriteNode class

Let's begin by drawing a blue square on the screen. The SKSpriteNode class can draw both texture graphics and solid blocks of color. It is often helpful to prototype your new game ideas with blocks of color before you spend time on artwork. To draw the blue square, add an instance of SKSpriteNode to the game:

override func didMove(to view: SKView) { 
    // Make the scene position from its lower left 
    // corner, regardless of any other settings: 
    self.anchorPoint = .zero 
 
    // Instantiate a constant, mySprite, instance of SKSpriteNode 
    // The SKSpriteNode constructor can set color and size 
    // Note: UIColor is a UIKit class with built-in color presets 
    // Note: CGSize is a type we use to set node sizes 
    let mySprite = SKSpriteNode(color: .blue, size: 
    CGSize(width: 50, height: 50)) 
 
    // Assign our sprite a position in points, relative to its 
    // parent node (in this case, the scene) 
    mySprite.position =...

Sharpening our pencils


There are three quick items to take care of before we start drawing. To begin the preparation, go through the following steps:

  1. Since we will design our game to use landscape screen orientations, we will have to disable the portrait view altogether:

    1. With your game project open in Xcode, select the overall project folder in the project navigator (the uppermost item).

    2. You will see your project settings in the main frame of Xcode. Under Deployment Info, find the Device Orientation section.

    3. Uncheck the Portrait option, as shown in the following screenshot:

  2. We need to resize our scene to fit the new landscape view. Follow these steps to resize the scene:

    1. Open GameViewController.swift from the project navigator and locate the viewDidLoad function inside the GameViewController class. The viewDidLoad function is going to fire before the game realizes it is in landscape view, so we need to use a function that fires later in the startup process. Delete viewDidLoad completely, removing...

Checkpoint 2-A


I will provide two checkpoints per chapter, each with a link to download the sample code at that point in time. I hope this will help you move forward if you are stuck or want to check your code against mine. If you want to download the sample project upto this point, you can do so from http://www.joyfulgames.io/chapter-2

Drawing your first sprite


It is time to write some game code-fantastic! Open your GameScene.swift file and find the didMove function. Recall that this function fires every time the game switches to the GameScene. We will use this function to get familiar with the SKSpriteNode class. You will use SKSpriteNode extensively in your game whenever you want to add a new 2D graphic entity.

Note

The term sprite refers to a 2D graphic or animation that moves around the screen independently from the background. Over time, the term has evolved to refer to any game object on the screen in a 2D game. We will create and draw your first sprite in this chapter: a happy little bee.

Building a SKSpriteNode class


Let's begin by drawing a blue square on the screen. The SKSpriteNode class can draw both texture graphics and solid blocks of color. It is often helpful to prototype your new game ideas with blocks of color before you spend time on artwork. To draw the blue square, add an instance of SKSpriteNode to the game:

override func didMove(to view: SKView) { 
    // Make the scene position from its lower left 
    // corner, regardless of any other settings: 
    self.anchorPoint = .zero 
 
    // Instantiate a constant, mySprite, instance of SKSpriteNode 
    // The SKSpriteNode constructor can set color and size 
    // Note: UIColor is a UIKit class with built-in color presets 
    // Note: CGSize is a type we use to set node sizes 
    let mySprite = SKSpriteNode(color: .blue, size: 
    CGSize(width: 50, height: 50)) 
 
    // Assign our sprite a position in points, relative to its 
    // parent node...

Adding animation to your toolkit


Before we dive back in to sprite theory, we should have some fun with our blue square. SpriteKit uses action objects to move sprites around the screen. Consider this example: if our goal is to move the square across the screen, we must first create a new action object to describe the animation. Then, we instruct our sprite node to execute the action. I will illustrate this concept with many examples in the chapter. For now, add this code in the didMove function, below the self.addChild(mySprite) line:

// Create a new constant for our action instance 
// Use the move action to provide a goal position for a node 
// SpriteKit will tween to the new position over the course of the 
// duration, in this case 5 seconds 
let demoAction = SKAction.move(to: CGPoint(x: 300, y: 150), 
duration: 3) 
// Tell our square node to execute the action! 
mySprite.run(demoAction) 

Run the project. You will see our blue square slide across...

The story on positioning


SpriteKit uses a grid of points to position nodes. In this grid, the bottom left corner of the scene is (0,0), with a positive x-axis to the right and a positive y-axis to the top.

Similarly, on the individual sprite level, (0,0) refers to the bottom left corner of the sprite, while (1,1) refers to the top right corner.

Alignment with anchor points

Each sprite has an anchorPoint property, or an origin. The anchorPoint property allows you to choose which part of the sprite aligns to the sprite's overall position.

Note

The default anchor point is (0.5,0.5), so a new SKSpriteNode centers perfectly on its position.

To illustrate this, let's examine the blue square sprite we just drew on the screen. Our sprite is 50 points wide and 50 points tall, and its position is (150,150). Since we have not modified the anchorPoint property, its anchor point is (0.5,0.5). This means the sprite will be perfectly centered over the (150,150) position on the scene's grid. Our sprite's left...

Adding textures and game art


You may want to take a screenshot of your blue box for your own enjoyment later. I absolutely love reminiscing over old screenshots of my finished games when they were nothing more than simple colored blocks sliding around the screen. Now it is time to move past that stage and attach some fun artwork to our sprite.

Downloading the free assets

I am providing a downloadable pack for all of the art assets I use in this book. I recommend you use these assets so you will have everything you need for our demo game. Alternatively, you are certainly free to create your own art for your game if you prefer.

These assets come from an outstanding public domain asset pack from Kenney Game Studio. I am providing a small subset of the asset pack that we will use in our game. Download the game art from http://www.joyfulgames.io/assets

More exceptional art

If you like the art, you can download over 20,000 game assets in the same style for a small donation at http://kenney.itch.io...

Designing for retina


You may notice that our bee image is quite blurry. To take advantage of retina screens, assets need to be twice the pixel dimensions of their node's size property (for most retina screens), or three times the node size for the Plus versions of the iPhone. Ignore the height for a moment; our bee node is 100 points wide, but the PNG file is only 84 pixels wide. The PNG file needs to be 300 pixels wide to look sharp on the Plus-sized iPhones, or 200 pixels wide to look sharp on 2X retina devices.

SpriteKit will automatically resize textures to fit their nodes, so one approach is to create a giant texture at the highest retina resolution (three times the node size) and let SpriteKit resize the texture down for lower density screens. However, there is a considerable performance penalty, and older devices can even run out of memory and crash from the huge textures.

The ideal asset approach

These double and triple-sized retina assets can be confusing to new iOS developers. To...

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Create and design games for iPhone and iPad using SpriteKit and Swift 3.0
  • Learn the core fundamentals of SpriteKit game development and mix and match techniques to customize your game
  • This step-by-step practical guide will teach you to build games from scratch using little-known tips and strategies for maximum fun

Description

Swift is the perfect choice for game development. Developers are intrigued by Swift 3.0 and want to make use of new features to develop their best games yet. Packed with best practices and easy-to-use examples, this book leads you step by step through the development of your first Swift game. This book starts by introducing SpriteKit and Swift's new features that can be used for game development. After setting up your first Swift project, you will build your first custom class, learn how to draw and animate your game, and add physics simulations. Then, you will add the player character, NPCs, and powerups. To make your game more fun and engaging, you will learn how to set up scenes and backgrounds, build fun menus, and integrate with Apple Game Center to add leaderboards and achievements. You will then make your game stand out by adding animations when game objects collide, and incorporate proven techniques such as the advanced particle system and graphics. Finally, you will explore the various options available to start down the path towards monetization and publish your finished games to the App Store. By the end of this book, you will be able to create your own iOS games using Swift and SpriteKit.

Who is this book for?

If you wish to create and publish fun iOS games using Swift, then this book is for you. You should be familiar with basic programming concepts. However, no prior game development or Apple ecosystem experience is required.

What you will learn

  • Deliver powerful graphics, physics, and sound in your game by using SpriteKit
  • Set up the scene using the new capabilities of the scene editor and custom classes
  • Maximize gameplay with little-known tips and strategies for fun and repeatable action
  • Make use of animations, graphics, and particles to polish your game
  • Understand the current mobile monetization landscape to choose the best option for your own situation
  • Integrate your game with Game Center so that your players can share their high scores and achievements
  • Publish your game to the App Store and enjoy people playing your games

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Feb 07, 2017
Length: 258 pages
Edition : 2nd
Language : English
ISBN-13 : 9781787127753
Vendor :
Apple
Languages :
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : Feb 07, 2017
Length: 258 pages
Edition : 2nd
Language : English
ISBN-13 : 9781787127753
Vendor :
Apple
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.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
€189.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
€264.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 102.97
Swift 3 Game Development
€32.99
Swift 3 Object-Oriented Programming
€32.99
Swift 4 Programming Cookbook
€36.99
Total 102.97 Stars icon

Table of Contents

13 Chapters
1. Designing Games with Swift Chevron down icon Chevron up icon
2. Sprites, Camera, Action! Chevron down icon Chevron up icon
3. Mix in the Physics Chevron down icon Chevron up icon
4. Adding Controls Chevron down icon Chevron up icon
5. Spawning Enemies, Coins, and Power-ups Chevron down icon Chevron up icon
6. Generating a Never-Ending World Chevron down icon Chevron up icon
7. Implementing Collision Events Chevron down icon Chevron up icon
8. Polishing to a Shine - HUD, Parallax Backgrounds, Particles, and More Chevron down icon Chevron up icon
9. Adding Menus and Sounds Chevron down icon Chevron up icon
10. Standing Out in the Crowd with Advanced Features Chevron down icon Chevron up icon
11. Choosing a Monetization Strategy Chevron down icon Chevron up icon
12. Integrating with Game Center Chevron down icon Chevron up icon
13. Ship It! Preparing for the App Store and Publication Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.5
(6 Ratings)
5 star 50%
4 star 50%
3 star 0%
2 star 0%
1 star 0%
Filter icon Filter
Top Reviews

Filter reviews by




Alexander Key Mar 03, 2017
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I'm still not finished with the book, but after skimming through as a semi intermediate Swift programmer It's a great introduction into Spritekit and writing a basic game, it's tailored to beginners so don't feel discouraged if you're new to Swift, Stephen's approach is slow and makes sure to explain things thoroughly which is great.Looking forward to finishing and will update my review when I do so
Amazon Verified review Amazon
Jan Schee Apr 09, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
The book clearly guides reader step by step to develop a simple game o iOS.
Amazon Verified review Amazon
CrescendoLife Apr 20, 2017
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I highly recommend this book/author.My background going into this book:Very basic understanding of Xcode--able to set up project and work on sample code and playgrounds using free Apple Education books 1) Intro to App Development with Swift 2) The Swift Programming Language (Swift 3.1)Other somewhat limited previous experience setting up Cordova for iPhone app/programs in Xcode.The reason for giving background: knowing how to set up Xcode did not refer to the guidance in this book regarding setting up a programming environment.That said, this book was as close as I've seen in technical books to an "A" were it to receive a grade.1) The incorporating assets from online was a seamless experience.2) The code from the book was explained and/or written lucidly so as to permit understanding and be able to apply the concepts in personal projects with confidence.3) Also the instructions for adding code to the ongoing project were done in such a way that out of 100+/- code additions to be copy/pasted or typed I had to check against the repo twice which was easily done.4) The code just worked with no tinkering--which translates to truly being able to finish the project as written.PLEASE NOTE: I only needed to complete through Chapter 11 for my purposes. So you will need to rely on others for a review of Chapters 11 (Integrating with Game Center) and 12 (Ship it...)
Amazon Verified review Amazon
PocketTim May 05, 2017
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
Good Points:- Spritekit, nodes and children and the accompanying logic is explained very clearly, this is the first learning resource that has made it all click for me.- Very quick results after only a few pages and the code snippets provided are reusable as many ways as your imagination can see fit.- Even if you're completely new to programming and Xcode, as long as you've got a Mac you'll be able to recreate the example game with no trouble and have some confidence in editing it slightly.Bad Points:- The Swift syntax and language is not explained at all. The author explains what the code is doing, but not how the code works. This is not a resource for learning swift. There's nothing really wrong with this as it's not what the book is for but it's worth keeping in mind before buying.- Many images are pretty much useless and although links to the full colour variants are provided, I don't like to break away from a book like this when I've already got enough to do.Definitely worth a buy if you have some programming knowledge and you want to take a step into the world of 2D Swift Game Development.
Amazon Verified review Amazon
The Man Apr 12, 2017
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
Good book, not for a total beginner to programming or to Swift. Book gets confusing near the end and the support email never responded when I emailed them for clarity. On the whole a good book.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.