I was asked to review the upcoming Adventures in Minecraft book prior to its official release, as a tester and “Minecraft consultant”. With limited existing knowledge of the Python programming language, having only dabbled with coding small programs (like basic Twitter tools using Twython) and basic websites using Django (a Python web application framework), my interest in learning to code was there, but Python had never been something that I learned in a structured way. Instead of learning the Python fundamentals and developing my basic programming skills methodically, I simply learned what I had to in order to create what I needed at the time. And that method of learning can often compromise the learner’s efficiency, as I have undoubtedly picked up some bad coding habits this way and sometimes find myself trying to run before I can even walk.
What is Adventures in Minecraft?
“I already know what Adventures in Minecraft is…. Skip to the Review!“
Adventures in Minecraft is a brand new book by David Whale and Martin O’Hanlon, published by Wiley. It introduces essential programming concepts to children (between the ages of 11 to 15 years old) within an environment that they are most likely already familiar with: Minecraft. Minecraft is a popular sandbox game that allows the players to explore their creativity in an open world that encourages them to think outside of the box. You can choose to play the game in a variety of different ways, limited only by your imagination. You can play to survive, or explore a never-ending world, or create huge structures or machines using unlimited resources within the Creative game mode. And much, much more.
The recent change in the national school curriculum, which replaces ICT with Computer Science, means that school children across the country will be learning programming and computer science from an early age. And what better tool to kick start their learning than a game which a lot of young people are already passionate about? Minecraft has sold more than 54 million copies across all platforms, making it one of the best-selling video games of all time, and as of February 2014 the game has reached 100 million registered Minecraft users. Using the new Adventures in Minecraft book, children are able to code the Minecraft world around them using the Python programming language, acquiring the foundational programming skills that they need to become a skilled programmer themselves. Either to do well in the subject at school, or to develop their skills further once they move on to bigger projects themselves.
Python can be used for budding software engineers to develop their first programs, or young web developers to build their very first dynamic, database-driven website. Many components of Google’s search engine are written in Python, as is popular image editing tool Jasc Paint Shop Pro and some popular websites like Reddit. Pinterest, Instagram and Mozilla are also powered by the Python web framework Django.
Though Python is the language used to introduce young people to coding within this particular book, the key programming concepts taught can later be applied to other programming languages. Python is effective as a first programming language as it quickly introduces complete beginners to basic things such as loops, data types and libraries using clean and simple syntax. It has a gentle learning curve that allows beginners to quickly develop useful programs based on very little code but, with more experience and knowledge, can be used to create large and more complex projects.
Adventures in Minecraft Review
The book begins by guiding the reader through the installation of a Minecraft server that will allow the modification of the game through plugins, and how to set Minecraft up for the first time. The great thing about Adventures in Minecraft is the fact that it doesn’t require you to use a Raspberry Pi to complete the book. It doesn’t ignore those young coders who will be completing their Minecraft adventures on the family computer, which most likely will be a Windows PC or a Mac. Anyone with access to a computer that can run Minecraft is able to pick up the book and have a go, and everything works whether you’re running it on a Raspberry Pi, Windows PC or a Mac! (I chose to complete the book on my Windows 7 machine.)
And the adventure all begins with the obligatory Hello World program:
A pleasantly traditional way to introduce any newcomer to the world of programming.
From here, the book takes the reader on a journey, teaching at a comfortable learning curve that’s gentle at first then gets steeper and steeper toward the end – but in a way that will challenge, not overwhelm, the new learner. The first couple of chapters are extremely basic, as they should be, introducing Python’s syntax and getting the reader to become comfortable with how indentation works with loops, control flows and conditional statements. The reader is encouraged to experiment with their own adaptation and modification of the instructional code so that they can create a program unique to them. This additional challenge helps the reader to become more involved with the code and think for themselves instead of just following a set of instructions, truly personalising the learning experience.
Once the reader has been familiarised with these beginner concepts, they are able to construct 3D structures within the Minecraft world using while and for loops and calculating the coordinates that they need to build these massive structures around them. Generating an entire house in a second, then repeating the house to generate entire streets just as quickly. It is at this point that we are also shown functions for the first time in the book, and how to use functions to increase your program’s efficiency.
Later on in the book, the reader explores how to read and write to external data files (such as CSV files) to use within our own programs. From building mazes in Minecraft that we’ve created in a CSV file to creating our very own “duplicator room” or Minecraft 3D printer, allowing us to save copies of structures within the Minecraft world (such as trees) and then “print” them elsewhere from the .csv copy we have made. And we can “copy” the area around us by simply clicking on it.
In the seventh chapter of Adventures in Minecraft, we get to mess around with generating colossal structures, starting with 2D lines and circles and then moving on to 3D shapes like spheres and pyramids. It gets a little more mathematical, but it didn’t take me long to start generating giant, glass-coated, lava-filled “planets” everywhere! We are also shown within this chapter how to import math, time, and datetime modules to create our very own giant Minecraft clock that displays the clock face and hour/minute/second hands to display your machine’s system time – and you can actually watch the hands move around the clock face! Again, a lot of Maths….
The last two chapters of the book are by far my favourite. Maybe it’s because it just summarises everything we’ve learnt throughout the book and we are able to create fantastic games using everything we’ve learnt. From making a little alien block friend that follows you around talking to you based on the “emotions” that you have given it and how you interact with it, to an evil UFO who sarcastically taunts you as it follows you from the sky before beaming you into a prison cell.
The last chapter of the book is absolutely spectacular though; an amazing way to finish the book because there’s not really an end to it. We create a game called Crafty Crossing where we first create the “game arena” based on our specifications and populate the arena with different obstacles, including a log that floats along the river side-to-side (like in Frogger), a wall that goes up and down to trap the player, and holes that randomly open up in the ground, sending you back to the beginning. It is here that we learn about multi-threading for the first time. Each obstacle function in the game, where the objective is to run around collecting diamonds before the time runs out to get to the next harder level, is run as a new thread. So that each obstacle function is being executed simultaneously whilst you’re running around collecting diamonds. You can see how this game program can quickly become expanded to include even more threaded arena obstacles, or have the arena change its shape or appearance with each completed level, and make the game harder and harder the more levels you beat.
Once you’ve completed your (“first draft”) of the game, you are able to integrate an electronic circuit board to it! To start the game with the push of a button, and to display the number of diamonds you have yet to collect within the 7-segment-display, which flashes at you when you’ve nearly run out of time.
“Wait. You didn’t mention anything about electronics!”
You may have noticed that I have yet to talk about the electronics aspect of the book…. The most intimidating “adventure” for me personally was about half way through the book (Chapter 5), where we are introduced to electronics for the first time in the Adventure titled “Interacting With Electronic Circuits”. Suddenly upon reading that title, we’re not so sure any more… Like a lot of people, I can imagine, I’ve never really been acquainted with the world of electronics. Though undeniably fascinating, it has just never been something that’s popped up in my life as something to learn or become accustomed to. However, with a little help from a solderless breadboard, some jumper cables, resistors, LEDs, a 7-segment-display and, of course, an Arduino Pro Micro (which you won’t need if you’re doing this all on a Raspberry Pi), it didn’t take me too long to get a few LEDs flashing at me. Followed shortly by my very own LOL-machine that will laugh at my jokes so you don’t have to!
Though seemingly unrelated to Minecraft, the way in which electronics is incorporated into this Minecraft book is fantastic. Writing code in Python, then performing an action in real life such as pressing a button on a breadboard that you put together yourself, and having a real-world action interpret into something on Minecraft! I cannot express in words the sense of pride and accomplishment I felt the first time I pressed a button in real life and it did something in Minecraft! By extending the Minecraft adventure from the virtual world into something physical that sits on my desk and flashes at me, demanding to be pressed, it’s just an incredibly rewarding feeling to be able to intermix the real world with a virtual one like that.
I never thought that anything could encourage me to get into learning electronics, but Adventures in Minecraft proved me wrong. And you’ll be amazed at how many ideas you’ll come up with about how to use buttons, LEDs and 7-segment-displays to interact with your Minecraft world.
From using the buttons to command actions within your game to displaying game information on something physical that you can actually touch in front of you… In the bonus chapter (that’s freely available as a PDF on the Wiley website), you can use multiple buttons to create a lift that goes up and down, taking you to different floors of your multi-storey building. You can create a window to allow you to watch the world outside as you travel one block at a time up and down between floors. And I love the fact that there is a free bonus level available online that anyone can get a hold of regardless of whether they’ve bought the book or not.
What is really admirable about the way in which the book is written is the tone of voice used throughout. Though the book assumes no previous experience of programming from the reader, and is primarily aimed at those interested in learning to code between the ages of 11 and 15, the language used is friendly and conversational; never condescending, which can easily be done with a book such as this. Adventures in Minecraft is written with such infectious enthusiasm and passion, acknowledging its young audience, which is important in order for a children’s educational book to succeed as a learning resource as it communicates a level of respect between the reader and author.
Due to the nature of the Adventures in Minecraft book, the dedication of the authors and the way that they encourage the book’s readers to create their own unique programs based on the book, I expect to see an online community growing around Adventures in Minecraft as young people are inspired to share their own unique creations with others in a social environment of collaborative learning. And I for one look forward to actively participating in the growth of that community.
I would like to thank David Whale and Martin O’Hanlon for allowing me the opportunity to be involved with Adventures in Minecraft, and for authoring an inspirational book for young people to get excited about coding. It genuinely has been an exhilarating experience and I can’t wait for my next adventure in Minecraft!