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 now! 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
Conferences
Free Learning
Arrow right icon
SFML Blueprints
SFML Blueprints

SFML Blueprints: Sharpen your game development skills and improve your C++ and SFML knowledge with five exciting projects

eBook
$24.99 $35.99
Paperback
$43.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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

Shipping Address

Billing Address

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

SFML Blueprints

Chapter 1. Preparing the Environment

Through this book, I will try to teach you some elements to build video games using the SFML library. Each chapter will cover a different topic, and will require knowledge from the previous one.

In this first chapter, we will cover basics points needed for the future such as:

  • Installing a compiler for C++11
  • Installing CMake
  • Installing SFML 2.2
  • Building a minimal SFML project

Before getting started, let's talk about each technology and why we will use them.

C++11

The C++ programming language is a very powerful tool and has really great performance, but it is also really complex, even after years of practice. It allows us to program at both a low and high level. It's useful to make some optimizations on our program such as having the ability to directly manipulate memory. Building software utilizing C++ libraries allows us to work at a higher level and when performance is crucial, at a low level. Moreover, the C/C++ compilers are very efficient at optimizing code. The result is that, right now, C++ is the most powerful language in terms of speed, and thanks to the zero cost abstraction, you are not paying for what you don't use, or for the abstraction you are provided.

I'll try to use this language in a modern way, using the object-oriented approach. Sometimes, I'll bypass this approach to use the C way for optimizations. So do not be shocked to see some "old school code". Moreover, all the main compilers now support the standard language released in 2011, so we can use it everywhere without any trouble. This version adds some really useful features in the language that will be used in this book, such as the following:

  • Keywords are one such important feature. The following are a few of them:
    • auto: This automatically detects the type of the new variable. It is really useful for the instantiation of iterators. The auto keyword already existed in the past, but has been deprecated for a long time, and its meaning has now changed.
    • nullptr: This is a new keyword introducing a strong type for the old NULL value. You can always use NULL, but it's preferable to use nullptr, which is any pointer type with 0 as the value.
    • override and final: These two keywords already exist in some languages such as Java. These are simple indications not only for the compiler but also for the programmer, but don't specify what they indicate. Don't hesitate to use them. You can take a look to the documentation of them here http://en.cppreference.com/w/cpp/language/override and http://en.cppreference.com/w/cpp/language/final.
  • The range-based for loops is a new kind of loop in the language foreach. Moreover, you can use the new auto keyword to reduce your code drastically. The following syntax is very simple:
    for(auto& var : table){...}.

    In this example, table is a container (vector and list) and var is a reference to the stored variable. Using & allows us to modify the variable contained inside the table and avoids copies.

  • C++11 introduces the smart pointers. There are multiple pointers corresponding to their different possible utilizations. Take a look at the official documentation, this which is really interesting. The main idea is to manage the memory and delete the object created at runtime when no more reference on it exists, so that you do not have to delete it yourself or ensure that no double free corruptions are made. A smart pointer created on the stack has the advantages of being both fast and automatically deleted when the method / code block ends. But it is important to know that a strong use of this pointer, more especially shared_ptr, will reduce the execution speed of your program, so use them carefully.
  • The lambda expression or anonymous function is a new type introduced with a particular syntax. You can now create functions, for example, as a parameter of another function. This is really useful for callback. In the past, functor was used to achieve this kind of comportment. An example of functor and lambda is as follows:
    class Func(){ void operator()(){/* code here */}};
    auto f = [](){/* code here*/};
  • If you already know the use of the variadics function with the ellipse operator (...), this notion should trouble you, as the usage of it is different. The variadics template is just the amelioration of template with any number of parameters using the ellipse operator. A good example for this is the tuple class. A tuple contains any number of values of any type known at compile time. Without the variadics template, it was not really possible to build this class, but now it is really easy. By the way, the tuple class was introduced in C++11. There are several other features, such as threads, pair, and so on.

