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
Panda3D 1.6 Game Engine Beginner's Guide
Panda3D 1.6 Game Engine Beginner's Guide

Panda3D 1.6 Game Engine Beginner's Guide: This is the A-Z of Panda3D for developers who have never used the engine before. Step-by-step, it takes you from first principles to ultimately creating a marketable game. You’ll learn through first-hand experience and clear explanations.

eBook
$19.99 $28.99
Paperback
$48.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with Print?

Product feature icon Instant access to your digital copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Redeem a companion digital copy on all Print orders
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

Panda3D 1.6 Game Engine Beginner's Guide

Chapter 2. Creating the Universe: Loading Terrain

It's time to really get our feet wet. This chapter will lay out the foundation we need to start programming in Panda3D and take us into our first program. We'll talk about some basic concepts and then we'll see those concepts in action as we put together the beginnings of our game.

Here's what we're going to cover:

  • Setting up a new file in Notepad++

  • Importing Panda3D components

  • Creating a World Object

  • Loading the terrain

  • Loading files into Panda3D

  • NodePaths and nodes

  • The Scene Graph

  • Render attributes

Each of these points is very important in understanding how Panda3D operates. With that in mind, let's move on.

Notepad++


As we go through these points, we'll talk about Notepad++ as well. Notepad++ is user friendly and easy to get accustomed to, so these little interruptions will be short and sweet.

Setting up a new file in Notepad++


The first thing we need to do is create a new file and tell Notepad++ which mark-up language we want it to use. The mark-up will make reading our code much easier and can point out when we are using important keywords as well. It will also allow us to use Notepad++'s block sorting, which we'll talk about a little later in this chapter.

Time for action – setting up a new file in Notepad++


Now we know why we need to set up a new file properly, so let's do it.

  1. Open Notepad++ by going to your Start menu | All Programs | Notepad++ | Notepad++.

  2. We already have a blank document to start with, so we just need to set the mark-up language. Click on the Language menu at the top of the screen, scroll down to P, and select Python from the pop-up menu.

What just happened?

Now the document is set for Python and Notepad++ will mark-up our code for us.

So let's start coding.

Importing Panda3D components


In order to use Panda3D we need to start by importing the core components of the engine in our Python file. Fortunately, Panda3D is very accommodating. To get it running, we only need to import DirectStart.

Time for action – importing DirectStart


  1. In your blank document type the following. Don't worry about the color and font of the word "import", that's Notepad++'s mark-up and it will be applied automatically.

  2. Save the file as "chp02_01.py" in the directory "BGP3D/Chapter02" in the file tree we set up last chapter.

  3. Open up Windows Explorer and navigate to "BGP3D/Chapter02" in the file tree we set up last chapter. Then right-click on the address bar and copy the entire address. If you don't have an address bar, click on the View menu | Toolbars | Address Bar to display it.

  4. Open a windows command prompt and type "cd ". Note the space at the end. Then right-click on the command prompt window and select paste to insert the address we copied. Hit Enter, and the command prompt will navigate to that folder.

  5. Type "python chp02_01.py" into the command prompt and hit Enter.

What just happened?

The import command tells Python that you want to add to the file you're working on from another file.

import direct...

Creating a World Object


Let's take a moment to talk about object-oriented programming. OOP, as object-oriented programming is often abbreviated, is a design idea for organizing a program's code. Instead of creating a long list of line after line of code that defines the entire program all at once, we break it into pieces. For example, one of these code pieces might be all of the code that controls the player character in the game. Another might be the code for a menu. Because we break the program apart along these logical lines that pertain to objects within the program we refer to them as objects as well. That's where object-oriented programming gets its name.

We break the program apart by using classes. A class is a grouping of code that defines a type of object in the program, and it can be reused multiple times. Within a class we put the code that stores the values for the object and the code that makes the object perform whatever duties it needs to perform. A character class may contain...

Time for action – creating a World Object


  1. Edit your .py file to look like this:

  2. Save the file as "chp02_02.py" in the same directory.

  3. Run this python file the same way you ran chp02_01.py.

What just happened?

A number of things are going on there, so we'll take a moment and talk about them.

First, we used the class command to create a new class called World.

class World:

In Python, code is grouped by using indentation. In order to tell Python we're starting a new group of indented code we end the line with a colon. We can't just throw colons where ever we want, though. They need to follow specific commands. We'll see more uses of colons as we continue coding.

Next, we defined a method with the def command and called it __init__.

def __init__(self):

