No part of this book may be reproduced, stored in a retrieval system, or transmitted Cover Image by Charles Hinshaw ([email protected]). This material is. by Developing Games with Unity 3D Beginner's Guide Every effort has been made in the preparaƟon of this book to ensure the accuracy of the . Did you know that Packt offers eBook versions of every book published, with PDF and ePub. International Standard Book Number (eBook - PDF) After completing my first book, Game Development for iOS with Unity3D.
|Language:||English, Spanish, Portuguese|
|Genre:||Business & Career|
|Distribution:||Free* [*Register to download]|
I wanted to ask if anyone knows some free pdf books that talk about how to use Unity3D from the foundations, I know there are tutorials on. In this tutorial, I will be demonstrating the process of interacting with meshes in Unity via scripting. Why would you want to do this? It's because Well I'm not. ruthenpress.info for support iles and downloads related to your book. Did you know that Packt ofers eBook versions of every book published, with PDF and ePub.
Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark informaion about all of the companies and products menioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this informaion. First published: September Producion Reference: ISBN www. While in the military, he was trained in electronics for electronic counter-measures. Upon discharge, he earned his Electrical Engineering degree, and later working for Joslyn Defense Systems in Vermont, designing and developing test equipment for the US Navy.
When personal computers came on the scene, he took an interest in building computers, but never quite delved deep into the programming side. It wasn't unil that programming peaked his interest. Unfortunately, damaging his let hand in a snowblower accident in ended his wriing for a couple years. He tried a few imes to learn Objecive-C, but work and family always seemed to sidetrack his eforts. It wasn't unil about when he discovered Unity and the need to write scripts, that he inally made some progress into the programming world.
It was a basic tutorial for beginners made available just before Unite Since then, Terry has been learning C for wriing scripts for Unity.
Packt Publishing noiced UnityScript for Noobs and asked if he would be interested in wriing a book about learning UnityScript. He declined. He felt that C was a beter language, and his heart just wasn't into UnityScript any longer.
Two weeks later, Packt ofered him the opportunity to write a book about learning C for Unity. He jumped on it. I want to thank my daughter Emily Norton, the arist in the family, for helping me with the graphic's design. During his under- graduate studies, he started his career as an indie game programmer, but didn't gain success because of a lack of or say, no experience.
Ater this, he learnt that passion is not the only thing for geing success; experience maters a lot. Then he joined Isis Design Service as a game programmer, where he published a few iOS itles and one web-based game. He worked there for a year and a half. He hasn't reviewed a book before, but one of his aricles was published in Game Coder Magazine.
The aricle was on Unity3D. You can download the aricle from his personal website, http: I would like to thanks my parents who taught me the value of hard work and an educaion. I need to thanks my friends, paricularly Manjith and Vibhash, who always took the ime to listen, even when I was just complaining.
They always are my best supporters and advisors. Finally, I would like to thank Harshit who gives me this opportunity. Since Krisian joined the game industry back in , he has worked on a couple of released casual games. In addiion to this, he is also the chairman of an associaion called Young Game Developers, which aims to spread informaion about game development among children and teenagers. In the future, Krisian will use his "computer mind" to develop ariicial intelligence and dynamic diiculty adjustment systems for computer games.
When Krisian isn't developing games, teaching others to develop games, or playing games himself, he thinks about them a lot! You can upgrade to the eBook version at www. Get in touch with us at service packtpub. At www. TM http: PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's enire library of books.
Why Subscribe? Simply use your login credenials for immediate access. Discovering Your Hidden Scriping Skills 7 Prerequisite knowledge for using this book 8 Dealing with scriptphobia 8 Teaching behaviors to GameObjects 9 Choosing to use C instead of UnityScript 10 Reason 1 for choosing C — vast amount of documentaion on the Internet 10 Reason 2 for choosing C — lexibility to use Unity scripts and regular C code iles 10 Reason 3 for choosing C — coding rules are speciic 11 Maneuvering around Unity's documentaion 11 Time for acion — opening the Reference Manual documentaion for the transform Component 11 Time for acion — opening the scriping reference documentaion for the transform component 12 Are we really supposed to know all that stuf?
Introducing the Building Blocks for Unity Scripts 19 Using the term method instead of funcion 20 Understanding what a variable does in a script 20 www.
Geing into the Details of Variables 31 Wriing C statements properly 32 Understanding Component properies in Unity's Inspector 32 Variables become Component properies 33 Unity changes script and variable names slightly 33 Changing a property's value in the Inspector panel 33 Displaying public variables in the Inspector panel 34 Time for acion — making a variable private 34 Naming your variables properly 35 Begin variable names with lowercase 36 Using muli-word variable names 36 Declaring a variable and its type 37 The most common built-in variable types 38 Time for acion — assigning values while declaring the variable 38 Where you declare a variable is important 39 Variable scope — determining where a variable can be used 40 Summary 42 Chapter 4: Geing into the Details of Methods 43 Ending a method deiniion using curly braces 44 Using methods in a script 44 Naming methods properly 44 Begin method names with an uppercase leter 45 Using muli-word names for a method 45 Parentheses are part of the method name 45 [ ii ] www.
Using Dot Syntax for Object Communicaion 89 Using Dot Syntax is like addressing a leter 90 Simplifying the dots in Dot Syntax 90 Using access modiiers for variables and methods 91 Working with objects is a class act 91 Using Dot Syntax in a script 93 Accessing a Component's own variables and methods 93 Time for acion — accessing a variable in the current Component 94 Accessing another Component on the current GameObject 97 Time for acion — communicaing with another Component on the Main Camera 97 Accessing other GameObjects and their Components Time for acion — creaing two GameObjects and a new script Accessing GameObjects using drag-and-drop versus wriing code Time for acion — trying drag-and-drop to assign a GameObject Summary Chapter 7: Creaing the Gameplay is Just a Part of the Game Applying your new coding skills to a State Machine Understanding the concepts of a State Machine Beneits of by using a State Machine Following the State Machine logic low Delegaing game control to a State Switching to another State when called to do so Keeping track of the acive State Creaing Components objects and C objects Unity creates Components behind the scenes Instaniate a class to create an object Time for acion — creaing a script and a class Time for acion — instaniaing the BeginState class Specifying a ile's locaion with a namespace declaraion Locaing code iles with a using statement Introducing the C interface The State Machine and the interface guarantee Time for acion — implemening an interface Summary Chapter 8: Pop Quiz Answers Index [ vii ] www.
Unity used to be considered a 3D tool, but with the release of Unity 4. This will expand Unity's use even more. Developers love its object-oriented drag-and-drop user interface which makes creaing a game or interacive product so easy. Despite the visual ease of working in Unity, there is a need to understand some basic programming to be able to write scripts for GameObjects.
For game developers that have any programming knowledge, learning how to write scripts is quite easy. For the the arist coming to Unity, creaing the visual aspects of a game is a breeze, but wriing scripts may appear to be a giant roadblock. This book is for those with no concept of programming. I introduce the building blocks, that is, basic concepts of programming using everyday examples you are familiar with.
Also, my approach to teaching is not what you will ind in the typical programming book. In the end, you will learn the basics of C , but I will spoon-feed you the details as they are needed. I will take you through the steps needed to create a simple game, with the focus not being the game itself but on how the many separate secions of code come together to make a working game.
I will also introduce the concept of a State Machine to organize code into simple, game controlling blocks. At the end, you will be saying "Wow! I can't believe how easy that was! You'll see that wriing scripts is very similar to many of your daily rouines. We also have a irst look at Unity's scriping documentaion. Finally, we see how to create a C script ile in Unity.
This chapter introduces the concepts of a variable and a method. With these two building blocks, we look into the concept of a "class," a container of variables and methods used to create Unity Components. Finally, communicaion between GameObjects is discussed by introducing Dot Syntax. Chapter 3, Geing into the Details of Variables, explains using variables in detail.
We see how they're used for storing data, and how the magic works to turn variables into Component properies which appear in the Unity Inspector panel. Chapter 4, Geing into the Details of Methods, explains how methods perform the acions that take place on GameObjects.
We see how to create and use methods in detail. We also look into two of Unity's most oten used methods, the Start method and the Update method. Chapter 5, Making Decisions in Code, explains that during gameplay, decisions have to be made about many things, just like you do in your daily life.
We look at many of the ways choices are made and some of the common reasons for which decisions are required. Chapter 6, Using Dot Syntax for Object Communicaion, shows us what Dot Syntax actually is, a simple address format to retrieve informaion or send informaion to other Components. Chapter 7, Creaing the Gameplay is Just a Part of the Game, shows that developing the gameplay is fun, but there are other parts needed to make a fully funcional game.
We look into some of the possible parts needed and how to organize all the parts by introducing the use of a State Machine.
Chapter 8, Developing the State Machine, creates a simple State Machine to show how it works, and see the simplicity it brings for controlling a game. We show how to change Scenes for a muli-level game and how to deal with GameObjects when changing to another scene. Then we begin creaing a muli-level game using the state machine and three scenes. A Player GameObject is added and we learn how to control it. Chapter 10, Moving Around, Collisions, and Keeping Score, shows how to move the Player around using Unity's physics system, and have cameras follow the Player's movements.
We develop a GUI scoring system, start shooing projeciles at enemy objects, and see how to win or lose the game. Ulimately, we see how all the separate pieces of code come together and work together. Chapter 11, Summarizing Your New Coding Skills, reviews the main points you learned about programming with C and working with objects. I tell you about some of the C and Unity features you may want to learn now that you understand the basics of C.
I will highlight the beneits of incorporaing a state machine into your Unity projects. Finally, I present my favorite sources for further learning. These State Machine classes are the staring point for organizing and adding game code. Appendix B, Completed code iles for Chapters 9 and 10, shows all the class and script iles used for playing our completed game. What you need for this book You need the free version of Unity located at http: The MonoDevelop code editor is included in the Unity installaion.
Your computer will need to meet the minimum requirements for Unity as speciied at http: Graphics card with DirectX 9 level shader model 2. Any card made since should work. Who this book is for If you don't know anything about programming in general, wriing code, wriing scripts, or have no idea where to even begin, then this book is perfect for you. If you want to make games and need to learn how to write C scripts or code, then this book is ideal for you.
Conventions In this book, you will ind several headings appearing frequently. To give clear instrucions of how to complete a procedure or task, we use: Time for action — heading 1. Acion 1 2. Acion 2 3. Acion 3  www. What just happened? This heading explains the working of tasks or instrucions that you have just completed.
You will also ind some other learning aids in the book, including: Pop quiz — heading These are short muliple-choice quesions intended to help you test your own understanding. Have a go hero — heading These pracical challenges give you ideas for experimening with what you have learned. You will also ind a number of styles of text that disinguish between diferent kinds of informaion. Here are some examples of these styles, and an explanaion of their meaning. Code words in text, database table names, folder names, ilenames, ile extensions, pathnames, dummy URLs, user input, and Twiter handles are shown as follows: If you downloadd this book elsewhere, you can visit htp: New terms and important words are shown in bold.
Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: Warnings or important notes appear in a box like this. Tips and tricks appear like this. Reader feedback Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked.
Reader feedback is important for us to develop itles that you really get the most out of. To send us general feedback, simply send an e-mail to feedback packtpub.
If there is a topic that you have experise in and you are interested in either wriing or contribuing to a book, see our author guide on www. Customer support Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your download. Downloading the example code You can download the example code iles for all Packt books you have downloadd from your account at http: If you downloadd this book elsewhere, you can visit http: If you ind a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us.
By doing so, you can save other readers from frustraion and help us improve subsequent versions of this book. If you ind any errata, please report them by visiing http: Once your errata are veriied, your submission will be accepted and the errata will be uploaded on our website, or added to any list of exising errata, under the Errata secion of that itle.
Any exising errata can be viewed by selecing your itle from http: Piracy Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protecion of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the locaion address or website name immediately so that we can pursue a remedy. Please contact us at copyright packtpub.
We appreciate your help in protecing our authors, and our ability to bring you valuable content. Questions You can contact us at questions packtpub. The word geek is often used to describe a person that can write computer code. The perception is that learning to write code takes great technical skill that is just so hard to learn. This perception is totally unwarranted. You already have the skills needed but don't realize it. Together we will crush this false perception you may have of yourself by refocusing, one step at a time, the knowledge you already possess to write Unity scripts.
In this chapter we shall: This book is for those with absolutely no knowledge of programming. It is devoted to teaching the basics of C with Unity.
However, some knowledge of Unity's operaion is required. I will only be covering the parts of the Unity interface that are related to wriing C code. I am assuming that you know your way around Unity's interface, how to work with GameObjects in your Scene, and how to locate Components and view their Properies in the Inspector. Dealing with scriptphobia You've got Unity up and running, studied the interface, added some GameObjects to the Scene.
Now you're ready to have those GameObjects move around, listen, speak, pick up other objects, shoot the bad guys, or anything else you can dream of. So you click on Play, and nothing happens. Well darn it all anyway. You just learned a big lesson, all those fantasic, highly detailed GameObjects are dumber than a hammer.
They don't know anything, and they sure don't know how to do anything. So you proceed to read the Unity forums, study some scriping tutorials, maybe even copy and paste some scripts to get some acion going when you press Play. That's great, but then you realize you don't understand anything in the scripts you've copied. Sure, you probably recognize the words, but you fail to understand what those words do or mean in a script.
It feels like gibberish. You look at the code, your palms get sweaty, and you think to yourself, "Geez, I'll never be able to write scripts! Is that what you have? The fear that you cannot write down instrucions in a coherent manner? You may believe you have this alicion, but you don't. You only think you do. The basics of wriing code are quite simple. In fact, you do things every day that are just like the steps executed in a script. For example, do you know how to interact with other people?
How to operate a computer? Do you fret so much about making a baloney sandwich that you have to go to an online forum and ask how to do it? Of course you don't. In fact, you know these things as "every day rouines", or maybe as habits. Think for a moment, do you have to consciously think about these rouines you do every day? Probably not. Ater you do them over and over, they become automaic. Who created these steps you follow?
More than likely you did, which means you've been scriping your whole life. You just never had to write down the steps, for your daily rouines, on a piece of paper before doing them. You could write the steps down if you really wanted to, but it takes too much ime and there's no need. But you do, in fact, know how to. Well, guess what? To write scripts, you only have to make one small change, start wriing down the steps. Not for yourself but for the world you're creaing in Unity.
So you see, you are already familiar with the concept of dealing with scripts. Most beginners to Unity easily learn their way around the Unity interface, how to add assets, and work in the Scene and Hierarchy windows.
Their primary fear, and roadblock, is their false belief that scriping is too hard to learn. You now have this book. I am going to get really basic in the beginning chapters. Call them baby-steps if you want, but you will see that scriping for Unity is similar to doing things you already do everyday.
I'm sure you will have many "Ah-Ha" moments as you learn and overcome your unjusiied fears and beliefs. Teaching behaviors to GameObjects You have Unity because you want to make a game or something interacive. You've illed your game full of dumb GameObjects. What you have to do now is be their teacher. You have to teach them everything they need to know to live in this make-believe world. This the part where you have to write down the instrucions so that your GameObjects can be smarter.
Here's a quote from the Unity Manual: The behavior of GameObjects is controlled by the Components that are atached to them Unity allows you to create your own Components using scripts. Noice that word, behavior. It reminds me of a parent teaching a child proper behavior. This is exactly what we are going to do when we write scripts for our GameObjects, we're teaching them the behaviors we want them to have.
The best part is, Unity has provided a big list of all the behaviors we can give to our GameObjects. This list of behaviors is documented in the Scriping Reference. This means we can pick and chose, from this list of behaviors anything we want a GameObject to do. Unity has done all the hard work of programming all these behaviors for you.
All we need to do is use a litle code to ie into these behaviors. Did you catch that? Unity has already created the behaviors, all we have to do is supply a litle bit of C code to apply these behaviors to our GameObjects. Now really, how diicult can it be since Unity has already done most of the programming?
This maybe ater-the-fact informaion for you if you've already acquired this book and chosen to use C , but these are valuable points to know anyway: Reason 1 for choosing C — vast amount of documentation on the Internet Have a look at the following bullet list, it will help you understand the reason for choosing C: If you ever need to know anything about C , simply do a search on the Internet.
You'll already have the basics of C. It's just so much easier with C. Every UnityScript ile has to be atached to a GameObject to work and be accessible to other scripts. C overcomes this necessity. What does this means to you? Learning a subject is always easier when the rules are speciic, and not some fuzzy "you can if you want to" kind of logic. You have the potenial to write code that is not valid, but Unity won't catch the errors unil you press Play.
Maneuvering around Unity's documentation When we begin wriing scripts, we will be looking at Unity's documentaion quite oten, so it's beneicial to know how to access the informaion we need. For an overview of a topic we'll use the Reference Manual. For speciic coding details and examples we'll use the Scriping Reference. When you look at the code examples in the Scriping Reference, they probably won't make sense to you, which is expected at this point. In the beginning chapters, as I teach you the basics of programming, it will be necessary for me to use a few things in the Scriping Reference such as displaying some output to Unity's Console.
For now, just copy the code I use because you will be learning the detail of it later. Time for action — opening the Reference Manual documentation for the transform Component To get a feel for accessing Unity's documentaion from within Unity, we'll use the Main Camera to demonstrate.
Geing to the informaion is prety easy. Click on the iny book icon with the quesion mark. In the Hierarchy tab, select the Main Camera. Click on the book icon for the Transform. The web browser opened the Reference Manual showing informaion about Transform. Time for action — opening the scripting reference documentation for the transform component From the Reference Manual, we'll now open the Scriping Reference documentaion for the Transform Component. Click the link Switch to Scriping in the upper right-hand side of the browser window as shown in the following screenshot: The Transform page in the Scriping Reference opens in the web browser as shown in the following screenshot: Are we really supposed to know all that stuff?
Actually, no. The whole reason for why the Scriping Reference exist is so we can look for informaion as we need it. Which will actually happen us to remember the code we do over and over, just like our other daily rouines and habits. What is all that information?
The previous screenshot shows a descripion and some sample code which probably doesn't mean much right now. Fear not! You'll eventually be able to look at that and say, "Hey, I know what that means!
There are several ways to create a script ile using Unity: Time for action — create a C script ile As our Unity project progresses, we will have several folders to organize and store all of our C iles. Create a new Unity project and name it as State Machine. Right-click on in the Project tab and create a folder named Code. Right-click on the Code folder and a create a folder named Scripts.
In the Scripts folder, create a C Script. We created one of the Code subfolders, named Scripts, that we will be using to organize our C iles. This folder will contain all of our Unity script iles. Later we will create other C ile folders. We also used Unity to create a C script ile named LearningScript. Even though Unity can create a basic starter C script for us, we sill have to edit the script using the MonoDevelop code editor that's included with Unity. This means that if you add, delete, or change a script ile in one applicaion, the other applicaion will see the changes automaically.
The simplest way to do this is just double-click on LearningScript in the Scripts folder. In Unity's Project tab, double-click on LearningScript: MonoDevelop started with LearningScript open, ready to edit.
This is a requirement. You probably don't know what a class is yet, that's ok. Just remember that the ile name and the class name must be the same.
When you create a C script ile in Unity, the ilename, in the Project tab, is in Edit mode, ready to be renamed. Please rename it right then and there. If you rename the script later, the ilename and the class name won't match. The ilename would change, but line 4 would be this: MonoBehaviour This can easily be ixed in MonoDevelop by changing NewBehaviourScript on line 4 to the same name as the ilename, but it's much simpler to do the renaming in Unity immediately.
Fixing sync if it isn't working properly So what happens when Murphy's Law strikes and syncing just doesn't seem to be working correctly? Should the two apps somehow get out-of-sync as you switch back-and-forth between the them, for whatever reason, do this: MonoDevelop will re-sync with Unity. Pop quiz — dealing with scripts Q1. As a beginner, what's the biggest obstacle to be overcome to be able to write C code? The Scriping Reference supplies example code and a short descripion of what the code does.
What do you use to get full detailed descripions of Unity's Components and features? The Scriping Reference is a large document. How much it should you know before atemping to write any scripts?
When creaing a script ile in Unity, when is the best ime to name the script ile? You do have the ability to write down instrucions which is all a script is, a sequence of instrucions. We saw how simple it is to create a new script ile. You probably create iles on your computer all the ime.
We saw how to easily bring up Unity's documentaion. Finally we had a look at the MonoDevelop editor. None of this was complicated. In fact, you probably use apps all the ime that do similar things. Botom line, there's nothing to fear here. Alright, let's start of Chapter 2, Introducing the Building Blocks for Unity Scripts by having an introductory look at the building blocks of programming we'll be using: Don't let these terms scare you.
The concepts behind each one of these are similar to things you do oten, perhaps every day. These parts are variables and methods. Therefore, understanding these critical parts is a prerequisite for learning any of the other features of C.
Being as critical as they are, they are very simple concepts to understand. Using these variable and method foundation pieces, we'll be introduced to the C building blocks used to create Unity scripts. For those people who get sweaty palms just thinking of the word script, wipe your hands and relax. In this chapter, I'm going to use terms that are already familiar to you to introduce the building blocks of programming. The following are the concepts introduced in this chapter: The words funcion and method truly mean the same thing in Unity.
They do the same thing. It makes sense to learn the correct terminology for C. The authors of the Scriping Reference probably should have used the word method instead of funcion in all documentaion. From now on I'm going to use the words method or methods in this book. When I refer to the funcions shown in the Scriping Reference, I'm going to use the word method instead, just to be consistent throughout this book. Understanding what a variable does in a script What is a variable?
Technically, it's a iny secion of your computer's memory that will hold any informaion you put there. While a game runs, it keeps track of where the informaion is stored, the value kept there, and the type of the value. However, for this chapter, all you need to know is how a variable works in a script. It's very simple. Well, usually there's nothing but occasionally there is something in it.
Someimes there's money a paycheck , bills, a picture from aunt Mabel, a spider, and so on. The point is what's in a mailbox can vary. Therefore, let's call each mailbox a variable instead. Naming a variable Using the picture of the country mailboxes, if I asked you to see what is in the mailbox, the irst thing you'd ask is which one?
If I said in the Smith mailbox, or the brown mailbox, or the round mailbox, you'd know exactly which mailbox to open to retrieve what is inside. Similarly, in scripts, you have to name your variables with a unique name. Then I can ask you what's in the variable named myNumber, or whatever cool name you might use. A variable name is just a substitute for a value As you write a script and make a variable, you are simply creaing a placeholder or a subsitute for the actual informaion you want to use.
Look at the following simple math equaion: Now try the following equaion: There is no answer to this yet. You can't add a number and a word. Going back to the mailbox analogy, write the number 9 on a piece of paper. Put it in the mailbox named myNumber. Now you can solve the equaion. What's the value in myNumber? The value is 9. So now the equaion looks normal: So anywhere you would like the number 9 to appear in your script, just write myNumber, and the number 9 will be subsituted.
Although this example might seem silly at irst, variables can store all kinds of data that is much more complex than a simple number. This is just a simple example to show you how a variable works. Don't be concerned about the details of how to write this, just make sure your script is the same as the script shown in the next screenshot. In the Unity Project panel, double-click on LearningScript. In MonoDevelop, write the lines 6, 11, and 13 from the next screenshot. Save the ile. To make this script work, it has to be atached to a GameObject.
Machine Learning. Mobile Application Development. Penetration Testing. Raspberry Pi. Virtual and Augmented Reality. NET and C. Cyber Security. Full Stack. Game Dev. Git and Github. Technology news, analysis, and tutorials from Packt. Stay up to date with what's important in software engineering today. Become a contributor. Go to Subscription. You don't have anything in your cart right now.
Leverage the amazing power of Unity with this FREE page guide to creating your own first full game! Learn the core concepts every Unity developer needs to know no matter the genre and build the foundation of your career as a game dev. Sign up to our emails for regular updates, bespoke offers, exclusive discounts and great free content.
Each lesson is well thought out, challenging, but not too difficult. The visuals are really great as well. We are super excited to incorporate it into our regular youth training program! Learning Unity and C has become more exciting and productive.
The pictures and instructions in this tutorial are extremely helpful and clear compared to other tutorials and textbooks. The opportunity to build a visually appealing role playing game with code that you write is a great experience. I would recommend this to anyone who wants to learn about coding and wants t see immediate visual results through game building. I am one of the earliest founders of the home computer gaming industry.