SFML

SFML stands for Simple and Fast Multimedia Library. This is a framework written in C++ and is based on OpenGL for its graphical rendering part. This name describes its aim pretty well, that is, to have a user-friendly interface (API), to deliver high performance, and to be as portable as possible. The SFML library is divided into five modules, which are compiled in a separated file:

  • System: This is the main module, and is required by all others. It provides clocks, threads, and two or three dimensions with all their logics (mathematics operations).
  • Window: This module allows the application to interact with the user by managing windows and the inputs from the mouse, keyboard, and joystick.
  • Graphics: This module allows the user to use all the graphical basic elements such as textures, shapes, texts, colors, shaders, and more.
  • Audio: This module allows the user to use some sound. Thanks to this, we will be able to play some themes, music, and sounds.
  • Network: This module manages not only socket and type safe transfers but also HTTP and FTP protocols. It's also very useful to communicate between different programs.

Each module used by our programs will need to be linked to them at compile time. We don't need to link them all if it's not necessary. This book will cover each module, but not all the SFML classes. I recommend you take a look at the SFML documentation at http://www.sfml-dev.org/documentation.php, as it's very interesting and complete. Every module and class is well described in different sections.

Now that the main technologies have been presented, let's install all that we need to use them.

Installation of a C++11 compiler

As mentioned previously, we will use C++11, so we need a compiler for it. For each operating system, there are several options; choose the one you prefer.

For Linux users

If you are a Linux user, you probably already have GCC/G++ installed. In this case, check whether your version is 4.8 or later. Otherwise, you can install GCC/G++ (version 4.8+) or Clang (version 3.4+) using your favorite packet manager. Under Debian based distribution (such as Ubuntu and Mint), use the command line:

sudo apt-get install gcc g++ clang -y

For Mac users

If you are a Mac user, you can use Clang (3.4+). This is the default compiler under Mac OS X.

For Windows users

Finally, if you are a Windows user, you can use Visual Studio (2013), Mingw-gcc (4.8+), or Clang (3.4+) by downloading them. I suggest you not use Visual Studio, because it's not 100 percent standard compliant, even for the C99, and instead use another IDE such as Code::Blocks (see the following paragraph).

For all users

I assume that in both cases, you have been able to install a compiler and configure your system to use it (by adding it to the system path). If you have not been able to do this, another solution is to install an IDE like Code::Blocks, which has the advantage of being installed with a default compiler, is compatible with C++11, and doesn't require any system configuration.

I will choose the IDE option with Code::Blocks for the rest of the book, because it does not depend on a specific operating system and everyone will be able to navigate. You can download it at http://www.codeblocks.org/downloads/26. The installation is really easy; you just have to follow the wizard.

Installing CMake

CMake is a really useful tool that manages the build process in any operating system and in a compiler-independent manner. This configuration is really simple. We will need it to build the SFML (if you choose this installation solution) and to build all the future projects of this book. Using CMake gives us a cross-platform solution. We will need version 2.8 or later of CMake. Currently, the last stable version is 3.0.2.

For Linux users

If you use a Linux system, you can install CMake and its GUI using your packet manager. For example, under Debian, use this command line:

sudo apt-get install cmake cmake-gui -y

For other operating systems

You can download the CMake binary for your system at http://www.cmake.org/download/. Follow the wizard, and that's it. CMake is now installed and ready to be used.

Installing SFML 2.2

There are two ways to get the SFML library. The easier way is to download the prebuilt version, which can be found at http://sfml-dev.org/download/sfml/2.2/, but ensure that the version you download is compatible with your compiler.

The second option is to compile the library yourself. This option is preferable to the previous one to avoid any trouble.

Building SFML yourself

Compiling SFML is not as difficult as we might think, and is within the reach of everyone. First of all, we will need to install some dependencies.

Installing dependencies