A method is a function that belongs to a class. To better understand what a method is, we need to talk about functions.

Essentially, a function is just a block of code that is given a name. Later on, we can call the function by name and all the code in it...

Loading the terrain


An empty window is pretty boring. We need to fill that window with something to really start getting into Panda3D, and that means loading a 3D model. To do that, we're going to use another one of the objects created by DirectStart, the loader.

Time for action – loading the terrain


  1. Add these two lines to the World class __init__ method:

  2. Save this as chp02_03.py and run it. This window will pop up:

  3. This doesn't look quite right, does it? Move the mouse over the Panda3D window, hold down the left mouse button, and drag down. The view will change to something like the following:

What just happened?

Congratulations! We're looking at our first 3D model loaded into Panda3D.

Let's talk a bit about the code we used to do this, starting with the following line:

self.track = loader.loadModel("../Models/Track.egg")

We have a couple of things going on here. First, we are creating a new variable, called "track". By creating it as "self.track" we are making it an attribute of the World class. Remember back to earlier when we made the World class and we told the __init__ method to accept a variable called "self", and how we mentioned that would let us interact with the instance of the World class from within the __init__ method? That's exactly what...

Loading files into Panda3D


Loading files into a game is pretty easy with Panda3D, but there are some things to talk about now that we've seen it happen. We'll start by going over the path that Panda3D searches for files, and then we'll talk about a few file types we'll be using.

The model path

Panda3D searches a few different places for files when they are loaded, and these locations are controlled by the configuration file. There are a couple default folders in the Panda3D installation directory that are searched, but using them isn't really recommended. The best path to make use of is the most dynamic one, the path to the python file that's being run.

That means that when loading a file, it's best to use a relative path from the file that is launching the Panda3D application. Right now, that file is chp02_03.py. In that file, we used the path "../Models/Track.egg" to point to our model file. Our chp02_03.py file is located in "/BGP3D/Chapter02" and our model is located in "/BGP3D/Models"...

NodePaths and nodes


Panda3D implements a superclass called PandaNode , from which many other classes inherit. Collectively, all of these classes are referred to as nodes. Some examples include ModelRoots , which are the root of models (surprise!), GeomNodes , which store vertex data and other information for geometry, CameraNodes, which serve as the windows through which we see the world within Panda3D, CollisionNodes, which allow items in that world to interact with one another, and there are many more. Each of these node types have methods specific to them for setting attributes that only node type require. ModelRoots don't have methods for setting lens attributes, but CameraNodes do.

There are also attributes that every kind of node needs, such as the node's position and orientation in the world. These attributes are not stored in the nodes themselves. Instead, they are kept in a handler class, called a NodePath . We will often interact with the NodePath instead of the node itself because...

Time for action – introducing NodePaths and nodes


To better understand NodePaths, let's go ahead and use the print statement to take a closer look at what's going on.

  1. At the end of the __init__ method in our world class, add this line:

    print(self.track)
  2. Make sure it's part of the indented block that makes up the method.

  3. Save the file as "chp02_04.py" and run it. Look at the command prompt window to see the output of the print statement.

  4. Note that at the bottom it says "render/Track.egg" in a format that looks just like a file path. That's because "render/Track.egg" is the model's location in the Scene Graph. Whenever we print out a NodePath, we'll get a result like this.

  5. Next, change the print statement to look like this:

  6. Save the file as "chp02_05.py" and run it.

  7. Now the output says "ModelRoot Track.egg". The ModelRoot is the node that the self.track NodePath points to.

What just happened?

The purpose of this exercise was to better understand the difference between a NodePath and a node. When we...

Time for action – manipulating NodePaths


Let's try using the setPos method to move our model around.

  1. Change your .py file to look like this:

  2. Save the file as "chp02_06.py" and run it.

What just happened?

The camera didn't start inside the track this time. That's because we moved the track 5 units down on the z axis. NodePath manipulation is pretty easy, but also very important. Let's do some more to get the hang of it.

Have a go hero – more NodePath manipulation

We should do some more manipulations with the NodePath. Try using the other methods we mentioned to reposition, rescale, and rotate the model.

The Scene Graph


Now it's time we talk about the Scene Graph. In most game engines, there is a list of what objects need to be rendered and in order for a model or some other element to appear they need to be added to the list. Panda3D uses a similar structure, but instead of a list, we have a tree.

At the root of the tree is render, which is created for us by DirectStart. In order for something to appear in the Panda3D window, it needs to be attached to render. It doesn't have to be directly attached to render, though. If you attach element A to render, and attach element B to element A, that's enough. That's why we refer Scene Graph as a tree.

