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! 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
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Monkey Game Development: Beginner's Guide
Monkey Game Development: Beginner's Guide

Monkey Game Development: Beginner's Guide: Create monetized 2d games deployable to almost any platform with this book and ebook.

eBook
$28.99 $32.99
Paperback
$54.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

Monkey Game Development: Beginner's Guide

Chapter 1. Monkey—Huh?

Monkey is a high-level programming language developed by Mark Sibly, the creator of the very popular Blitz Basic range of programming languages. If you happen to know Blitz Basic, Blitz3D, or BlitzMax, then you know where Monkey is coming from. Its main purpose is to provide you with a helpful tool to create 2D games, but of course, if you are creative, you will be able to create other kinds of apps and programs with it, too. For example, interactive books could a very good playing field for Monkey.

The Monkey programming language is strongly inspired by BASIC and JAVA. BASIC, in particular, is known to be a beginner's programming language. So naturally, Monkey is easy to learn and you can get up and running very fast; just as with most of the BASIC dialects. But it doesn't have to stop there. Monkey is also very extendable through third-party, or your own, Monkey source code and also native code running on each platform.

In this chapter, we will learn what Monkey is in general, how the toolset behind it works, and what kind of general features Monkey provides you with. We won't go into these things in great detail, but just give an overview. We also will have some playtime with games that were created with Monkey. So, if you happen to know all this already, it is safe for you to skip this little chapter and head right on to Chapter 2, Getting to Know Your Monkey—a Trip to the Zoo. If not, then keep on reading and you will learn a little about Monkey's background.

Game development for the rest of us

Since you are reading this book, we can safely assume that you have got the bug that makes a lot of people want to become a great and successful game developer. We have all played these awesome games and read stories about individuals who became wealthy overnight by selling their games on markets such as the Apple AppStore. And you want that too, right? We all do, and there is nothing wrong with that. Go for it! The way to get there was very difficult and long, in the past. For example, not long ago, learning Objective-C and using Xcode was the only way to create a game for the iPhone. Objective-C is not easy to learn if you are a complete beginner when it comes to programming. And a lot of people will tell you to study C and C++ in general before you head into Objective-C. Some people will tell you to study the BASIC language at first. You can imagine that it will take some time to study all this, never mind studying the techniques that are relevant to game development!

Now, with Monkey and various other game creation tools, this process has become much easier and quicker than before. A programming language that is based on a BASIC dialect is easy to learn and the features of Monkey will help you bring your dream of becoming a game developer to life.

Game development for the rest of us


Since you are reading this book, we can safely assume that you have got the bug that makes a lot of people want to become a great and successful game developer. We have all played these awesome games and read stories about individuals who became wealthy overnight by selling their games on markets such as the Apple AppStore. And you want that too, right? We all do, and there is nothing wrong with that. Go for it! The way to get there was very difficult and long, in the past. For example, not long ago, learning Objective-C and using Xcode was the only way to create a game for the iPhone. Objective-C is not easy to learn if you are a complete beginner when it comes to programming. And a lot of people will tell you to study C and C++ in general before you head into Objective-C. Some people will tell you to study the BASIC language at first. You can imagine that it will take some time to study all this, never mind studying the techniques that are relevant to game development!

Now, with Monkey and various other game creation tools, this process has become much easier and quicker than before. A programming language that is based on a BASIC dialect is easy to learn and the features of Monkey will help you bring your dream of becoming a game developer to life.

Cross-platform development


Ahh, the magic term... cross-platform development! It is the current hype thing. Because before the era of smart phones and tablets, the Windows platform, OSX and Linux were basically the only markets, where an individual game developer could publish games to. Game consoles were accessible only to huge game development companies with a lot of financial background.

Even these days, it is almost impossible to publish a game for an individual on some platforms. But new markets have arisen and new development tools such as Monkey are available now. Today it is more and more important to target several platforms with your game.

Why miss out on the money that can be made and the extra exposure for your game? There are so many markets to cater to, such as Apple AppStore, Android Market, and others, that it would be silly to throw away the opportunity to publish on them and rake in the extra cash. So, a cross-platform development tool such as Monkey is worth its weight in gold, and you will realize this very soon.

Compiler or translator?


Under the hood, Monkey is a translator. That means it will translate your program, which is written in the Monkey programming language, into source code for the supported target languages. And because of this, your program will be able to run on various platforms, such as iOS, Android, XNA, OSX, and Windows.

After Monkey has translated your program into source code for a certain target platform, it will then utilize native tools and SDKs (Software Development Kits) on these platforms to finish the compilation and linking process. For this, you will need to install various tools and SDKs. For example, you need to install Xcode and the iOS SDK to create iPhone apps. Or, to create a Flash app, you need to install the Flex Actionscript compiler.

The following illustration shows the process of creating an application with Monkey:

Don't worry about installing any of these SDKs and other tools for now. We will go through this together. Your default installation of Monkey can always export to HTML5 . To play HTML5 games, the only tool you need to have installed is a current version of an HTML5-compatible browser, such as FireFox, Safari, Chrome, or Internet Explorer.