SFML depends on a few libraries. Before starting to compile it, make sure that you have all the dependencies installed along with their development files. Here is the list of dependencies:

  • pthread
  • opengl
  • xlib
  • xrandr
  • freetype
  • glew
  • jpeg
  • sndfile
  • openal

Linux

On Linux, we will need to install the development versions of each of these libraries. The exact names of the packages depend on each distribution, but here is the command line for Debian:

sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev libxrandr-dev libfreetype6-dev libglew-dev libjpeg-dev libsndfile1-dev libopenal-dev -y

Other operating systems

On Windows and Mac OS X, all the needed dependencies are provided directly with SFML, so you don't have to download or install anything. Compilation will work out of the box.

Compilation of SFML

As mentioned previously, the SFML compilation is really simple. We just need to use CMake, by following these steps:

  1. Download the source code at http://sfml-dev.org/download/sfml/2.2/ and extract it.
  2. Open CMake and specify the source code directory and the build directory. By convention, the build directory is called build and is at the root level of the source directory.
  3. Press the Configure button, and select Code::Blocks with the right option for your system.

    Under Linux, choose Unix Makefiles. It should look like this:

    Compilation of SFML

    Under Windows, choose MinGW Makefiles. It should look like this:

    Compilation of SFML
  4. And finally, press the Generate button. You'll have an output like this:
    Compilation of SFML

Now the Code::Blocks file is built, and can be found in your build directory. Open it with Code::Blocks and click on the Build button. All the binary files will be built and put in the build/lib directory. At this point, you have several files with an extension that depend on your system. They are as follows:

  • libsfml-system
  • libsfml-window
  • libsfml-graphics
  • libsfml-audio
  • libsfml-network

Each file corresponds to a different SFML module that will be needed to run our future games.

Now it's time to configure our system to be able to find them. All that we need to do is add the build/lib directory to our system path.

Linux

To compile in Linux, first open a terminal and run the following command:

cd /your/path/to/SFML-2.2/build

The following command will install the binary files under /usr/local/lib/ and the headers files in /usr/local/include/SFML/:

sudo make install

By default, /usr/local/ is in your system path, so no more manipulations are required.

Windows

On Windows, you will need to add to your system path, the /build/lib/ directory, as follows:

  1. Go to the Advanced tab in System Properties, and click on the Environment Variables button:
    Windows
  2. Then, select Path in the System variables table and click on the Edit... button:
    Windows
  3. Now edit the Variable value input text, add ;C:\your\path\to\SFML-2.2\build\lib, and then validate it by clicking on OK in all the open windows:
    Windows

At this point, your system is configured to find the SFML dll modules.

Code::Blocks and SFML

Now that your system is configured to find the SFML binary files, it's time for us to configure Code::Blocks and finally test whether everything is fine with your fresh installation. To do so, follow these steps:

  1. Run Code::Blocks, go to File | New | Project, and then choose Console Application.
  2. Click on GO.
  3. Choose C++ as the programming language, and follow the instructions until the project is created. A default main.cpp file is now created with a typical Hello world program. Try to build and run it to check whether your compiler is correctly detected.
    Code::Blocks and SFML

If everything works correctly, you will have a new window created that has a Hello world! message, as follows:

Code::Blocks and SFML

If you have this output, everything is fine. In any other case, make sure you have followed all the steps for the installations.

Now we will configure Code::Blocks to find the SFML library, and ask it to link with our program at the end of the compilation. To do this, perform the following steps:

  1. Go to Project | Build options and select your project at the root level (not debug or release).
  2. Go to Search directories. Here we have to add the path where the compiler and the linker can find the SFML.
  3. For the compiler, add your SFML folder.
  4. For the linker, add the build/lib folder, as follows:
    Code::Blocks and SFML

Now we need to ask the linker which libraries our project needs. All our future SFML projects will need the System, Window, and Graphics modules, so we will add them:

  1. Go to the Linker settings tab.
  2. Add -lsfml-system, -lsfml-window and -lsfml-graphics in the Other linker options column.
  3. Now click on OK.
    Code::Blocks and SFML

