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
Free Learning
Arrow right icon
Building Games with Flutter
Building Games with Flutter

Building Games with Flutter: The ultimate guide to creating multiplatform games using the Flame engine in Flutter 3

eBook
$9.99 $30.99
Paperback
$38.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
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

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

Building Games with Flutter

Chapter 1: Getting Started with Flutter Games

Welcome to Building Games with Flutter!

We will show you how to use Google's Flutter framework to build scalable games that work across mobile and web platforms. Flutter may seem a strange choice at first for building games because there are more established frameworks for making games, such as Unity or Unreal Engine, but a lot of these tools are very complex to learn and it takes a long time to start producing games with them.

Building on your existing knowledge of Flutter and Dart, we will take you through the steps needed to build a 2D game that will work across all supported platforms. Starting with the basics, we will build on this knowledge and gradually get on to more advanced game topics. By the end of the book, you will be able to make your own 2D games containing the following:

  • Animating graphics around the screen
  • Playing sound effects and music
  • Controlling your player with keys, joystick, or gestures
  • Detecting when graphics collide
  • Creating game level maps and navigating around them
  • Designing games
  • Scaling the game across different platforms
  • Advanced graphical effects
  • Intelligent enemies

We will cover the core concepts with examples and then build on this, chapter by chapter, gradually building up a full game that works across different devices. Each chapter will contain code samples to help learn the building blocks of game development, along with the code, image, and sound resources to build our complete game. The game involves the player navigating around a map and avoiding the enemies while collecting as much gold as they can.

In this chapter, we want to delve a bit deeper into Flutter and Dart and what features they have that make them a great choice for game development. This will give you an understanding of why Flutter and Dart can be used for fast, smooth games across many platforms.

In this chapter, we will cover the following topics:

  • Working with Flutter
  • Using Dart
  • Summarizing the book
  • Creating a simple example animation

We have a lot to cover, so let's get started!

Technical requirements

In this chapter, you should have your code editor set up along with the latest versions of Flutter and Dart installed. The book is based on Flutter v3.0.0, Dart 2.17.0, and Flame v1.0.0.

All the source code for this book can be downloaded from the Git repository at https://github.com/PacktPublishing/Building-Games-with-Flutter.git.

The source code for this chapter specifically can be found here: https://github.com/PacktPublishing/Building-Games-with-Flutter/tree/main/chapter01.

Working with Flutter