NodePaths have a specific method used to move them around in the Scene Graph. We've already used it, once.

self.track.reparentTo(render)

The method reparentTo() makes the NodePath it's called on a child of the NodePath it's passed.

In this way we can build a tree of NodePaths using parent and child relationships. The tree can be as wide and shallow or...

Time for action – understanding parent child inheritance


To better understand how children inherit properties from their parents, we're going to add two more models to our scene and see how they mingle.

  1. We need to add six more lines of code to our file in order to load two more models, add them to the Scene Graph, and position them in view:

  2. Save the file as "chp02_07.py" and run it.

  3. The cycles look like white blobs because they are untextured and unlit. We don't need to worry about that right now. Next, let's parent the second cycle to the first, instead of to render. Change line 13 to

    self.cycle2.reparentTo(self.cycle1).
  4. Save the file as "chp02_08.py" and run it.

What just happened?

Notice how the left cycle changed position. This is because child NodePaths inherit the coordinate system of their parent. That means that originally, when it was a child of render, the left cycle was positioned at (-2,15,0), relative to render. When we changed the parent, the left cycle moved to (-2,15,0) relative...

Time for action – explaining relative coordinate systems


It's also possible to use the coordinate system of other NodePaths when calling any of the position, rotation, or scale methods. Let's take a look at how.

  1. Change line 13 back to:

    self.track.reparentTo(render)
  2. Change line 11 to:

    self.cycle1.setPos(self.track,2,15,0)
  3. Save the file as "chp02_09.py" and run it.

What just happened?

The cycle on the right is much lower now. That's because we set it to (2,15,0) in the coordinate system of self.track, and self.track has been lowered 5 units. Lowering self.track also lowers the coordinate system of self.track. This is another very useful concept to remember. The coordinate system of a NodePath moves, rotates, and scales with the NodePath.

Have a go hero – parenting and relative coordinate systems

Take some time and play around with different parenting settings and using relative coordinate systems. To use a different coordinate system for a position, rotation, or scale method we just need to pass the...

Loading a file multiple times


In the recent Time for Actions we loaded the cycle model twice. It wouldn't be unusual for us to assume that the cycle model has been loaded into memory twice now, but that isn't the case. Having all the information generated from the bam file in memory multiple times would be a waste, because we could instead just tell the program to use the information twice. Panda3D does this for us automatically when we load a file more than once. The second call to loader detects that cycle.bam has already been loaded once and uses the information already in memory to create the components for the new model. This only applies to the information that exists in the file. Panda3D also does this with other file types as well.

Render attributes


Size, rotation, and scale aren't the only things we can do with NodePaths. Render attributes are also set on NodePaths. Controls that change how a model is handled by the renderer are called render attributes, and they can do a number of different things. They can change the color of a model, they can make it render as a wireframe instead of a solid, they can make it render as two-sided, and more. Let's take a look at the list of render attributes to get a feel for what they are:

  • AlphaTestAttrib: Hides part of the model, based on the texture's alpha channel.

  • AntialiasAttrib: Controls full-screen antialiasing and polygon-edge antialiasing.

  • AudioVolumeAttrib: Applies a scale to audio volume for positional sounds.

  • AuxBitplaneAttrib: Causes shader generator to produce extra data.

  • ClipPlaneAttrib: Slices off a piece of the model, using a clipping plane.

  • ColorAttrib: Tints the model. Only works if the model is not illuminated.

  • ColorBlendAttrib: This specifies how colors are blended...

Time for action – demonstrating render attributes


Let's try changing render attributes and see what that does for our scene.

  1. Make sure that all of your model NodePaths are reparented to render instead of each other.

  2. Remove any scale or rotation adjustments made to the NodePaths.

  3. Set the track position to (0,0,-5) again and set the cycles' positions back to (2,15,0) and (-2,15, 0).

  4. Add this line after line 14 so that the file looks like figure 23:

    self.cycle2.setRenderModeWireframe()
  5. Save the file as "chp02_10.py" and run it.

  6. Now the cycle on the left is rendered in wireframe mode. Let's try one more thing before we move on. Change line 13 to:

    self.cycle2.reparentTo(self.cycle1)
  7. Change line 15 so that it affects cycle1 instead of cycle2:

    self.cycle1.setRenderModeWireframe()
  8. Save the file again, this time as "chp02_11.py" and run it.

What just happened?

