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 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

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 : 9781787122420
Vendor :
Apple
Languages :
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 : Feb 07, 2017
Length: 258 pages
Edition : 2nd
Language : English
ISBN-13 : 9781787122420
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

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.