The Monkey toolbox


Every good toolman has a good toolbox. Monkey's toolbox is small but well-equipped. It is basically a combination of two tools and some accessories. The first tool is TRANS, the source code translator. It is responsible for transforming/translating your Monkey source code into code, which can be compiled for each target platform. Basically, you feed it with one programming language and it spills out your code in a different programming language.

The second tool is Monk, the in-built source code editor for Monkey. You can also use other code editors as well, but we will work with Monk in this book, and it wouldn't hurt for you to do the same. A great benefit is that your Monkey installation includes all the source code for the tools, modules, and other stuff. So, if you happen to own a license for BlitzMAX (another programming language) and know what you are doing with it, then you could add features to Monk yourself or change it according to your needs.

The same thing goes for TRANS; you could change it as per your needs. The good thing is that you don't need another programming language. TRANS is self-compiling.

The accessories are Monkey's source code modules. They provide you with all the needed functionality for your games. We will learn more about this module, later on.

Time for action — installing Monkey


I guess it is time for the first action. If you haven't already installed Monkey, then you should do so now.

Head over to the Monkey website at http://www.monkeycoder.co.nz and grab your copy of Monkey. This book is based on the full version, so you should get that. Of course, you have to buy it first, but you won't regret this investment. And keep in mind that it is only a one-time investment. Other game creation tools are only available through subscription price models which can become very costly later on. It is not so with Monkey; you buy it once, and then you never have to pay for it again.

Ok, let's go and get it:

  1. 1. Go to http://www.monkeycoder.co.nz.

  2. 2. After you buy Monkey and sign up your user account on the website, download the latest full version from your user account.

  3. 3. Unpack the ZIP file to a location you want to run Monkey from.

    That wasn't much to do, was it? Like everything in Monkey, it is very easy to handle, even the first installation. But oh, we forget something. Something major.

  4. 4. Start Monk, to see the glorious development environment of Monkey.

Please welcome… Monk

Yes, here it is. Monk. Monkey's very own code editor.

This is the place where most of the magic will happen. The magic you will create—your own games. Your own awesome games. You still want to do it, right? Ok, then let's carry on.

When it comes to writing your Monkey code, you won't need anything else. There are other source code editors you could use to code your games with, but this book will utilize Monk for all the coding action.

How Monk works and which tools it provides you with, for your development, will be explained in Chapter 2,Getting to Know your Monkey — a Trip to the Zoo.

MSERVER—Monkey's own web server

Since Version 39, Monkey has been shipped with its own HTML server. This was necessary as certain operations required some security rights for actions such as writing the app state within an HTML app. When MServer starts, you will see a window such as the following:

Later on, when you let an HTML5 game run via Monk, MSERVER will provide you with useful information for certain actions of the game.

What just happened?

Installing Monkey is easy, right? And please note, you can copy the extracted folder to any location you want. The settings file for Monk is called monk.yourComputerName.ini and is located in the root folder of the Monkey installation. If you move the Monkey folder to a new location on your harddrive, you might want to delete it or alter the content in this file depending on the new location of Monkey.

Let's have a little playtime


Now that you have this task out of the way, close Monk again. Why? Because we should first see what kinds of games you could create, and then get familiar with Monkey and its feature set.

Game developers should always play other computer games, not only to have fun but also to study them. When you play a game, try to analyze how it could be done; how a certain feature affects gameplay. Or look at the technical aspects of a game, such as what kind of graphic effects a game uses, how the game rewards the player, and so on. You can get so much information out of a game, that it really can help you become a better game developer and designer.

And to get a better picture of Monkey's abilities, you should take the time now to play some games that have already been created with Monkey. As two of Monkey's target platforms are HTML5 and Flash, we can do this inside your browser.

Just make sure you have installed Internet Explorer 9, Firefox 4, Safari, or Google's Chrome browser. Chrome seems to feature the best performance when it comes to HTML5, but it is up to your personal preference.

Ok, head again to Monkey's website, and from there into the apps section. Have a look and play the first game we want to try.

Time for action — playing Pirate TriPeaks


Pirate TriPeaks is a solitaire kind of card game. You can find it at http://www.monkeycoder.co.nz/Community/topics.php?forum=1059&app_id=59.

The gameplay is easy, features nice animations of its graphics, and has some good sound effects. You have to click on matching cards to have them removed onto the open stack on the right. Also, you can click on a hidden card on the left stack to have it flip over and be visible on the right stack. The round ends once all cards from the left side are gone or in the event of removing all cards lying out in the open.

Play a few rounds and try to see what kind of gameplay or visual features make Pirate TriPeaks special.

What just happened

Did you notice a few things? For example, the spinning card animation when you click on a card and it flips down onto the stack. Or the coin animation, when you removed one of the three pyramids? Or the sound effects? All these little extras are the eye and ear candy that can separate one game from another. Here is a short list of features:

  • Spinning card animation

  • Flipping card animation

  • Sound effects

  • Coins falling from the top when a pyramid is removed

  • Playable with just the mouse or a finger on a mobile device

As a game developer, and also game designer, you should always play other people's games. Not only to have fun, but also to take inspiration from other games for your own one. Try to analyze them—what they did wrong in your opinion and also what they did great.

Time for action — playing Surviball


Next stop, Surviball. You can find this awesome game at http://www.monkeycoder.co.nz/Community/topics.php?forum=1048&app_id=48.

This game kind of looks a bit like the old Marble Madness. Your goal there is to move a marble through a parcour filled with obstacles, ramps, and enemies. In Surviball, you have to direct a marble over a difficult course filled with tiles that give your marble a good speed boost, when sometimes that is not what you need at that very moment.

When you play Surviball, try to pay attention to the controls and the graphical effects.

What just happened?

Ok, what did you notice? Maybe this rotating start effect, which is pretty simple to archive but visually very intense. Or the control scheme. By pressing the cursor keys on your keyboard, the marble speeds up. So you have to take the current speed into account when it comes to directing your marble in the required direction. Another thing is that the play field is assembled by a lot of repeating small tiles, each with a different functionality. Also, there is a timer, which gives the player some pressure to reach the goal in the given time frame.

Again, let's list some of the features of Surviball that we have discovered:

  • Rotation star effect

  • Indirect control scheme of the marble

  • Playfield assembled via small tiles with different functionality

  • Game timer

Playing to have fun, playing to study

Like we have seen already, when you play other developers' games, you should study them. Look at how graphics are used, how the control scheme is set up, and so on. Find out how the player gets rewarded and what makes the player go on and play further.

Of course, have fun with the games, but also analyze them to learn how things could be done. Take inspiration from them and also take the motivation you get from this for your own projects. There is nothing wrong with taking existing ideas and reusing them. Why reinvent the wheel when someone is already driving the car with it! I don't mean shamelessly copy other games, but take a proven concept, enhance it, and put your own stamp on it.

So let's go for something big? No!


Ok, so you want to create the next Diablo game, or another Star Craft. Do yourself a favor and take a step back; better, take 10 steps. Each of these games was created by an army of people. We are not talking about five to 10 people. Multiply these figures by 10 or 20 and the result will give you a good estimate of how many people are working on titles like the ones I have mentioned.

The games we have just played were created by individuals. They did the graphics, the sound effects, and the coding, all on their own. So when you start game development, set a small goal. The most important aspect for a game developer is to finish projects. Go for something that you can finish easily and in a short period of time. There are thousands of wannabe game developers out there who have never had something released in their whole career. You will definitely agree that someone who has never finished a game project can't call themselves a game developer.

The alternative

So instead of the next AAA title, we will first work together on the small projects. Starting with Chapter 2, Getting to Know your Monkey—a Trip to the Zoo, we will work on projects that you will be able to finish in a short period of time. We will look together at some classic games and will recreate them. Along the way, you will learn your tools and techniques that you'll need when you create games on your own.

The rewards and motivation from finishing a project are immense and will make you want more and more. So let's take some small steps first. Learn how to walk before you learn how to run.

What just happened?

Enough with all this game playing and having fun. Game development is also work. Sometimes it is fun work, but also sometimes dry and tough. But Monkey supports you with a great feature set in its arsenal, and you should now have a little study time in addition to this book. So it's not about what you can do for your Monkey, it's now about what your Monkey can do for you. After all, you shelled out quite a bit of cash and you should get something worthwhile back for it!

Time for action — read the manual


There will be a time when you will be participating in some online communities, mostly regarding game development. And of course, you will ask questions. Sometimes they will be good ones, but also sometimes questions about things that you could have figured out on your own. If other people see this, it could happen that you will get told to read the manual/instructions first before asking. Do yourself a huge favor and do just that, as it is rule number one. For every tool you use, read the instructions first. It can be dry and boring sometimes, but don't skip that task. It might come back to you, if you don't. When it comes to Monkey, it ships with a good-sized documentation. Monkey's creator and some helpers took quite some time to create the documentation. You will find information about Monkey's language, the specific modules of Monkey, and also two nice little tutorials to get you started. You will find all this when you open Monk and click on the Docs tab of the coding area.

When you are done with this, come back to this book and we will go over what you have seen. So go... now

What just happened ?

Wow!... the documentation for Monkey is quite a book (when printed)! You can get a lot of information out of it. It describes Monkey's features pretty well. But what are those features?

The Trans tool and the supported target platforms

The Trans tool translates your monkey source code into the native source code for a specific platform. Thanks to Monkey, there are already quite a few platforms you can choose from.

HTML5

Without having installed any platform SDKs and tools, such as Xcode and so on, Monkey can create HTML5 apps right out of the box. If your goal is only to create games for websites, then you won't need anything else besides a HTML5-compatible browser to develop your games. An HTML5 game is always a combination of an HTML file and a Javascript file where your game logic rests. All of your Monkey code is translated to Javascript code. Together with a calling HTML file, you can play this code directly in your browser or put it onto a web server to play it online.

FLASH

To create FLASH games, you need to have another tool installed—FLEX. We will go through this process later on in the book, so don't worry about how to install FLEX. In the process of creating a FLASH game, TRANS translates your Monkey source code into ACTIONSCRIPT code. ACTIONSCRIPT is the programming language behind FLASH apps/games. Then, after TRANS is done, FLEX compiles the created ACTIONSCRIPT code into a FLASH file. The created FLASH file can then be loaded onto a web server and can be played from there. FLASH games created with Monkey tend to perform a little faster than HTML5 apps, but that can change. To play FLASH apps/games, all you need is a browser with a FLASH player plugin installed in it.

iOS

Of course, iOS is supported. iOS is the iPhone/iPod/iPad platform, and for this, you need to have Xcode with the iOS SDK installed. Again, we will install that together later. If you want to create an iOS app, TRANS translates your Monkey code into C++ code. Then Monk will execute XCODE, which will compile your code into an iOS application. The resulting app can then be played inside the Xcode simulator. To test your game on an actual device, you need to sign up for a separate iOS developer account at Apple. There you can create the certificates needed to have an app installed on a device.

Android

The second mobile platform supported is Android. To create Android apps, you need to install the Android SDK, which we will also do together, later on. TRANS will translate your Monkey code into JAVA code. Then, the compiler of the Android SDK will create an application that you can either test on the Android simulator or on an actual device. To test an app on a device, you don't need to sign up for a Google developer account. You need to do this only when you want to sell your game on the Android market.

XNA

Behind XNA are actually three platforms: XNA for Windows desktop, for Mobile Phone 7, and for the XBOX 360. Again, you need to install an SDK for it, the Windows XNA SDK. Monkey's TRANS tool will translate your source code into C#, and then Visual Studio C# will create an application that can run on one of the mentioned XNA platforms.

GLFW

Just like XNA is basically three platforms, GLFW is two platforms. It depends on which development platform you compile your game with, OSX or Windows. For OSX, you need Xcode installed, and for Windows you need Visual Studio C++. So you actually have two platforms for the Windows desktop. Again, TRANS will translate your code into C++ source code, and the platform-corresponding SDK tools will compile that generated C++ code into an executable.

The Monkey standard modules

Modules are a huge part of the concept of Monkey. Besides the general language features, other commands are added to Monkey, via modules. They are written in Monkey code and maybe native code (C++, JavaScript, and so on). These modules either provide new commands and/or interface with commands from external native code, so you can use them in your game. In the following text, we will see what they are good for. It won't be a detailed explanation of how they work; only what you can do with them.

For more information on modules, please look into the Monkey documentation within the Module Reference section.

Lang

The lang module adds basic features to Monkey, such as Print, different data type-related handling functions, and one of the most important features, objects—the base for Monkey's class implementation. Here is a short code example:

Function Main()
Print ("Hello World")
End

Lists

If you know the concept of linked lists, this module provides something that will be familiar to you. If not, Wikipedia has a good explanation at http://en.wikipedia.org/wiki/Linked_list.

A list is a data container that lets you store something, from the same type of object as a node, inside memory. The list supports easy addition and removing from objects. You can iterate through the list of nodes in each direction. Another nice feature of a list is that you can convert it to an array of strings. To find a specific node inside the list, you need to iterate through the list, node-by-node, till you find the one you need.

Here is a small code example for a list in Monkey, without further explanation:

Function Main()
'create a new list
Local myList:=New StringList
'add some data
myList.AddLast "first entry"
myList.AddLast "second entry"
myList.AddLast "third entry"
'iterate through a list with an EachIn loop
For Local item:=Eachin myList
Print item
Next
End

Map

A map data container is similar to a list, as it is built from nodes too, and you can iterate through them. And node of a map is a pair of a value object and a key object. This key can only exist once. With it, you can retrieve the corresponding value very fast. If you need to find elements of a data container very fast, choose a map over a list.

The following image shows how map nodes have a relationship with each other. In a list, there is always a pre and post node from a current one. In a map, nodes have a loose relationship with each other. That means that you CAN iterate through a map, like you can with a list, but the real strength comes from searching nodes with the corresponding keys. So when you add a node to a map, this node will be placed inside a pool of nodes.

That is shown in the following screenshot with with Node 6. Knowing their keys, you can retrieve the corresponding data very very fast.

Here is a small code example with no further explanation:

Function Main()
'Define a string map with a string key
Local myMap:= New StringMap<String>
'insert entries
myMap.Insert("First","First entry")
myMap.Insert("Second","Second entry")
myMap.Insert("Third","Third entry")
'Print all entries
Print (myMap.Get("Third"))
Print (myMap.Get("First"))
Print (myMap.Get("Second"))
End

Math

Almost each game needs something to be calculated. The Math module provides a good set of mathematical functions for your game developing needs. Here is a nice example where the Sin function is used:

Function Main()
Local pi:Float
pi = 3.14159265
Print (Sin(pi))
End

Random

Since our game should not always run in the same way as the last time we played it, we need some randomness in it. The random module provides functions just for that—to retrieve random numbers. The following code is a little example of how to retrieve a random number:

Function Main()
'Retrieve a random number and print it inside the console
Local r:Float = Rnd(10,100)
Print (r)
End

Set

A set stores objects. It is like a shoebox that you can store your toy cars in. Like lists and maps, you can iterate through them. The difference from a list is that the objects in a set can only exist once in it. No matter how many times you add an object to it, the set will contain it only once. So it is good to keep track of a number of objects.

In the next example, you will see that the same entries won't be stored inside the set:

Function Main()
'create a new set
Local mySet:=New StringSet
'Add entries
mySet.Insert("First")
mySet.Insert("Second")
mySet.Insert("Second")
mySet.Insert("Second")
mySet.Insert("Third")
'Print all entries in the set
For Local s:= Eachin mySet
Print (s)
Next
End

Stack

Monkey provides a few ways to store data. The last module in this category is Stack. Imagine a stack of books. Basically, you can store them by placing one book on top of another (Push). If you want to take away one, you take it back from the top (Pop). Of course, you can squish a book in between the stack (Insert) or remove one from in between (Remove). And like all data storing features, you can iterate through a Stack in all directions.

Here is a small example for the usage of Stacks:

Function Main()
'create a new stack
Local myStack:=New Stack<String>
'Add entries
myStack.Push("First")
myStack.Push("Second")
myStack.Push("Third")
'Print all entries in the set
For Local s:= Eachin myStack
Print (s)
Next
End

Mojo — The 2D framework/modules

Monkey ships with a 2D framework module called Mojo. It provides all the meat (functionality) for each supported target platform. From handling graphics, to sound over input and device events, Mojo provides everything a good 2D game needs.

App

The app module provides some basic functions to load strings from the device and store/retrieve an application's state. Also, you can control the update rate for your render process with it and make it react to certain events, such as onResume, onSuspend, and others.

Audio

Ding dong!... Bang!...Wooosh! Almost all games have some kind of sound effect, and the audio module is Mojo's one-stop-shop for that. Load and play sound effects or total music for your background.

Graphics

Ladies and gents...please have a look at...the engine! The graphics module is responsible for loading and rendering images, drawing all kinds of graphical shapes, such as lines, rectangles, and circles, and also text. How else could you tell the player what to do next? Without this module, there is no output in Monkey. So this is a very important part of Monkey.

Input

When it comes to mouse input, violently hitting the keyboard, touching softly the screen of your mobile device, or tilting it wildly in every possible direction, the Input module is the way to go to retrieve information about how the user interacts with a game and its controls.

Monkey is extendable

One of Monkey's greatest features is that you can easily extend it. And the good thing is that you don't have to wait till Blitz Research does that for you. You are not bound to what the creator of Monkey will implement.

Your own modules

If you have Monkey code that you will use all the time and in every project you work on, then it is time for a module. Study how the native modules of Monkey implement new commands and functionalities.

Native source code

Another great thing is that you can add and link to external native code, import that code, and make some external declarations. It is very easy to do.

Third-party modules

Slowly, there are more and more third-party modules being developed for Monkey. Just to name a few, the following modules add some pretty interesting and valuable features:

  • fling—A physaxe 2D implementation that will add nice physics to your games

  • diddy—A great library of mixed functions

  • mnet—A network module to add access to server-based network connections

Note

These modules can be found at the following websites:

fling: http://code.google.com/p/fling/

diddy: http://code.google.com/p/diddy/

mnet: http://code.google.com/p/mnet/

You will find links to these modules and other modules inside the module registry section of Monkey's website. You can find this section at http://www.monkeycoder.co.nz/Community/modules.php.

Your own targets

The final feature you have with Monkey is that you can add your own target platforms, but, for this, you would need good knowledge of Monkey's internal structure and extensive knowledge to code for this platform. We definitely won't cover this topic further in this book. Say someone is working on a target for the Nintendo DS; you can find more about this at:

http://www.monkeycoder.co.nz/Community/posts.php?topic=652#5053.

Your game is easily portable

The last feature, which you're going to love, is that you don't have to code differently when it comes to making your game run on different platforms. Your Monkey code stays the same; the difference lies inside the created source code on each platform.

Summary


Wow! A lot to read and not much to do. Ok, you got some playtime here but also some good information. Let us revise what we have learned so far and looked at in this chapter:

  • We learned where Monkey comes from

  • We found out that Monkey translates your code into the native language of each platform

  • To find out what kind of games Monkey can create, we played a few

  • We studied the key features of the games we played

  • Of course, we installed Monkey on our computer

  • And, most importantly we learned about Monkey's feature set in general

So what's next? Do you agree that we can now dive into the inner caves of Monkey, bring out some fine functionality, and create your first game? Yes? You should answer more loudly! YES! Ok, so let's get rolling with the next chapter!

Left arrow icon Right arrow icon

Key benefits

  • Create eight fun 2d games.
  • Understand how to structure your code, your data structures and how to set up the control flow of a modern 2D game
  • Learn how to deploy your games to iOS, Android, XNA (Xbox, Windows Phone 7) and desktop platforms (Windows, OSX)

Description

Monkey is a programming language and toolset that allows its user to develop modern 2D games easily for mobile and other platforms like iOS, Android, HTML5, FLASH, OSX, Windows and XNA. With Monkey you can create best selling games in a matter of weeks, instead of months.Monkey Game Development Beginner's Guide provides easy-to-follow step by step instructions on how to create eight different 2D games and how to deploy them to various platforms and markets. Learning about the structure of Monkey and how everything works together you will quickly create eight classical games and publish them to the modern app markets. Throughout the book you will learn important game development techniques like collision detection, handling player input with mouse, keyboard or touch events and creating challenging computer AI. The author explains how to emit particle effects, play sound and music files, use sprite sheets, load or save high-score tables and handle different device resolutions. Finally you will learn how to monetize your games so you can generate revenue.

Who is this book for?

Do you want to quickly create games deployable to all the major desktop and mobile platforms?, if so look no further. You will learn how to utilize the highly versatile Monkey compiler to create 2d games deployable almost anywhere.

What you will learn

  • Implement collision detection and optimize it for mobile devices
  • Handle game controls via touch, keyboard, mouse and accelerometer input
  • Load and playback sound effects and music
  • Sign your applications and publish them to different markets
  • Use 3rd party modules like the fantomEngine game framework to speed up your game development process
  • Store the data of your different game objects effectively in lists, stacks and classes
  • Structure your monkey script into separate objects and files so your code is better maintainable
  • Save and load application states and load level data from text files
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 : Apr 20, 2012
Length: 402 pages
Edition : 1st
Language : English
ISBN-13 : 9781849692038
Languages :
Concepts :

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 : Apr 20, 2012
Length: 402 pages
Edition : 1st
Language : English
ISBN-13 : 9781849692038
Languages :
Concepts :

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 $ 153.97
Corona SDK Mobile Game Development: Beginner's Guide
$54.99
Responsive Web Design with HTML5 and CSS3
$43.99
Monkey Game Development: Beginner's Guide
$54.99
Total $ 153.97 Stars icon

Table of Contents