Like position, rotation, and scale, render attributes are also inherited from parent to child! That's why both cycles are now rendered in wireframe mode...

Summary


The main focus of this chapter was learning about NodePaths, where they come from, and what we can do with them.

Specifically, we covered:

  • First we learned how to get Panda3D started so we could begin exploring how it works. We did that by importing DirectStart.

  • After that, we learned how to load models into the scene, which gave us our first NodePaths to play around with. We used loader.loadModel to bring our track and, later, two cycles into the scene.

  • Next we learned about transforming NodePaths with the position, rotation, and scale methods. We also learned about how each NodePath has its own coordinate system, and how parent child relationships affect that.

  • Finally, we learned about render attributes, their basic uses, and how parent child relationships affect them as well.

We also talked about the Scene Graph, how it controls what is rendered and what isn't, and how NodePaths can be moved around in it.

Now that we've learned about NodePaths we're ready to make them move around on...

Left arrow icon Right arrow icon

Key benefits

  • The first and only guide to building a finished game using Panda3D
  • Learn about tasks that can be used to handle changes over time
  • Respond to events like keyboard key presses, mouse clicks, and more
  • Take advantage of Panda3D's built-in shaders and filters to decorate objects with gloss, glow, and bump effects
  • Follow a step-by-step, tutorial-focused process that matches the development process of the game with plenty of screenshots and thoroughly explained code for easy pick up

Description

Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. It includes graphics, audio, I/O, collision detection, and other abilities relevant to the creation of 3D games. Also, Panda3D is Open Source and free for any purpose, including commercial ventures. This book will enable you to create finished, marketable computer games using Panda3D and other entirely open-source tools and then sell those games without paying a cent for licensing. Panda3D 1.6 Game Engine Beginner's Guide follows a logical progression from a zero start through the game development process all the way to a finished, packaged installer. Packed with examples and detailed tutorials in every section, it teaches the reader through first-hand experience. These tutorials are followed by explanations that describe what happened in the tutorial and why. You will start by setting up a workspace, and then move on to the basics of starting up Panda3D. From there, you will begin adding objects like a level and a character to the world inside Panda3D. Then the book will teach you to put the game's player in control by adding change over time and response to user input. Then you will learn how to make it possible for objects in the world to interact with each other by using collision detection and beautify your game with Panda3D's built-in filters, shaders, and texturing. Finally, you will add an interface, audio, and package it all up for the customer.

Who is this book for?

If you are an independent developer interested in creating your own video games or other 3D applications using Panda3D for personal or commercial distribution at minimal expense, this book is definitely for you. A basic understanding of general programming, such as familiarity with the concept of a variable, is necessary. Some familiarity with object-oriented programming and the Python language is expected, but not essential. This book does not cover the creation of three dimensional models or similar art assets, nor does it cover the creation of two dimensional art assets or audio assets.

What you will learn

  • Create and use tasks
  • Respond to and handle events
  • Implement texturing with built-in shaders
  • Exercise collision detection
  • Implement a graphical user interface
  • Utilize the Panda3D animation system
  • Master the power and purpose of intervals
  • Add audio and use the OpenAL library
  • Understand garbage collection
  • Package the game into an installer
  • Use Spacescape and explosion texture generator to create certain art assets
Estimated delivery fee Deliver to United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Feb 09, 2011
Length: 356 pages
Edition : 1st
Language : English
ISBN-13 : 9781849512725
Languages :
Tools :

What do you get with Print?

Product feature icon Instant access to your digital copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
Product feature icon Redeem a companion digital copy on all Print orders
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 United States

Economy delivery 10 - 13 business days

Free $6.95

Premium delivery 6 - 9 business days

$21.95
(Includes tracking information)

Product Details

Publication date : Feb 09, 2011
Length: 356 pages
Edition : 1st
Language : English
ISBN-13 : 9781849512725
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 $59.97 $86.97 $27.00 saved
Panda3D 1.6 Game Engine Beginner's Guide
$48.99
Panda3D 1.7 Game Developer's Cookbook
$48.99
Python Multimedia
$48.99
Total $59.97$86.97 $27.00 saved Stars icon

Table of Contents