Good news, all the configurations are now finished. We will eventually need to add a library to the linker in the future (audio, network), but that's it.

A minimal example

It's now time for us to test the SFML with a very basic example. This application will show us the window as in the following screenshot:

A minimal example

The following code snippet brings about this window:

int main(int argc,char* argv[])
{
    sf::RenderWindow window(sf::VideoMode(400, 
400),"01_Introduction");
    window.setFramerateLimit(60);

    //create a circle
    sf::CircleShape circle(150);
    circle.setFillColor(sf::Color::Blue);
    circle.setPosition(10, 20);

    //game loop
    while (window.isOpen())
    {
       //manage the events
        sf::Event event;
        while(window.pollEvent(event))
        {
            if ((event.type == sf::Event::Closed)
                or (event.type == sf::Event::KeyPressed and 
event.key.code == sf::Keyboard::Escape))
                window.close(); //close the window
        }
        window.clear(); //clear the windows to black
        window.draw(circle); //draw the circle
        window.display(); //display the result on screen
    }
    return 0;
}

All that this application does is to create a window with a width and height of 400 pixels and its title is 01_Introduction. Then a blue circle with a radius of 150 pixels is created, and is drawn while the window is open. Finally, the user events are checked on each loop. Here we verify if the close event has been asked (close the button or click Alt + F4), or if the user has pressed the Esc button on his keyboard. In both case, we close the window, that will result to the program exit.

Summary

In this chapter we covered which technologies we will use and why to use them. We also learned the installation of the C++11 compiler on different environments, we learned about installing CMake and how this will help us build the SFML projects in this book. Then we installed SFML 2.2, and followed on to build a very basic SFML application.

In the next chapter we will gain knowledge on how to structure a game, manage user inputs, and keep trace of our resources.

Left arrow icon Right arrow icon

Description

This book is for developers who have knowledge of the basics of the SFML library and its capabilities in 2D game development. Minimal experience with C++ is required.

Who is this book for?

This book is for developers who have knowledge of the basics of the SFML library and its capabilities in 2D game development. Minimal experience with C++ is required.

What you will learn

  • Build a complete game and integrate advanced features by adding a multiplayer layer
  • Get to grips with SFML resources and build a generic and reusable resource manager
  • Gather knowledge about different entity models and build your own 2D games
  • Explore the Box2D engine and add physics properties to your game
  • Add a nice user interface to your game to make it more user friendly
  • Discover the SFGUI library and learn how to customize your game
  • Delve into the importance of multithreading and boost your code
  • Add networking and learn about serialization and database management using Sqlite3
Estimated delivery fee Deliver to Japan

Standard delivery 10 - 13 business days

$8.95

Premium delivery 3 - 6 business days

$34.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : May 28, 2015
Length: 298 pages
Edition : 1st
Language : English
ISBN-13 : 9781784398477
Languages :
Tools :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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

Shipping Address

Billing Address

Shipping Methods
Estimated delivery fee Deliver to Japan

Standard delivery 10 - 13 business days

$8.95

Premium delivery 3 - 6 business days

$34.95
(Includes tracking information)

Product Details

Publication date : May 28, 2015
Length: 298 pages
Edition : 1st
Language : English
ISBN-13 : 9781784398477
Languages :
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 $ 147.97
SFML Game Development
$48.99
SFML Blueprints
$43.99
SFML Game Development By Example
$54.99
Total $ 147.97 Stars icon

Table of Contents