10 Chapters
Monkey—Huh? Chevron down icon Chevron up icon
Getting to Know your Monkey—a Trip to the Zoo Chevron down icon Chevron up icon
Game #2, Rocket Commander Chevron down icon Chevron up icon
Game #2, Rocket Commander
The game objects
The basic file structure
Time for action — building the basic file structure of the game
Hold that data—RocketCommander's data structure
Time for action — creating the general data structure of the game
Detailing the Update process
Time for action — detailing the Update process
Detailing the Render process
Time for action — detailing the Render event
Enhancing the OnCreate event
Time for action — detailing the OnCreate process
Let's build some cities
Time for action — building some cities
Time for action — changing the gameClasses file
Time for action — spawning some cities in the game
Time for action — rendering the cities
Get the launchers ready!
Time for action — implementing the rocket launchers
Time for action — changing the gameClasses file again
Time for action — creating some launchers in the game
Time for action — updating the launchers
Time for action — modifying the menu update process
Time for action — rendering the launchers
Fire! Blast them to pieces!
Time for action — implementing some rockets
Time for action — modifying the gameClasses file
Time for action — modifying the launcher class
Time for action — updating the rockets
Time for action — rendering the rockets
And it goes BOOM!... Explosions
Time for action — implementing explosions
Time for action — modifying the gameClasses file
Time for action — modifying the rocket class
Time for action — updating the explosions
Time for action — rendering the explosions
Don't fear the enemy—bombs
Time for action — creating the bomb class
Time for action — modifying the gameClasses file
Time for action — updating the bombs
Time for action — rendering the bombs
Time for action — modifying the UpdateGame method
Displaying the game score
Time for action — displaying the game score
Summary
Game #3, CometCrusher Chevron down icon Chevron up icon
Game #3, CometCrusher
Using a game framework—the fantomEngine
Game resources
The game objects
The basic file structure
Time for action — create the main source file and its folders
Open the storage please—the data structure of CometCrusher
Time for action — creating the data structure
First changes to the OnCreate method
Time for action — modifying the OnCreate method
Detailing the Render process
Time for action — detailing the OnRender method
This is a setup—creating the game objects
Time for action — creating some layers
Time for action — implementing some stars
Time for action — setting up the player ship
Time for action — creating a method to load sounds
Time for action — creating some game info text objects
Time for action — adding a title screen
Time for action — setting up the high score list
Time for action — create a comet
Time for action — creating some comets
Time for action — finalizing the OnCreate method
We need help—more methods for the Update process
Time for action — loading a high score list
Time for action — showing the high score list
Time for action — the ActivateShield method
Time for action — determine the time delta
Time for action — updating the info text
Time for action — creating a StartNewGame method
Time for action — spawning some engine particle FX
Time for action — creating some explosions
Time for action — spawning some shots
Time for action — saving the high score list
Finalizing the OnUpdate method
Time for action — finalizing the OnUpdate method
Bring in the action—shaping the engine class
Time for action — detailing the collision detection
Time for action — detailing the OnObjectTimer method
Time for action — detailing the OnObjectUpdate method
Time for action — detailing the OnLayerUpdate method
One last thing—creating a FLASH game
Summary
Game #4, Chain Reaction Chevron down icon Chevron up icon
Game #4, Chain Reaction
Modifying the HTML5 canvas size
Time for action — modifying canvas size
Some development basics
Game resources
Game objects
The basic app structure
Time for action — creating the main source file and its folders
The data storage
Time for action — creating the data structure
First changes to the OnCreate event
Time for action — first changes to the OnCreate method
Detailing the OnRender event
Time for action — detailing the OnRender method
Setting up the game objects
Time for action — loading the game sound effects
Time for action — creating layers for the game
Game screen
Time for action — creating buttons
Time for action — creating info text objects
Time for action — composing the game screen
Time for action — creating the title screen
Finalizing the OnCreate event
Time for action — finalizing the OnCreate method
Helper functions for the update process
Time for action — creating collision circles
Time for action — creating the atom elements
Time for action — creating a StartNewGame method
Time for action — implementing the GetDeltaTime method
Time for action — creating a method to update the text information
Detailing the OnUpdate event
Time for action — finalizing the OnUpdate method
Introducing the OnSuspend event
Time for action — modifying the OnSuspend event
Introducing the OnResume event
Time for action — updating the OnResume method
The heart of the game - the engine class
Time for action — enhancing the OnObjectTouch method
Time for action — detailing the OnObjectTransition method
Time for action — acting on timer events
Time for action — detailing the collision detection
Creating an Android app
Summary
Game #5, Balls Out! Chevron down icon Chevron up icon
Game #5, Balls Out!
Which frameworks and modules are used?
Game resources
Our lovely game objects
The basic app structure
Time for action — creating the basic file structure
Modifying the HTML5 canvas size for testing
Time for action — modifying the HTML5 output
The data storage
Time for action — creating the data structure
First changes to the OnCreate event
Time for action — first changes to the OnCreate method
Detailing the OnRender event
Time for action — detailing the OnRender method
Setting up the game objects
Time for action — loading the game sound effects
Time for action — creating layers for the game
Time for action — creating text buttons
Time for action — composing the game screen
Time for action — creating the title screen
Finalizing the OnCreate event
Time for action — finalizing the OnCreate method
Helper methods for the update process
Time for action — creating the tiles
Time for action — creating the ball
The bad guys—our beloved enemies
Time for action — creating the enemy class
More helper functions
Time for action — spawning an enemy
Time for action — creating a StartNewGame method
Bring me up-to-date—detailing the OnUpdate event
Time for action — detailing the OnUpdate method
Eye candy—particle effects
Time for action — creating the particle emitter class
Time for action — spawning a particle emitter
The heart of the game—the engine class
Time for action — enhancing the OnObjectTouch method
Time for action — acting on object update events
Time for action — acting on layer update events
Time for action — detailing the OnObjectTransition method
Time for action — detailing the collision detection
Creating an iOS app
Summary
Game #6, At The Docks Chevron down icon Chevron up icon
Game #7, Air Dogs 1942 Chevron down icon Chevron up icon
Game #7, Air Dogs 1942
Frameworks and modules used
No silver, no gold, but… our game resources!
The game objects
The basic app structure
Time for action — setting up the basic file structure
Storing data
Time for action — creating the data structure
First changes to the OnCreate event
Time for action — first changes to the OnCreate method
Setting up the game objects
Time for action — loading the game sound effects
Time for action — creating layers for the game
Time for action — composing the background screen
Time for action — creating the clouds
Time for action — creating info text objects
Time for action — creating the title screen
Finalizing the OnCreate event
Time for action — finalizing the OnCreate method
Methods for the update process
Time for action — spawning the player plane
Time for action — spawning an enemy plane
Time for action — creating a StartNewGame method
Detailing the OnUpdate event
Time for action — detailing the OnUpdate method
Making it look nicer—some particle effects
Time for action — emitting the smoke
Time for action — creating the explosion
Time for action — spawning a shot
The brain—Computer AI (Artificial Intelligence)
Time for action — following the player
The heart of the game—the engine class
Time for action — enhancing the OnObjectTimer method
Time for action — detailing the OnObjectTransition method
Time for action — acting on object update events
Time for action — detailing the collision response
Time for action — acting of layer update events
Creating a GLFW app
Summary
Game #8, Treasure Chest Chevron down icon Chevron up icon
Game #8, Treasure Chest
Frameworks and modules used
Reusing code
The parts of the game... resources
And here they are… the game objects!
Preparation… the basic app and project structure
Time for action — creating the basic file structure
Creating 2D arrays
Time for action — creating 2D arrays
Storing information… the data storage
Time for action — creating the data structure
First changes to the OnCreate event
Time for action — first changes to the OnCreate method
About the OnRender event
Setting up the game objects
Time for action — loading the game sound effects
Time for action — creating layers for the game
Time for action — composing the background screen
Time for action — creating the title screen
Time for action — creating the "game over" screen
The menu please… creating the menu screen
Time for action — creating text buttons
Time for action — creating the menu screen
Time for action — creating the score screen
Time for action — creating the activate layer method
Finalizing the OnCreate event
Time for action — finalizing the OnCreate method
Dealing with the high-score list
Time for action — loading and saving the high-score list
Time for action — showing the high-score list
Managing the tile map
Time for action — getting tile slot IDs
Time for action — setting a tile slot ID
Check/mark the neighboring tiles
Time for action — checking neighboring horizontal tiles
Time for action — check neighboring vertical tiles
Time for action — clearing the tile map
Time for action — counting matching tiles
Time for action — creating a gem
Time for action — refilling the tile map
Methods for the update process
Time for action — creating a StartNewGame method
Time for action — updating the text info
Time for action — showing the "game over" screen
Time for action — showing the menu
Bring me up-to-date—detailing the OnUpdate event
Time for action — detailing the OnUpdate method
Vroom… vroom—the engine class
Eye candy—particle effects
Time for action — spawning an explosion
Time for action — acting on object timer events
Time for action — enhancing the OnObjectTouch method
Time for action — detailing the OnObjectTransition method
Time for action — acting on layer update events
Summary
Make Some Money for Bananas Chevron down icon Chevron up icon

Customer reviews

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

Filter reviews by




Doug warner Aug 08, 2015
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is actually a very well written book. I found it very useful. this also seem to be the only book I could find on monkey coding, so it also got that going for it.
Amazon Verified review Amazon
TheGreatestAdventurer Sep 25, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Great book for beginner programmers. Concentrates on programming simple games so that the student can see their work. Includes step-by-step programming for 8 games. Chapter 10 discusses how to monetize your games. Over all a great book for would be game and app programmers. Monkey X also has a friendly online community. www.monkey-x.com
Amazon Verified review Amazon
P. Robson Mar 30, 2014
Full star icon Full star icon Full star icon Full star icon Full star icon 5
This is a really good book - it is well written, the examples are well thought out, there aren't many errors and most of them are minor. The author has a clue how to program properly (an awful lot of people who write these sorts of books don't) ; it encourages good practice - comments, meaningful names, classes, encapsulation and so on pretty much from the start. Very early on for example it emphasises the importance of putting a proper header on your code files.What it isn't is a beginners guide. It's a beginners guide to Monkey, yes, but if you can't program you will struggle very fast. The introduction is very gentle, shows very basic Hello World examples. The first application (Pong) is followable, just if you aren't a coder. It does use classes and so on but they aren't really intrinsic to the application.The second example, Rocket Commander, explodes in complexity. You create three files with an application class subclassed from an App parent. There's a finite state machine. Things are divided into objects, methods and so on. The explanations of these things are quite good but necessarily brief, otherwise the book would be ten times as long. If you know what these things are, or have some idea, you'll be fine but a beginner to programming would be thrown at this point. What is a class ? What is a finite state machine ? How does this all work ?This isn't a criticism of the book per se - as a way of learning how to code in Monkey it seems, so far, to be really good. It's a worthwhile read for those who can already program in Monkey as well, I think, there seems to be lots of good ideas there. But don't buy it if you don't have some idea how to program, know a little bit about objects and classes and so on.So with that caveat, the book is strongly recommended. As is Monkey :)
Amazon Verified review Amazon
Snader May 09, 2012
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Although I'm am not a beginner at programming for Monkey ([...]), I wanted a book to see some complete programs (simple games) or examples of how these are made from the beginning. This book is great for me. The spare time that I have went mostly in exploring the monkeycoder forums, looking for answers. Now I can easily read this book from beginning to end and I can make everything I want.The author of the book is very active on the monkeycoder forums. So, If you have a question, or something has changed in the newest Monkey versions, he is always willing to help! Great stuff!
Amazon Verified review Amazon
Julio cesar Jun 11, 2012
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
If you want to start as a game developer and get your game in every mobile/not mobile platform with a little effort, this is your book.Here you can get great examples and it's very easy to learn, the language is something like basic, so it's not that hard to code.I don't give it 5 stars because this book teaches you how to use an engine and I would prefer to learn how to make my own, but if this book's objective is to learn make games, then it's achieved.
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