You will have used Flutter to build apps or websites before and may be wondering whether Flutter is good enough to make great games. Flutter is a great choice for game programming for the following reasons:

  • Flutter has very fast rendering times and is scalable across many platforms.
  • Flutter games aim to draw at 60 frames per second (FPS) for smooth animation, or 120 FPS on devices capable of supporting higher refresh rates.
  • Flutter code uses a single code base to make maintenance easier and enables the code to run on many devices.
  • The Flutter core is written in C++, which makes games run at native speeds.
  • Flutter is cost-effective due to being open source (businesses like Flutter because they don't have to pay for expensive licenses as they have to with some other frameworks).

Unlike other frameworks, Flutter does not use native components and instead draws its own, all drawn with the lightning-fast Skia Graphics Engine. Skia is an open source graphics library that works on a variety of hardware and software platforms, which abstracts away platform-specific graphics APIs that are different on each platform. The APIs provide functionality for drawing shapes, text, and images.

Now that we have explained Flutter, let's delve deeper into the language that Flutter uses, Dart.

Using Dart

In this section, we will discuss Dart and the language features that make it a great fit for game development. We will discuss how Dart is compiled, and how it uses threads and garbage collection. We will also discuss great features such as how hot reload aids us in developing code fast.

Compilation types

Computer programming languages can be either static or dynamic. A static language will be compiled into machine code before it runs, such as C++. A dynamic language is executed by an interpreter, so it does not need to be compiled before running (such as JavaScript).

As programming languages evolved, virtual machines were invented, which made it easier to port a language to a new hardware platform. The code is converted to bytecode, which is then run on the virtual machine. Java is an example of a language that uses bytecode.

The virtual machine imitates hardware in software and can be ported to run on different hardware platforms, making the code portable.

As compiler technology evolved, just-in-time (JIT) compilers were invented, which improved the performance of code running on virtual machines by compiling the code on the fly.

Compiling a program into machine code before running became known as ahead-of-time (AOT) compilation. Dart is unique in that it supports both JIT and AOT compilation types, which provides a massive advantage for developers. Developers can distribute the app compiled with AOT for maximum speed and performance, which helps games run smoothly.

When running in JIT compilation mode, Flutter and Dart have an amazing feature called stateful hot reload that cuts down development time.

Hot reload

Flutter uses the JIT compiler to allow you to reload and run code in less than a second. This allows you to change code and see the changes reflected on the emulator or web browser instantly, while retaining the internal state of the game.

This is great for game development as you can modify code and see the effect of the change, which speeds up development massively. It feels like painting with code!

For instance, you might reposition a graphic by a few pixels or change a color. In traditional development, you would have to rebuild the code (which could take many minutes) to see the change, but in Flutter, this is instant.

Native bridge

Dynamic languages such as JavaScript communicate with the native code on the platform over a bridge, which is very slow. They do this for things such as drawing the native components of the platform they are running on.

The native bridge is used to provide an interface between dynamic code and native code for all code, sending state information for user interface (UI) components.

In Flutter, instead of this, Skia draws all the components on a canvas (and makes them look and feel like native components), so it bypasses the need for a native bridge.

This is massive because with a native bridge you also need to pass the state of the UI components before they can be drawn, which slows everything down and can cause your UI to skip frames instead of keeping the animation smooth.

Garbage collection

Dart uses an advanced garbage collection system that quickly handles short-lived objects in memory.

As Flutter rebuilds the widget tree every frame, it throws away the old objects and recreates new objects. In a language such as Java, this would cause issues, but Dart is optimized to handle this very quickly.

Most languages require the use of locks to access shared memory, but Dart can perform its garbage collection most of the time without using locks. This fast garbage collection results in very smooth graphics performance, which greatly enhances our game.

Thread control

The developer has more control over code execution in Dart due to the way threads are implemented. Because Dart doesn't usually require locks for accessing shared memory, unlike most other languages, we have more control over the execution of the code.

Without locks, we avoid a type of call called a race condition, which can happen when separate threads want access to the shared resource (in this case, memory) and it can't be accessed because some other thread has locked access and the lock has to be released before other threads can access it.

In this section, we have discussed how the features of the Dart language help us to write fast games. In the next section, we will summarize what you will learn throughout the book.

Summarizing the book

In the following subsections, let's start to take a look at what each chapter will explore.

Flame

In the next chapter, Chapter 2, Working with the Flame Engine, we will cover the basics of how to use the Flame engine library to set up a game loop, and how to organize your assets for efficient loading.

Designing a game

It is important to plan ahead so that you have a blueprint to refer to as you progress through your game.

In Chapter 3, Building a Game Design, we will talk about how to plan and design a game using an example that I will refer to throughout the book.

Graphics

Apart from text-based games, all games have graphics. The graphics are the first thing someone will see when deciding whether to buy or play your game, so it's important for these to look nice if you want to sell your game.

In Chapter 4, Drawing and Animating Graphics, we will show you how to draw graphics on the screen, and how to animate them so they look real. We will also show you how to detect when graphics collide with each other, such as a bullet hitting an enemy, which can be used to trigger another animation, such as the enemy exploding.

Input

All games require some type of input, whether this is touching a screen, pressing a key, or moving a virtual joystick to control a player.

In Chapter 5, Moving the Graphics with Input, we will explain the many methods for controlling the character so that the input and animation are synchronized and feel smooth and responsive.

Sounds

Sound effects and music play an important part in games to enhance the experience for the player. The background music also plays an important part in any game; as you play the game, the music can change to highlight something important in the game or to change the mood of the game.

In Chapter 6, Playing Sound Effects and Music, we will discuss how to synchronize playing a sound effect in response to a game event, such as playing an explosion sound when a bullet collides with an enemy.

Level design

Most games are not played on a single screen and require careful thought about how each level is designed.

In Chapter 7, Designing Your Own Levels, we will explain how to load graphics, sounds, and level data that is needed for the current level, to ensure we don't run into memory or performance issues, which can be a real problem when developing games for low-end devices such as mobile phones.

We will also explain how to make a map that is larger than the physical screen, and how to navigate your player around the screen and scroll the map as the player moves around.

Cross-platform games

One of the key benefits of using Flutter and Dart is the cross-platform features it has for making the game work across multiple devices. We will discuss this topic in more detail in Chapter 8, Scaling the Game for Web and Desktop.

Advanced graphics effects

As we mentioned earlier, graphics are the first thing a user sees so they must look impressive.

In Chapter 9, Implementing Advanced Graphics Effects, we discuss advanced graphical effects and what we can do to make your game look amazing.

We will use particle effects to enhance the existing graphics and make the game really stand out.

We will also discuss how graphical layers can be used to draw graphics more efficiently when there is a lot of animation on the screen.

Game AI

Games are more fun when they are realistic, which we can achieve with artificial intelligence (AI).

In Chapter 10, Making Intelligent Enemies with AI, we will show you how to make enemies that can move from one location to another, avoiding obstacles and enemies that can hunt you when they see you.

Finishing the game

In Chapter 11, Finishing the Game, we will discuss some things needed to finish off the game. This will include other screens that most games have, such as a splash screen for branding and a settings screen for game options (such as controlling the volume of the music).

We will discuss how to sell your game on app stores and how to increase sales of your game through in-app purchases.

Finally, by this point in the book, we will have taught you the basics of game programming but there is so much more you could learn. We will discuss what else you should learn if you want to make more advanced games, and where to go for help if you get stuck while making games.

Now that we have provided an overview of the chapters we will cover throughout the book, in the next section, we will go through a simple animation example to show you how easy it is to get started with game programming in Flutter.

Creating a simple example animation

Here is a code sample for you to run to show how easy it is to draw and animate a simple shape.

To run this example, follow these steps:

  1. First, create a new project in the command line by running the following command:
    flutter create goldrush
  2. Open the goldrush folder that Flutter created in your code editor, and then open the pubspec.yaml file.
  3. Update the description to the following:
    description: Flutter game from Building Games with Flutter
  4. Update the environment SDK to the following:
      sdk: ">=2.17.0 <3.0.0"

This is the latest version of the SDK at the time of writing the book, and supports the latest features of Flutter and Dart.

  1. Under the dependencies section, we need to add a library called Flame (which we will talk more about in the next chapter):
    cupertino_icons: ^1.0.2
    flame: 1.0.0

Flame is a great library and provides us with a lot of functionality needed to build games using Flutter and Dart.

  1. Now that we have finished updating the pubspec.yaml file, save the changes.
  2. After saving the changes, your code editor should download the new dependency. If this doesn't update, you can manually run the following command from the command line in the same directory as your project:
    flutter pub get
  3. Next, open the lib/main.dart file and delete all the boilerplate code.
  4. Then, we need to set up the imports we will need for this example:
    import 'dart:ui';
    import 'package:flame/flame.dart';
    import 'package:flame/palette.dart';
    import 'package:flutter/material.dart';
    import 'package:flame/game.dart';
  5. Under this, we need to add our main function to initialize the game and the screen:
    void main() async {
      final goldRush = GoldRush();
      WidgetsFlutterBinding.ensureInitialized();
      await Flame.device.fullScreen();
      await Flame.device.setPortrait();
      runApp(
        GameWidget(game: goldRush)
      );
    }

Here, we set up our GoldRush game object (which we will define next) and told Flame that we want to run the game in full screen and in portrait mode. We also ran the app, passing the GameWidget.

  1. Next, let's set up the game widget and some variables that we will use in the game:
    class GoldRush with Loadable, Game {
      static const int squareSpeed = 250;
      static final squarePaint = 
        BasicPalette.green.paint();
      static final squareWidth = 100.0, squareHeight = 
        100.0;
      late Rect squarePos;
      int squareDirection = 1;
      late double screenWidth, screenHeight, centerX, 
        centerY;

Let's break down what we did here:

  • Here, we set up the animation speed of the square to be 250; you can adjust this to a higher number to make the animation faster or lower to make the animation slower.
  • We set the color of our box to green.
  • The width and height of the box are set to a fixed size of 100 pixels.
  • Because we will adjust the position of the box, we use Rect for the square position, which will be initialized in onLoad once we have calculated the center of the screen for the starting position.
  • We set the direction to be a positive value, which will increase the x value and move the box to the right.
  • Finally, we set up the variables for the screen width and height, and the center of the screen.
  1. In the onLoad function, we will calculate the center starting position of the box based on the screen size:
      @override
      Future<void> onLoad() async {
        super.onLoad();
        screenWidth =
          MediaQueryData.fromWindow(window).size.width;
        screenHeight =
          MediaQueryData.fromWindow(window).size.height;
        centerX = (screenWidth / 2) - (squareWidth / 2);
        centerY = (screenHeight / 2) - (squareHeight / 2);
        squarePos = Rect.fromLTWH(centerX, centerY, 
          squareWidth, squareHeight);
      }
  2. Next, we will define the render function, which draws the square on the screen at its current position:
      @override
      void render(Canvas canvas) {
        canvas.drawRect(squarePos, squarePaint); 
      }
  3. Next, we update the square position every frame based on its speed and direction, plus the time that has elapsed since the previous frame.

Then, if the position of the square has reached the edge of the screen, we can flip the direction of the square:

  @override
  void update(double deltaTime) {
    squarePos = squarePos.translate(squareSpeed *
      squareDirection * deltaTime, 0);
    if (squareDirection == 1 && squarePos.right >
    screenWidth) {
      squareDirection = -1;
    } else if (squareDirection == -1 && squarePos.left
      < 0) {
      squareDirection = 1;
    }
  }
}
  1. Now, we can run the example and see our simple green square animating from left to right, reversing its direction when it hits the side of the screen.

Now, we have gone through a simple animation example to show how easy it is to get started and to give you a feel for game programming with Flutter.

Feel free to play with the code, maybe changing the color of the square or adding more squares at a different position. In the next chapter, we will dig deeper into this code.

Summary

In this chapter, we explained why Flutter and Dart are well suited to multiplatform game development. We explained the building blocks of games that we will focus on in each section of the book. Finally, we showed you a simple code example to play with.

In the next chapter, we will start using Flame, the game engine library that works with Flutter to add features related to game programming.

Questions

  1. What is the minimum constant frame rate that Flutter draws at?
  2. What is the name of the graphics engine used by Flutter?
  3. Which platforms can we support with Flutter?
  4. What is Skia and what is it used for?
  5. What types of compilation does Dart support and why are they beneficial?
  6. Why is stateful hot reload beneficial for rapid game development?
  7. Why is Dart's garbage collection beneficial for the smooth animation used in games?
Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Begin your Flutter game development journey with step-by-step instructions and best practices
  • Understand the Flame game engine and its essential elements for making games, sprite animation, tilemaps, and audio
  • Build enjoyable games with Flutter that can be played across different platforms

Description

With its powerful tools and quick implementation capabilities, Flutter provides a new way to build scalable cross-platform apps. In this book, you'll learn how to build on your knowledge and use Flutter as the foundation for creating games. This game development book takes a hands-on approach to building a complete game from scratch. You'll see how to get started with the Flame library and build a simple animated example to test Flame. You'll then discover how to organize and load images and audio in your Flutter game. As you advance, you'll gain insights into the game loop and set it up for fast and efficient processing. The book also guides you in using Tiled to create maps, add sprites to the maps that the player can interact with, and see how to use tilemap collision to create paths for a player to walk on. Finally, you'll learn how to make enemies more intelligent with artificial intelligence (AI). By the end of the book, you'll have gained the confidence to build fun multiplatform games with Flutter.

Who is this book for?

If you are a Flutter developer looking to apply your Flutter programming skills to games development, this book is for you. Basic knowledge of Dart will assist with understanding the concepts covered.

What you will learn

  • Discover the Flame engine and how to use it in game programming in Flutter
  • Organize the graphics and sounds used in your game
  • Animate a sprite in your games and detect when the player collides with tiles
  • Run the game as a web page and desktop app
  • Expand our player control with key navigation
  • Build your first game and make your enemies more intelligent with AI for games

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Jun 30, 2022
Length: 224 pages
Edition : 1st
Language : English
ISBN-13 : 9781801813662
Vendor :
Google
Languages :
Concepts :
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
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Jun 30, 2022
Length: 224 pages
Edition : 1st
Language : English
ISBN-13 : 9781801813662
Vendor :
Google
Languages :
Concepts :
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 $ 135.97
Flutter for Beginners
$59.99
Cross-Platform UIs with Flutter
$36.99
Building Games with Flutter
$38.99
Total $ 135.97 Stars icon
Banner background image

Table of Contents

15 Chapters
Part 1: Game Basics Chevron down icon Chevron up icon
Chapter 1: Getting Started with Flutter Games Chevron down icon Chevron up icon
Chapter 2: Working with the Flame Engine Chevron down icon Chevron up icon
Chapter 3: Building a Game Design Chevron down icon Chevron up icon
Part 2: Graphics and Sound Chevron down icon Chevron up icon
Chapter 4: Drawing and Animating Graphics Chevron down icon Chevron up icon
Chapter 5: Moving the Graphics with Input Chevron down icon Chevron up icon
Chapter 6: Playing Sound Effects and Music Chevron down icon Chevron up icon
Chapter 7: Designing Your Own Levels Chevron down icon Chevron up icon
Chapter 8: Scaling the Game for Web and Desktop Chevron down icon Chevron up icon
Part 3: Advanced Games Programming Chevron down icon Chevron up icon
Chapter 9: Implementing Advanced Graphics Effects Chevron down icon Chevron up icon
Chapter 10: Making Intelligent Enemies with AI Chevron down icon Chevron up icon
Chapter 11: Finishing the Game Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.6
(5 Ratings)
5 star 20%
4 star 60%
3 star 0%
2 star 0%
1 star 20%
Machine Learning Student Oct 09, 2022
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is a a very good reference book for building games in Flame. Though there are some online tutorials from which you can learn, this book provides a nice way to learn things easily. I'm only in chapter five, but I can tell you, it has been very good so far. Note that flame doesn't have very good documentation. So this book will help you immensely.A bonus point is the code which is available freely on github.Two points to note though:1. You've to strictly follow the version mentioned in the code example. Flame keeps changing rapidly, and it can be very confusing to figure out what components/libraries do what, and which version to use.2. You should have good understanding of flutter and android studio (or other IDE) before hand before you start building games with flame. It'll make your life lot easier.
Amazon Verified review Amazon
POE Aug 15, 2022
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
As a game designer and developer, I am always open to new tools and techniques. This book offers an interesting proposition, and that is to use the open-source UI toolkit, Flutter, by Google, to develop cross-platform games. Flutter is a relatively new tool, released in 2017, and using it for game development is a novel idea.While the book is under 200 pages, light for a programming book, it does pack a lot of great information in between the covers. There is an introduction to Flutter, Dart, and the Flame Engine. After that introductory content, game design and development with these tools is covered. The author provides enough information to get you started working with graphics, animation, audio, and even some game AI.
Amazon Verified review Amazon
Christopher West Sep 02, 2022
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
I'm always looking for more information to absorb when it comes to game development. This book hit the spot with a new Framework and Language applied to familiar game development concepts like the game loop and animation. Going into this book I did not know Dart or Flutter and the forward of the book makes it clear that it does not teach either. I would have to delve into some online training on both before I jumped into the book. After a bit of research and a few tutorials, I jumped into the book and found that most of the concepts presented were common enough to my game development experience with Unity that I had little trouble understanding the content as I continued to pick u the framework and language.At the end of the day, I think this book will be a great resource for future projects where I want to build a game that is cross platform between mobile and desktop experiences.
Amazon Verified review Amazon
Tiny Jul 27, 2022
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
This book provides a reference guide to another tool to help build your own games. Building Games with Flutter by Paul Teale is based on using the Flame Engine to create Flutter games as a mobile or web application. Flutter bases on C++ and the Skia Graphics Engine to provide the majority of the support. The guide quickly takes one through all the code and requirements but doesn’t offer any expanded insight. The code samples and references are extensive with each chapter providing a quiz on the material. The sample game, Gold Rush, is easy to follow and one can readily identify how the material is progressing. The first section deals with basic architecture, the second with game construction and the last with leveling up the game through smart enemies and monetization. The book reads relatively quickly and is short at under 300 pages so one can quickly get to the essentials of building within the framework. Teale offers some sample folder and construct layouts to make sure all the right files in the right places as one borrows components from other repos or existing games. The second section introduces Tiled as a format editor to rapidly build and alter the underlying structure for the games. It does seem as though a lot of the requirements are fairly repetitive, especially when dealing with collisions and interactions between various objects. The links back to Skia help with much of this as sprites and other constructs are readily available and do not have ot be individually built by the user to be successful. The final section says advancement but really deals with what most consider to be the essentials of game, finishing the game, offering options with settings, and creating a path towards monetization. Further, the section touches on particle graphics and physics utilization. In a recent book on Blueprints for the Unreal Engine, the sections on these areas were hundreds of pages by themselves. The book provides a useful reference to Flutter to start but lacks some of the advanced tools to move ahead. If this is your first place building a game, it would make for a useful place to start but if you have been working games for a while, you might skip this one. All the basics are there for the transition but you will rapidly find yourself asking questions that don’t appear in the book. Not bad, but not the best game reference I’ve seen.
Amazon Verified review Amazon
Leonardo May 08, 2024
Full star icon Empty star icon Empty star icon Empty star icon Empty star icon 1
Is too outdated basically the whole thing changed in new versions
Subscriber review Packt
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.