9 Chapters
1. Preparing the Environment Chevron down icon Chevron up icon
2. General Game Architecture, User Inputs, and Resource Management Chevron down icon Chevron up icon
3. Making an Entire 2D Game Chevron down icon Chevron up icon
4. Playing with Physics Chevron down icon Chevron up icon
5. Playing with User Interfaces Chevron down icon Chevron up icon
6. Boost Your Code Using Multithreading Chevron down icon Chevron up icon
7. Building a Real-time Tower Defense Game from Scratch – Part 1 Chevron down icon Chevron up icon
8. Build a Real-time Tower Defense Game from Scratch – Part 2, Networking 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 Half star icon Empty star icon 3.8
(4 Ratings)
5 star 0%
4 star 75%
3 star 25%
2 star 0%
1 star 0%
CS Oct 10, 2015
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
This book has good knowledge on basics of SMFL Library. You can learn to make small 2D games, with C++ and SMFL. Good book overall, and useful for understanding SMFL.
Amazon Verified review Amazon
Amazon Customer Nov 12, 2015
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
Someone fairly new to C++ will find making the code samples into a working project quite tough. Although I would say it was not too tough.For example the Asteroids, Tetris and real-time multi-player tower defence game were straight-forward enough to get playing.The strength of this book is really in it's sheer variety of projects(blueprints). If you want a really convincing SFML patterns guide maybe research SFML Game Development . If you want to build multiple working games packed full of the different SFML module's functionality then I have to say this book was seriously fun.Tetris with box2d is a hilarious but really useful project.
Amazon Verified review Amazon
Zach Wilder Jan 11, 2016
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
The examples in this book are clear, well thought out, and (relatively) easy to follow. I would STRONGLY recommend a firm grasp on C++, as most of the examples could be hard to put together for a complete beginner.The example games were a blast to put together, and they do a pretty good job of illustrating the various features of the SFML library.Now, why this book should really be considered 3.5 stars and not a solid 4 - The authors should have hired an editor who can speak/write English competently. There are many typos and grammatical errors throughout the book, which detracts from the excellent job the authors did with the code. For example: "The is no member here, and the class can't be instantiate. [...] So here, only one collision test is describe that take two sf::Sprite as parameters. Take a look to the implementation." (pg 72) In addition, the code examples are spread out in a strange manner that makes it a bit difficult to read, and the typos do carry over to the code - so I would recommend you keep an eye on what you are actually typing.If you want to have fun while learning some cool tricks with SFML, I'd highly recommend this book. I wouldn't hesitate to buy another book from the same author, even with the issues above, and will probably pick up the other SFML books soon.
Amazon Verified review Amazon
Barron Fritz Aug 01, 2015
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
At the end of chapter 2, so my review does not reflect the work in it's entirety.. I will leave a full review once I have completed it.Chapter 1 is all about Setting up your environment on whatever OS you choose(Windows, OSX or *nix) and it goes into presice detail on exactly how to set things up. At the end of chapter 1 you create "A minimal example" program to make sure that the library and your programming environment is set up properly. It shows a picture of the final result, shows the code in order to get this result, and then explains exactly what each part of code does. 5 Stars on Chapter 1.Chapter 2 starts out explaining what the different parts of a game are, and what they are intended to do. You extract your minimal example into it's own "Game" class and break apart each functional piece of code into it's own function. The next part goes into explaining different game loops time-steps or update cycles. I think the Author does a good job explaining Why you would need each kind of type-step and how to implement them, in a very general/basic way. Now we are in to user inputs and how the game will react to such things. At first, a 'minimal' example is given for handling Polled input and Real-Time input. Almost immediately, and with no clear reason or purpose You are instructed to create 2 new classes for handling real-time user input. The book fell apart for me here, and the code shown in the book does not match the code given in the code samples (eg. assignment operators are defined but never declared, namespace "book::" shows up out of nowhere (never mentioned) and causes errors, and the code does not compile at the end of the chapter.)I'm going to give This "hickup" the bennefit of the doubt, and wait till I finish the book to write a full review. Please take this review with a grain of salt, and Note this is for the first Edition, PDF/Kindle copy from PacktPub, and these flaws may be corrected in future editions.
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 the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela