Unity Game Development Scripting
By Kyle D'Aoust
()
About this ebook
The intuitive and powerful Unity game engine is one of the most widely used and best loved packages for game development. Unity scripting is an essential but challenging skill to master in order to create custom game elements. Learning modular scripting allows you to rewrite as little code as possible as you deploy your scripts to multiple projects and work easier, quicker, and more efficiently than before.
In each chapter of this book, you'll learn how to script new game elements. Beginning with making custom controls for the keyboard and mouse, as well as the Xbox 360 Controller, you'll then get to grips with more complex systems such as inventory, data saving, and artificial intelligence. As you create these elements, you'll also learn how to make your scripts simpler and easy to use. This will allow drag-and-drop deployment, which is to be used by designers and nonprogrammers. Finally, you'll combine all of your newfound skills to create your own complete game project.
Related to Unity Game Development Scripting
Related ebooks
Extending Unity with Editor Scripting Rating: 0 out of 5 stars0 ratingsMastering Unity Scripting Rating: 0 out of 5 stars0 ratingsMastering Unity 2D Game Development - Second Edition Rating: 0 out of 5 stars0 ratingsUnity Game Development Blueprints Rating: 0 out of 5 stars0 ratingsUnity Game Development Essentials Rating: 5 out of 5 stars5/5Unity Multiplayer Games Rating: 5 out of 5 stars5/5Unreal Engine Game Development Cookbook Rating: 0 out of 5 stars0 ratingsMastering Unity 2D Game Development Rating: 5 out of 5 stars5/5Unreal Engine 4 Game Development Essentials Rating: 4 out of 5 stars4/5Blueprints Visual Scripting for Unreal Engine Rating: 0 out of 5 stars0 ratingsSFML Game Development Rating: 0 out of 5 stars0 ratingsGetting Started with Unity 5.x 2D Game Development Rating: 0 out of 5 stars0 ratingsBlueprints Visual Scripting for Unreal Engine - Second Edition: The faster way to build games using UE4 Blueprints, 2nd Edition Rating: 0 out of 5 stars0 ratingsLearning C++ by Creating Games with UE4 Rating: 3 out of 5 stars3/5Getting Started with Unity 5 Rating: 5 out of 5 stars5/5Building an RPG with Unreal Rating: 0 out of 5 stars0 ratingsUnity AI Programming Essentials Rating: 0 out of 5 stars0 ratingsUnreal Engine 4 AI Programming Essentials Rating: 0 out of 5 stars0 ratingsGameMaker Cookbook Rating: 0 out of 5 stars0 ratingsCreating ELearning Games with Unity Rating: 0 out of 5 stars0 ratingsSFML Blueprints Rating: 0 out of 5 stars0 ratingsUnity from Zero to Proficiency (Proficient): Unity from Zero to Proficiency, #5 Rating: 5 out of 5 stars5/5OpenGL Game Development By Example Rating: 0 out of 5 stars0 ratingsLearning C# by Developing Games with Unity 5.x - Second Edition Rating: 5 out of 5 stars5/5HTML5 Game Development with GameMaker Rating: 0 out of 5 stars0 ratingsUnity from Zero to Proficiency (Beginner): Unity from Zero to Proficiency, #2 Rating: 5 out of 5 stars5/5Mastering Unreal Engine 4.X Rating: 0 out of 5 stars0 ratings3D Game Design with Unreal Engine 4 and Blender Rating: 0 out of 5 stars0 ratingsMobile Game Design Essentials Rating: 0 out of 5 stars0 ratingsMastering Unity 5.x Rating: 0 out of 5 stars0 ratings
Programming For You
Game Development with Unreal Engine 5: Learn the Basics of Game Development in Unreal Engine 5 (English Edition) Rating: 0 out of 5 stars0 ratingsPython: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Modern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsSQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5The Unofficial Guide to Open Broadcaster Software: OBS: The World's Most Popular Free Live-Streaming Application Rating: 0 out of 5 stars0 ratingsSQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 0 out of 5 stars0 ratingsExcel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Web Designer's Idea Book, Volume 4: Inspiration from the Best Web Design Trends, Themes and Styles Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Beginning Programming with Python For Dummies Rating: 3 out of 5 stars3/5Learn JavaScript in 24 Hours Rating: 3 out of 5 stars3/5Problem Solving in C and Python: Programming Exercises and Solutions, Part 1 Rating: 5 out of 5 stars5/5
Reviews for Unity Game Development Scripting
0 ratings0 reviews
Book preview
Unity Game Development Scripting - Kyle D'Aoust
Table of Contents
Unity Game Development Scripting
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Interactive Input
Picking the controls
Mapping the needed controls
Checking the input manager
Checking the Xbox 360 Controller inputs
Adding additional controller inputs
Adding a start button and trigger inputs
Adding directional pad inputs
Adding PC control inputs
Housing our control script
Creating and naming the script
Formatting the script
Creating the device detector
Adding the variables needed
Creating the detection function
Creating the identifier function
Let's get set and show them
Adding variables for each control
Adding a function to display the variables
Let's switch!
Creating control profiles
Adding a profile switching function
Adding the GUI interaction function
Customization is key
Swapping control schemes
Adding a control switch button to the GUI
Cycling control inputs
Adding the controls pop up to the GUI
Resetting the controls
Adding the Reset function
Adding the Reset input
Playtesting
Summary
2. GUI Time
A traditional 2D UI
Setting up our scene
Housing our 2D UI
Creating GUI buttons
Creating a health bar
Level counter
Creating an experience counter
Housing our 3D UI
Creating a 3D health bar
Creating 3D damage reports
The new Update function
Completing the damage reports
Creating 3D name tags
Summary
3. Expandable Item Classes
The self item class
Adding our variables
Buff or debuff stats
The health changer
The armor changer
The item activator
The melee item class
Adding our variables
Buff or debuff stats
The health changer
Let's interact with the environment
Detecting triggers
The projectile item class
Adding our variables
Buff or debuff stats
The health changer
Adding movement
Detecting triggers
Playtesting
Summary
4. Inventory
Features of an inventory
Limits of the inventory
Accessing the inventory
Organizing an inventory
Item count modifications
Item bartering
Dropping and picking up items
Destroying and using items
Displaying the inventory
Creating the inventory script
Creating and naming the script
Adding the necessary variables
Initializing our inventory
Creating the initializer
Adding items
Let's figure this out
Creating the adding function
Removing items
Let's figure this out
Creating the removing function
Setting the quick-select items
Setting the quick-select items quickly
Let's display the inventory
Using our custom inputs
Displaying the GUI
Running the GUI
Playtesting
Creating a test scene
Let's add an item
Let's remove some items
Other things to try out
Summary
5. Enemy and Friendly AIs
AI techniques
Finite state machines
The behavior tree form of the AI system
Combining the techniques
Let's start scripting!
Internal and external actions
External actions
Internal actions
Scripting the actions
Pathfinding
Creating paths using the waypoint system
Unity's NavMesh system
Setting up the environment
Creating the NavMesh
Adding our variables
Scripting the navigation functions
Character animations
Importing the model mesh
Scripting the animations
Putting it all together
Final coding touches
Filling out the inspector
Playtesting
Summary
6. Keeping Score
Prototype stats
Assigning the stats to the player
The stat tracker
Setting the stats
Resetting the stats
Resetting all of our prefs
Saving all of our prefs
Setting a specific pref
Resetting a specific pref
Showing our stats on the screen
The achievement system
Prototyping the achievements
Adding the required achievement variables
Resetting the achievements
Achievement trackers
Tracking the kills
Tracking the gold total
Tracking the gold spent
Tracking the player's level
Tracking the rounds won
Tracking the time played
Let's check the achievements
Checking a specific achievement
Checking all of the achievements
Displaying the achievements on screen
Adding the GUI functions
Playtesting
Summary
7. Creating Save and Load Systems
Saving data with flat files
Adding the required variables
Time to save our file
Deleting our flat files
Loading our flat files
Time to load our file
The XML save system
Creating our XML files
Saving data with XML
Adding the required variables
Saving the player data
Saving the enemy data
Loading data with XML
Loading the player data
Loading the enemy data
Creating the SaveHandler script
The checkpoint system
The save anywhere-anytime system
Playtesting
Summary
8. Aural Integration
Background music
Creating a random system
Adding a playlist system
Implementing the audio systems
Atmospheric sounds
Creating the script and variables
Initializing the variables
Playing the atmospheric sounds
Sound effects
Creating the script and variables
Playtesting
Summary
9. Game Settings
Figuring out what to optimize
Making video configurations
Setting the values
Toggling the shadows
Setting the field of view
Setting the resolution
Toggling the anti-aliasing property
Setting vsync
Changing the quality settings
Loading the settings
Making audio configurations
Setting the values
Configuring the volumes
Setting the speaker mode
Creating the settings menu
Preparing the code
Creating the GUI
Saving all the values
Loading all the values
Playtesting
Summary
10. Putting It All Together
Creating levels
The main menu
The playable level
Creating player interactions
Shooting and pausing
Collecting potions
Adding all the sounds
Playing the background music
Adding the atmospheric sounds
Implementing the GUI
Adding the script
Tracking stats
Adding the script
Saving and loading
Adding the script
Final preparations
Adding win conditions
Affecting the AI
Finalizing the items
Creating more levels
Playtesting
Summary
Index
Unity Game Development Scripting
Unity Game Development Scripting
Copyright © 2014 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. 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 information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: December 2014
Production reference: 1151214
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78355-363-1
www.packtpub.com
Credits
Author
Kyle D'Aoust
Reviewers
Marcieb Balisacan
Paulo Barbeiro
Volodymyr Gerasimov
Dan Lingman
Conor O'Kane
Francesco Sapio
Commissioning Editor
Akram Hussain
Acquisition Editor
Sam Wood
Content Development Editor
Parita Khedekar
Technical Editor
Tanvi Bhatt
Copy Editors
Pranjali Chury
Adithi Shetty
Project Coordinator
Rashi Khivansara
Proofreaders
Simran Bhogal
Maria Gould
Ameesha Green
Paul Hindle
Indexer
Priya Sane
Production Coordinator
Shantanu N. Zagade
Cover Work
Shantanu N. Zagade
About the Author
Kyle D'Aoust has been programming for about 10 years. In 2004, at the age of 14, he taught himself the C++ language. By the end of high school, he had learned Visual Basic and JavaScript as well. In college, he majored in game production and specialized in the Unity engine using C#.
After graduating from college, Kyle started his career with gamifying software. He is currently working as a Serious Games Developer at Quicken Loans, creating games used as training material.
I would like to thank my parents for supporting me in my work.
About the Reviewers
Marcieb Balisacan is an independent game developer, a designer, and a producer working in the Philippines. He has a background in computer science and multimedia, and he has released several games for mobile devices and social networks on the Web since 2006. His passion for game development is equaled only by his passion for music and storytelling, all of which he uses to share his love for the art of creation. He has recently cofounded a game development studio start-up, Full Mana Studios (www.fullmana.com), and is the Lead Game Engineer in Synergy88 Studios, where he is leading the design and development of computer games.
I would like to acknowledge my newborn son, Aedan Chord, who kept me awake during the review of this book and inspired me to move forward.
Paulo Barbeiro has been involved in digital world development since 1999 as a web designer. During the last 15 years, he has worked with frontend and backend web development, mobile apps, games, and electronic arts, and has taught creative code principles and techniques.
He graduated as a graphic designer, but digital environment development was always a passion, so the natural move was in the direction of computer science, specializing in game development and computer graphics. He believes that there is no border between artistic creation and logical thinking for software development—both elements must work together.
Being a Unity3D user since version 1, Paulo was thrilled to contribute to this book as a technical reviewer. He has also contributed to books about Panda3D by Packt Publishing.
Currently, Paulo resides in São Paulo, Brazil, working as a lead developer for the TicTaskDo mobile app and in SESC SP, organizing events and seminars about digital art, code, and interactive environments.
Volodymyr Gerasimov is a game developer living in Vinnitsya, Ukraine. For the last 5 years, he has studied game design and scripting and applied this to his work as a level designer, producer, and game developer.
Volodymyr graduated from The Art Institute of Vancouver with a diploma in Game Art & Design, and he worked for companies such as Holymountain Games, Best Way, and Gameloft. Currently, he works as an independent game developer on a title for mobile platforms.
He enjoys learning new skills and sharing them with his friends, peers, and the rest of the world by teaching game design and co-authoring books such as Unity 3.x Scripting, Packt Publishing.
I would like to thank my mentors and peers for keeping up with my overachieving attitude and giving me the energy to stay hungry and foolish in my pursuit of success.
Dan Lingman is currently a Professor of Game Development at Algonquin College in Ottawa, Canada. He became involved in game development in 1981 when he worked on Commodore PET. Building software, especially games, has been his passion for over 30 years. He's worked on all types of software on various platforms for far too many companies to list.
Most recently, he's contributed code to the award-nominated games, Schrödinger's Cat and Raiders of the Lost Quark. Right now, Dan's focused on creating new methods for procedural dungeon generation and adaptive AIs in Unity 5.0.
Conor O'Kane is a game developer and teacher from Dublin. He is the director of Io Normal, a game development studio based in Melbourne. He lectures at RMIT University in courses covering game design, character modeling and rigging, rapid prototyping, and mobile game development.
Conor lives with his wife and two children in Melbourne. When he is not busy creating video games, he enjoys playing the Irish flute.
Francesco Sapio is an Italian student of Computer Science and Control Engineering with an excellent academic record. He is close to graduating. In the near future, he'll start pursuing a Master of Science degree in Engineering in Artificial Intelligence and Robotics, following his passion for computer science that he has been cultivating since he was 3 years old—when he held his first Mac in his hands, an experience that totally changed his life.
In recent times, he has developed a hotel management system and built websites for hotels with booking engines integrated with the major OTAs portals. Besides this, he is a Unity3D expert and a skilled game designer, as well as an experienced user of the major graphic programs. For several years, he worked as an actor and as a dancer—he was a guest of honor at the Brancaccio theatre in Rome.
He is also a musician and composer, and mostly composes soundtracks for short films and video games. In the recent past, he has helped a lot of young kids to start playing piano. In addition, he is a very active person. He is an animator and gives private lessons in mathematics and music for high school and university students.
Furthermore, he loves maths, philosophy, logic, and puzzle solving, but most of all, creating video games. Owing to his passion for game designing and programming, his dream—with a bit of pride—is to become a famous and successful game designer.
I'm deeply grateful to my parents for their infinite patience and for raising and supporting me. I would like to specially thank my father; without him, I wouldn't be here today. Moreover, I'm thankful to the rest of my family and to my friends, in particular my grandparents, since they always encouraged me to do better in my life with the Latin expressions Ad Maiora
and Per aspera ad astra
.
Besides this, I would like to thank the team at Packt Publishing, especially my old project coordinator for introducing me to this world and my current project coordinator for her kindness.
Finally, huge thanks to my fiancée; I'm grateful to have your support with me in whatever I do. Love you.
www.PacktPub.com
Support files, eBooks, discount offers, and more
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access,