12 Chapters
Installing Panda3D and Preparing a Workspace Chevron down icon Chevron up icon
Creating the Universe: Loading Terrain Chevron down icon Chevron up icon
Managing Tasks Over Time Chevron down icon Chevron up icon
Taking Control: Events and User Input Chevron down icon Chevron up icon
Handling Large Programs with Custom Classes Chevron down icon Chevron up icon
The World in Action: Handling Collisions Chevron down icon Chevron up icon
Making it Fancy: Lighting, Textures, Filters, and Shaders Chevron down icon Chevron up icon
GUI Goodness: All About the Graphic User Interface Chevron down icon Chevron up icon
Animating in Panda3D Chevron down icon Chevron up icon
Creating Weaponry: Using Mouse Picking and Intervals Chevron down icon Chevron up icon
What's that Noise? Using Sound Chevron down icon Chevron up icon
Finishing Touches: Getting the Game Ready for the Customer Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Half star icon Empty star icon 3.7
(6 Ratings)
5 star 33.3%
4 star 33.3%
3 star 16.7%
2 star 0%
1 star 16.7%
Filter icon Filter
Top Reviews

Filter reviews by




jn Jul 09, 2016
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is book is amazing! Great job.
Amazon Verified review Amazon
Amazon Customer Nov 22, 2011
Full star icon Full star icon Full star icon Full star icon Full star icon 5
if you want neat tutorial ..this is very good one, it's like its series name packteasy to read,thoroughly exacutable codes are all in.just follow it then you will know how individual developer can make some game in very short time.it's just good.it explains almost every cut to just develop game, means that introduce the very point to write game.quick way but friendly for beginner.if you know what variables means then enough for reading. it explains what is object in easy manner and what is constructor and destructor and why they are needed, etc.easy to understand enough to write game using Panda3D.if you had tried to learn some programming language ever before, this is very easy-to-follow tutorial, it's the orientation of this sweet book.thanks to author, thanks to python and Panda3D.
Amazon Verified review Amazon
Stephen Arthur Rogers Apr 18, 2011
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
I purchased a copy of the Panda3D 1.6 Game Engine Beginner's Guide as an advanced tutorial, in an attempt to better learn the Panda3D game engine better and gain some practical experience in how to work with it. I had gone through the tutorials at the Panda3D website and while I felt they were good at teaching basic concepts, none of them really "tied it all together". As a personal aside, I'm old fashioned enough to prefer having a guide in hard-copy when learning how to do new things on a computer.The Guide pretty much does as advertised: it goes through the creation of a basic, single-level racing game from installation of the game engine through final packaging of a finished product. It uses an easy to understand writing style, includes step-by-step instructions of how to prepare the code (and then explains what exactly that code does) in relatively small chunks at a time, and includes instances where a coder can tinker with the knowledge they've just garnered. The end product is even reasonably enjoyable.As much as I enjoyed using the Guide, I can't give it a five-star rating. There is some significant errata in the book (at least, in the first printing); at several points it was necessary for me to refer to the author's code (provided at Packt Publishing's website) in order to proceed. Also, while the author does make it clear up front that production of art assets is not something the book covers, it would've been nice if a list of titles that do cover that topic had been provided. That's perhaps more of a personal gripe than anything else; it is clear fairly early on in the book that the final product is heavily dependent on the quality of the art assets.Still, overall this is a decent tutorial. Despite the few problems I had, I still learned much about Panda and feel it was worth the investment. I would recommend this book to anyone who, like me, is starting off with learning Panda.
Amazon Verified review Amazon
Dominik Portmann Apr 26, 2014
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
The book itself is, concerning the content, a really well-written guide for first tries in the Panda3D engine. It explains the basics thoroughly in an understandable way. I recommend it for people trying to get started with Panda3D (yet it is another question how wise it is to get started with Panda3D).One star I deducted for the language. It is understandable but it contains too many mistakes in grammar and orthography.
Amazon Verified review Amazon
Brad Oct 24, 2011
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
When I buy a book on a game engine, I expect an explanation on how the game engine works, its class heirarchy, the funciton interface to the classes. This book has none of that. The author just demonstrates how to load a 3D model of a rocketscooter and proceeds to show off his pathetic mathematics skill by adding his own functions for moving the models in 3D space. The reason Im giving this book 3 stars instead of 1 is that this is not the worst game programming book Ive seen, in fact I have yet to see a game programming book I would call good and worth recommending. The Panda game engine deserves better, it is the best option out there, free, open source, a full featured professional quality C++ engine that can be used to make professional games.
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 digital copy I get with my Print order? Chevron down icon Chevron up icon

When you buy any Print edition of our Books, you can redeem (for free) the eBook edition of the Print Book you’ve purchased. This gives you instant access to your book when you make an order via PDF, EPUB or our online Reader experience.

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