Unity 3D Game Development by Example Beginner's Guide - Ryan Henson Creighton - E-Book

Unity 3D Game Development by Example Beginner's Guide E-Book

Ryan Henson Creighton

0,0
34,79 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

Beginner game developers are wonderfully optimistic, passionate, and ambitious. But that ambition is often dangerous! Too often, budding indie developers and hobbyists bite off more than they can chew. Some of the most popular games in recent memory – Doodle Jump, Paper Toss, and Canabalt, to name a few – have been fun, simple games that have delighted players and delivered big profits to their creators. This is the perfect climate for new game developers to succeed by creating simple games with Unity 3D, starting today.This book starts you off on the right foot, emphasizing small, simple game ideas and playable projects that you can actually finish. The complexity of the games increases gradually as we progress through the chapters. The chosen examples help you learn a wide variety of game development techniques. With this understanding of Unity 3D and bite-sized bits of programming, you can make your own mark on the game industry by finishing fun, simple games.This book shows you how to build crucial game elements that you can reuse and re-skin in many different games, using the phenomenal (and free!) Unity 3D game engine. It initiates you into indie game culture by teaching you how to make your own small, simple games using Unity3D and some gentle, easy-to-understand code. It will help you turn a rudimentary keep-up game into a madcap race through hospital hallways to rush a still-beating heart to the transplant ward, program a complete 2D game using Unity's User Interface controls, put a dramatic love story spin on a simple catch game, and turn that around into a classic space shooter with spectacular explosions and "pew" sounds! By the time you're finished, you'll have learned to develop a number of important pieces to create your own games that focus in on that small, singular piece of joy that makes games fun.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Seitenzahl: 437

Veröffentlichungsjahr: 2010

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Unity 3D Game Development by Example
Credits
About the Author
About the Reviewers
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Time for action - heading
What just happened?
Have a go hero - heading
Reader feedback
Customer support
Errata
Piracy
Questions
1. That's One Fancy Hammer!
Introducing Unity 3D
Unity takes over the world
Browser-based 3D? Welcome to the future
Time for action - install the Unity Web Player
Welcome to Unity 3D!
What can I build with Unity?
FusionFall
Completely hammered
Should we try to build FusionFall?
Another option
Off-Road Velociraptor Safari
Fewer features, more promise
Maybe we should build Off-Road Velociraptor Safari?
I bent my Wooglie
Big Fun Racing
Diceworks
Walk before you can run (or double jump)
There's no such thing as "finished"
Stop! Hammer time
Explore Demo island
The wonders of technology!
The Scene window
The Game window
The Hierarchy
The Project panel
The Inspector
Invade Island Demo as a paratrooper
Layers and layout dropdowns
Playback controls
Scene controls
Don't stop there live a little!
Summary
Big ambition, tiny games
2. Let's Start with the Sky
That little lightbulb
The siren song of 3D
Features versus content
A game with no features
Mechanic versus skin
Trapped in your own skin
That singular piece of joy
One percent inspiration
Motherload
Heads up!
Artillery Live!
Pong
The mechanic that launched a thousand games
Have a go hero - redesign your favorite games
Toy or story
Pop quiz finding that singular piece of joy
Redefining the sky
Summary
Let's begin
3. Game #1: Ticker Taker
Kick up a new Unity project
Where did everything go?
'Tis volley
Keep the dream alive
Slash and burn!
The many faces of keep-up
Creating the ball and the hitter
Time for action - create the ball
What just happened that's all there is to it?
A ball by any other name
Time for action - rename the ball
Origin story
XYZ/RGB
Time for action - move the ball into the "sky"
Time for action - shrink the ball
Time for action - save your Scene
Time for action - add the Paddle
What's a Mesh?
Poly wanna crack your game performance?
Keeping yourself in the dark
Time for action - add a light
Time for action - move and rotate the light
Have a go hero - let there be (additional) light
Extra credit
Are you a luminary?
Who turned out the lights?
Darkness reigns
Time for action - test your game
Let's get physical
Time for action - add physics to your game
Understanding the gravity of the situation
More bounce to the ounce
Time for action - make the ball bouncy
Have a go hero - DIY physic materials
Summary
Following the script
4. Code Comfort
What is code?
Time for action - write your first Unity Script
A leap of faith
Lick it and stick it
Disappear Me!
What just happened?
It's all Greek to me
You'll never go hungry again
With great sandwich comes great responsibility
Examining the code
Time for action - find the Mesh Renderer component
Time for action - make the ball reappear
Ding!
Time for action - journey to the Unity Script Reference
The Renderer class
Have a go hero - pulling the wings off flies
What's another word for "huh"?
It's been fun
Time for action - unstick the Script
Gone, but not forgotten
Why code?
Equip your baby bird
Time for action - create a new MouseFollow Script
What just happened?
A capital idea
Animating with code
Time for action - animate the Paddle
What just happened - what witchcraft is this?
Why didn't the paddle animate before?
Pick a word (almost) any word
Screen Coordinates versus World Coordinates
Move the Paddle
Worst. Game. Ever.
See the matrix
Time for action - animate the Paddle
A tiny bit o' math
Tracking the numbers
Futzing with the numbers
Time for action - log the new number
She's A-Work!
Somebody get me a bucket
Time for action - declare a variable to store the screen midpoint
What just happened we've Gone too Var
Using all three dees
Time for action - follow the Y position of the mouse
A keep-up game for robots
Once more into the breach
Time for action - revisit the Unity Language Reference
Our work here is done
Time for action - add the sample code to your Script
One final tweak
What's a quaternion?
Wait, what's a quaternion?
WHAT THE HECK IS A QUATERNION??
Educated guesses
More on Slerp
Right on target
Have a go hero - time to break stuff
Keep it up
Beyond the game mechanic
5. Game #2: Robot Repair
You'll totally flip
A blank slate
You're making a scene
Time for action - set up two Scenes
No right answer
Time for action - prepare the GUI
The beat of your own drum
Time for action - create and link a custom GUI skin
What just happened?
Time for action - create a button UI control
What just happened?
Have a go hero - no sense sitting around on your button
Want font?
Cover your assets
Time for action - nix the mipmapping
Front and center
Time for action - center the button
What just happened investigating the code
To the game!
Time for action - add both scenes to the build list
Set the stage for robots
Time for action - prepare the game Scene
The game plan
Have some class!
Time for action - store the essentials
Start me up
Going loopy
The anatomy of a loop
To nest is best
Seeing is believing
Time for action - create an area to store the grid
Have a go hero - don't take my word for it!
Build that grid
What just happened grokking the code
Now you're playing with power!
6. Game #2: Robot Repair Part 2
From zero to game in one chapter
Finding your center
Time for action - center the game grid vertically
What just happened?
Time for action - center the game grid horizontally
What just happened coding like a ninja
Down to the nitty griddy
Do the random card shuffle
Time for action - prepare to build the deck
Let's break some robots
Time for action - build the deck
What just happened dissecting the bits
Time for action - modify the img argument
What just happened?
What exactly is "this"?
Have a go hero - grokketh-thou Random.Range()?
Random reigns supreme
Second dragon down
Time to totally flip
Time for action - make the cards two-sided
Time for action - build the card-flipping function
Time for action - build the card-flipping function
What just happened dissecting the flip
Pumpkin eater
What just happened?
Stabby McDragonpoker rides again
Game and match
Time for action - ID the cards
What just happened?
Time for action - compare the IDs
What just happened?
On to the final boss
Endgame
Time for action - check for victory
What just happened?
Have a go hero - extra credit
Endgame
Bring. It. On.
7. Don't Be a Clock Blocker
Apply pressure
Time for action - prepare the clock script
Time for more action prepare the clock text
Still time for action change the clock text color
Time for action - rides again create a font texture and material
Time for action - what's with the tiny font?
What just happened - was that seriously magic?
Time for action - prepare the clock code
What just happened that's a whole lotta nothing
Time for action - create the countdown logic
Time for action - display the time on-screen
What just happened what about that terrifying code?
Picture it
Time for action - grab the picture clock graphics
What just happened you can do that?
Time for action - flex those GUI muscles
What just happened how does it work?
The incredible shrinking clock
Keep your fork there's pie!
Pop quiz how do we build it?
How they did it
Time for action - rig up the textures
Time for action - write the pie chart Script
What just happened?
Time for action - commence operation pie clock
What just happened explaining away the loose ends
Time for action - positioning and scaling the clock
Have a go hero - rock out with your clock out
Unfinished business
8. Ticker Taker
Welcome to Snoozeville
Model behavior
Time for action - explore the models
Time for action - hands up!
What just happened size matters
Time for action - change the FBX import scale settings
Time for action - make the Mesh Colliders convex
Time for action - make the Hands and Tray follow the Mouse
What just happened monkey see, monkey do
Time for action - get your heart on
Time for action - ditch the Ball and Paddle
What just happened bypass the aorta
Time for action - material witness
What just happened understanding Materials
Have a go hero - add Materials to the other models
This Just In: This Game Blows
Time for action - multiple erections
Time for action - create a font texture
Time for action - create the HeartBounce Script
What just happened charting a collision course
Time for action - tag the tray
Time for action - tweak the bounce
What just happened storing velocity
Time for action - keeping track of the bounces
Time for action - add the lose condition
What just happened understanding the code
Time for action - add the Play Again button
What just happened?
Ticker Taken
9. Game #3: The Break-Up
Time for action - bombs away!
Time for action - poke those particles
Time for action - create a Spark Material
Have a go hero - time to ignite your creative Spark
Time for action - prefabulous
What just happened what's a Prefab?
Time for action - lights, camera, apartment
Time for action - add the character
Time for action - register the animations
Time for action - script the character
What just happened stepping through the "step" code
Time for action - open the Pod Bay Door, Hal
Time for action - collision-enable the Character
Time for action - re-Prefab the Prefab
Time for action - apocalypse now?
Time for action - go boom
Time for action - the point of impact
Time for action - hook up the explosion
Summary
10. Game #3: The Break-Up Part 2
Time for action - amass some glass
Time for action - create a Particle System
What just happened getting smashed
Time for action - make it edgier!
What just happened I fall to pieces
Time for action - contain the explosion
What just happened duped?
Time for action - let's get lazy
What just happened FallingObject: The PuppetMaster
Very variable?
Terminal velocity is a myth bombs fall faster
What just happened when Game Objects collide?
Time for action - tag the objects
Time for action - write the collision detection code
Time for action - animation interrupts
What just happened the impenetrable stare
Time for action - add facial explosions
What just happened raindrops keep 'sploding on my head
Time for action - make some noise
Time for action - add sounds to the FallingObjectScript
What's the catch?
Have a go hero - sound off
Time for action - mix it up a bit
Have a go hero - filling in the gaps
Summary
11. Game #4: Shoot the Moon
Time for action - duplicate your game project
Time for action - space this sucker up a bit
Time for action - enter the hero
Time for action - it's a hit!
Time for action - bring on the bad guys
Time for action - do some housekeeping
Time for action - fixing the fall
Time for action - tweak the hero
What just happened hooray for lazy!
Time for action - give up the func
Time for action - itchy trigger finger
Time for action - futurize the bullet
Time for action - building Halo
Time for action - fire!
Time for action - Code Do-Si-Do
What just happened eat lead
Time for action - the maaagic of aaaarguments
Time for action - add the most important part of any spaceshooter
Last year's model
Have a go hero - filling in the empty space
Summary
More hospitality
12. Action!
Open heart surgery
Time for action - haul in the hallway
Time for action - meet me at camera two
Time for action - adjust the Main Camera
Time for action - deck the halls
Time for action - turn on the lights
Time for action - set up the camera rig
Time for action - animate the bouncer
What just happened red and raging
Time for action - I like to move it move it
Have a go hero - bounce your brains out
Time for action - animate the runner
What just happened holy hospital rampage, Batman!
Time for action - how to "handle" Nurse Slipperfoot
Time for action - you spin me right round
Have a go hero - give Robo-Nurse a soul
Have a go hero - use your new-found powers for good
Time for action - deploy your game
Time to grow
Beyond the book
A. References
Online resources
Offline resources
Free development tools
Graphics
Sound
Content sites
Game Portals
Index

Unity 3D Game Development by Example

Unity 3D Game Development by Example

Copyright © 2010 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: September 2010

Production Reference: 1170910

Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK.

ISBN 978-1-849690-54-6

www.packtpub.com

Cover Image by Ed Maclean (<[email protected]> )

Credits

Author

Ryan Henson Creighton

Reviewers

Aaron Cross

Clifford Peters

Chico Queiroz

Acquisition Editor

David Barnes

Development Editor

Dhiraj Chandiramani

Technical Editor

Namita Sahni

Copy Editor

Lakshmi Menon

Indexer

Monica Ajmera Mehta

Editorial Team Leaders

Aditya Belpathak

Project Team Leader

Lata Basantani

Project Coordinator

Srimoyee Ghoshal

Proofreaders

Lynda Sliwoski

Chris Smith

Jonathan Todd

Production Coordinator

Arvindkumar Gupta

Cover Work

Arvindkumar Gupta

About the Author

Ryan Henson Creighton is a veteran game developer, and the founder of Untold Entertainment Inc. (http://www.untoldentertainment.com/blog) where he creates games and applications for kids, teens, tweens, and preschoolers. Prior to founding Untold, Ryan worked as the Senior Game Developer at Canadian media conglomerate Corus Entertainment, creating advergames and original properties for YTV and Treehouse TV using Flash. Ryan is hard at work developing a suite of original products with Untold Entertainment. He maintains one of the most active and enjoyable blogs in the industry.

When Ryan is not developing games, he's goofing off with his two little girls and his fun-loving wife in downtown Toronto.

Big thanks to Cheryl, Cassandra, and Isabel for their love, their support, and their cinnamon rolls. Thanks to Jean-Guy Niquet for introducing me to Unity; to Jim "McMajorSupporter" McGinley for help with the book outline and ongoing mentorship; to the technical reviewers and Packt staff for letting me leave a few jokes in the book; and to David Barnes, for having such a great sense of humor in the first place. Special thanks to Michael Garforth and friends from the #Unity3D IRC channel on Freenode. I also want to thank Mom, God, and all the usual suspects.

About the Reviewers

Aaron Cross is a freelance video game developer based in Wellington, New Zealand. A successful musician and music producer, film-maker, and 3D artist, he switched his focus to game development in 2006. He has since produced four video game titles, and has provided art and programming solutions to Unity developers across the globe, from Canada and the U.K. to as far south as the Australian heritage sites on the continent of Antarctica.

As well as commercial games, he has developed simulations for medical training, architectural visualization, science and research, conservation, and visual reconstructions for evidence used in court cases, using the Unity game engine.

He can be contacted through his website:http://deepwater3d.com.

Clifford Peters is an average Unity user who has enjoyed using Unity over the past few years. He plans to one day become a professional Unity user and to be able to use Unity in his career. To help realize this goal, Clifford is going to college to increase his knowledge in the fields of Math and Computer Science.

Clifford has also helped to review the Unity book: Unity Game Development Essentials, Packt Publishing.

Chico Queiroz is a multimedia designer living in Rio de Janeiro, Brazil. Having completed an MA degree in Digital Games Design from the University for the Creative Arts at Farnham, Chico has worked in areas such as webgames and advergames design and development. He has also published articles in academic game conferences and websites such as gameology.org, gamasutra.com, and gamecareerguide.com.

Chico currently works as a Digital Designer at the Computer Graphics Technology Group (TeCGraf), a laboratory within the Pontifical Catholic University of Rio de Janeiro where he also works as a lecturer, teaching subjects such as 3D modeling and image editing to design students.

Thank you Ana and Alice for all the love and support.

Preface

"Game Developer" has rapidly replaced "firetruck" as the number one thing that kids want to be when they grow up. Gone are the days when aspiring developers needed a university education, a stack of punch cards, and a room-sized computer to program a simple game. With digital distribution and the availability of inexpensive (or free) games development tools like Unity 3D, the democratization of game development is well underway.

But just as becoming a firetruck is fraught with perils, so too is game development. Too often, aspiring developers underestimate the sheer enormity of the multidisciplinary task ahead of them. They bite off far more than they can chew, and eventually drift away from their game development dreams to become lawyers or dental hygienists. It's tragic. This book bridges the gap between "I wanna make games!" and "I just made a bunch of games!" by focusing on small, simple projects that you can complete before you reach the bottom of a bag of corn chips.

What this book covers

Chapter 1, That's One Fancy Hammer!, introduces you to Unity 3D an amazing game engine that enables you to create games and deploy them to a number of different devices, including (at the time of writing) the Web, PCs, iOS platforms, and WiiWare, with modules for Android and Xbox Live Arcade deployment in the works. You'll play a number of browser-based Unity 3D games to get a sense of what the engine can handle, from a massively-multiplayer online game all the way down to a simple kart racer. You'll download and install your own copy of Unity 3D, and mess around with the beautiful Island Demo that ships with the product.

Chapter 2, Let's Start with the Sky, explores the difference between a game's skin and its mechanic. Using examples from video game history, including Worms, Mario Tennis, and Scorched Earth, we'll uncover the small, singular piece of joy upon which more complicated and impressive games are based. By concentrating on the building blocks of video games, we'll learn how to distil an unwieldy behemoth of a game concept down to a manageable starter project.

Chapter 3, Game #1: Ticker Taker, puts you in the pilot seat of your first Unity 3D game project. We'll explore the Unity environment and learn how to create and place primitives, add Components like physic materials and rigidbodies, and make a ball bounce on a paddle using Unity's built-in physics engine without ever breaking a sweat.

Chapter 4, Code Comfort, continues the keep-up game project by gently introducing scripting. Just by writing a few simple, thoroughly-explained lines of code, you can make the paddle follow the mouse around the screen to add some interactivity to the game. This chapter includes a crash course in game scripting that will renew your excitement for programming where high school computer classes may have failed you.

Chapter 5, Game#2: Robot Repair, introduces an often-overlooked aspect of game development: "front-of-house" User Interface design the buttons, logos, screens, dials, bars, and sliders that sit in front of your game is a complete discipline unto itself. Unity 3D includes a very meaty Graphical User Interface system that allows you to create controls and fiddly bits to usher your players through your game. We'll explore this system, and start building a complete two-dimensional game with it! By the end of this chapter, you'll be halfway to completing Robot Repair, a colorful matching game with a twist.

Chapter 6, Game#2: Robot Repair Part 2, picks up where the last chapter left off. We'll add interactivity to our GUI-based game, and add important tools to our game development tool belt, including drawing random numbers and limiting player control. When you're finished with this chapter, you'll have a completely playable game using only the Unity GUI system, and you'll have enough initial knowledge to explore the system yourself to create new control schemes for your games.

Chapter 7, Don't be a Clock Blocker, is a standalone chapter that shows you how to build three different game clocks: a number-based clock, a depleting bar clock, and a cool pie wedge clock, all of which use the same underlying code. You can then add one of these clocks to any of the game projects in this book, or reuse the code in a game of your own.

Chapter 8, Ticker Taker, revisits the keep-up game from earlier chapters and replaces the simple primitives with 3D models. You'll learn how to create materials and apply them to models that you import from external art packages. You'll also learn how to detect collisions between Game Objects, and how to print score results to the screen. By the end of this chapter, you'll be well on your way to building Ticker Taker a game where you bounce a still-beating human heart on a hospital dinner tray in a mad dash for the transplant ward!

Chapter 9, Game#3: The Break-Up is a wild ride through Unity's built-in particle system that enables you to create effects like smoke, fire, water, explosions, and magic. We'll learn how to add sparks and explosions to a 3D bomb model, and how to use scripting to play and stop animations on a 3D character. You'll need to know this stuff to complete The Break-Up a catch game that has you grabbing falling beer steins and dodging explosives tossed out the window by your jilted girlfriend.

Chapter 10, Game#3: The Break-Up Part 2, completes The Break-Up game from the previous chapter. You'll learn how to reuse scripts on multiple different Game Objects, and how to build Prefabs, which enable you to modify a whole army of objects with a single click. You'll also learn to add sound effects to your games for a much more engaging experience.

Chapter 11, Game #4: Shoot the Moon, fulfills the promise of Chapter 2 by taking you through a re-skin exercise on The Break-Up. By swapping out a few models, changing the background, and adding a shooting mechanic, you'll turn a game about catching beer steins on terra firma into an action-packed space shooter! In this chapter, you'll learn how to set up a two-camera composite shot, how to use code to animate Game Objects, and how to re-jig your code to save time and effort.

Chapter 12, Action!, takes you triumphantly back to Ticker Taker for the coup de grace: a bouncing camera rig built with Unity's built-in animation system that flies through a model of a hospital interior. By using the two-camera composite from The Break-Up, you'll create the illusion that the player is actually running through the hospital bouncing a heart on a tin tray. The chapter ends with a refresher on bundling your project and deploying it to the Web so that your millions of adoring fans can finally experience your masterpiece.

What you need for this book

You'll need to be in possession of a sturdy hat, a desk chair equipped with a seatbelt, and an array of delicious snack foods that won't get these pages all cheesy (if you're reading the e-book version, you're all set). Early chapters walk you through downloading and installing Unity 3D (http://unity3d.com/unity/download/). A list of resources and links to additional software can be found in the appendix.

Who this book is for

If you've ever wanted to develop games, but have never felt "smart" enough to deal with complex programming, this book is for you. It's also a great kickstart for developers coming from other tools like Flash, Unreal Engine, and Game Maker Pro.

Conventions

In this book, you will find several headings appearing frequently.

To give clear instructions of how to complete a procedure or task, we use:

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 titles that you really get the most out of.

To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com, or e-mail <[email protected]>.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book on, see our author guide on www.packtpub.com/authors.

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 purchase.

Tip

Downloading the example code for this book

You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find 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 frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the let us know link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Piracy

Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection 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 location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors, and our ability to bring you valuable content.

Questions

You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.

Chapter 1. That's One Fancy Hammer!

Technology is a tool. It helps us accomplish amazing things, hopefully more quickly and more easily and more amazingly than if we hadn't used the tool. Before we had newfangled steam-powered hammering machines, we had hammers. And before we had hammers, we had the painful process of smacking a nail into a board with our bare hands. Technology is all about making our lives better and easier. And less painful.

Introducing Unity 3D

Unity 3D is a new piece of technology that strives to make life better and easier for game developers. Unity is a game engine or a game authoring tool that enables creative folks like you to build video games.

By using Unity, you can build video games more quickly and easily than ever before. In the past, building games required an enormous stack of punch cards, a computer that filled a whole room, and a burnt sacrificial offering to an ancient god named Fortran. Today, instead of spanking nails into boards with your palm, you have Unity. Consider it your hammer a new piece of technology for your creative tool belt.

Unity takes over the world

Throughout this book, we'll be distilling our game development dreams down to small, bite-sized nuggets instead of launching into any sweepingly epic open-world games. The idea here is to focus on something you can actually finish instead of getting bogged down in an impossibly ambitious opus. This book will teach you to build four games, each of which focus on a small, simple gameplay mechanic. You'll learn how to build discrete pieces of functionality that you can apply to each project, filling the games out to make them complete experiences. When you're finished, you can publish these games on the Web, Mac, or PC.

The team behind Unity 3D is constantly working on packages and export options for other platforms. At the time of this writing, Unity could additionally create games that can be played on the iPhone, iPod, iPad, Android devices, Xbox Live Arcade, PS3, and Nintendo's WiiWare service. Each of these tools is an add-on functionality to the core Unity package, and comes at an additional cost. As we're focusing on what we can do without breaking the bank, we'll stick to the core Unity 3D program for the remainder of this book.

With the initial skills that you learn in this book, you'll be able to expand on your knowledge to start building more and more complex projects. The key is to start with something you can finish, and then for each new project that you build, to add small pieces of functionality that challenge you and expand your knowledge. Any successful plan for world domination begins by drawing a territorial border in your backyard; consider this book your backyard.

Browser-based 3D? Welcome to the future

Unity's primary and most astonishing selling point is that it can deliver a full 3D game experience right inside your web browser. It does this with the Unity Web Player a free plugin that embeds and runs Unity content on the Web.

Time for action - install the Unity Web Player

Before you dive into the world of Unity games, download the Unity Web Player. Much the same way the Flash player runs Flash-created content, the Unity Web Player is a plugin that runs Unity-created content in your web browser.

Go to http://unity3D.com. Click on the install now! button to install the Unity Web Player. Click on Download Now!. Follow all of the on-screen prompts until the Web Player has finished installing.

Welcome to Unity 3D!

Now that you've installed the Web Player, you can view the content created with the Unity 3D authoring tool in your browser.

What can I build with Unity?

In order to fully appreciate how fancy this new hammer is, let's take a look at some projects that other people have created with Unity. While these games may be completely out of our reach at the moment, let's find out how game developers have pushed this amazing tool to its very limits.

FusionFall

The first stop on our whirlwind Unity tour is FusionFall a Massively Multiplayer Online Role-Playing Game (MMORPG). You can find it at fusionfall.com. You may need to register to play, but it's definitely worth the extra effort!

FusionFall was commissioned by the Cartoon Network television franchise, and takes place in a re-imagined, anime-style world where popular Cartoon Network characters are all grown up. Darker, more sophisticated versions of the Powerpuff Girls, Dexter, Foster and his imaginary friends, and the kids from Codename: Kids Next Door run around battling a slimy green alien menace.

Completely hammered

FusionFall is a very big and very expensive high-profile game that helped draw a lot of attention to the then-unknown Unity game engine when the game was released. As a tech demo, it's one of the very best showcases of what your new technological hammer can really do! FusionFall has real-time multiplayer networking, chat, quests, combat, inventory, NPCs (non-player characters), basic AI (artificial intelligence), name generation, avatar creation, and costumes. And that's just a highlight of the game's feature set. This game packs a lot of depth.

Should we try to build FusionFall?

At this point, you might be thinking to yourself, "Heck YES! FusionFall is exactly the kind of game I want to create with Unity, and this book is going to show me how!"

Unfortunately, a step-by-step guide to creating a game the size and scope of FusionFall would likely require its own flatbed truck to transport, and you'd need a few friends to help you turn each enormous page. It would take you the rest of your life to read, and on your deathbed, you'd finally realize the grave error that you had made in ordering it online in the first place, despite having qualified for free shipping.

Here's why: check out the game credits link on the FusionFall website: http://www.fusionfall.com/game/credits.php.

This page lists all of the people involved in bringing the game to life. Cartoon Network enlisted the help of an experienced Korean MMO developer called Grigon Entertainment. There are over 80 names on that credits list! Clearly, only two courses of action are available to you:

Build a cloning machine and make 79 copies of yourself. Send each of those copies to school to study various disciplines, including marketing, server programming, and 3D animation. Then spend a year building the game with your clones. Keep track of who's who by using a sophisticated armband system.Give up now because you'll never make the game of your dreams.

Another option

Before you do something rash and abandon game development for farming, let's take another look at this. FusionFall is very impressive, and it might look a lot like the game that you've always dreamed of making. This book is not about crushing your dreams. It's about dialing down your expectations, putting those dreams in an airtight jar, and taking baby steps. Confucius said: "A journey of a thousand miles begins with a single step." I don't know much about the man's hobbies, but if he was into video games, he might have said something similar about them creating a game with a thousand awesome features begins by creating a single, less feature-rich game.

So, let's put the FusionFall dream in an airtight jar and come back to it when we're ready. We'll take a look at some smaller Unity 3D game examples and talk about what it took to build them.

Off-Road Velociraptor Safari

No tour of Unity 3D games would be complete without a trip to Blurst.com the game portal owned and operated by indie game developer Flashbang Studios. In addition to hosting games by other indie game developers, Flashbang has packed Blurst with its own slate of kooky content, including Off-Road Velociraptor Safari. (Note: Flashbang Studios is constantly toying around with ways to distribute and sell its games. At the time of this writing, Off-Road Velociraptor Safari could be played for free only as a Facebook game. If you don't have a Facebook account, try playing another one of the team's creations, like Minotaur China Shop or Time Donkey).

In Off-Road Velociraptor Safari, you play a dinosaur in a pith helmet and a monocle driving a jeep equipped with a deadly spiked ball on a chain (just like in the archaeology textbooks). Your goal is to spin around in your jeep doing tricks and murdering your fellow dinosaurs (obviously).

For many indie game developers and reviewers, Off-Road Velociraptor Safari was their first introduction to Unity. Some reviewers said that they were stunned that a fully 3D game could play in the browser. Other reviewers were a little bummed that the game was sluggish on slower computers. We'll talk about optimization a little later, but it's not too early to keep performance in mind as you start out.

Fewer features, more promise

If you play Off-Road Velociraptor Safari and some of the other games on the Blurst site, you'll get a better sense of what you can do with Unity without a team of experienced Korean MMO developers. The game has 3D models, physics (code that controls how things move around somewhat realistically), collisions (code that detects when things hit each other), music, and sound effects. Just like FusionFall, the game can be played in the browser with the Unity Web Player plugin. Flashbang Studios also sells downloadable versions of its games, demonstrating that Unity can produce standalone executable game files too.

Maybe we should build Off-Road Velociraptor Safari?

Right then! We can't create FusionFall just yet, but we can surely create a tiny game like Off-Road Velociraptor Safari, right? Well... no. Again, this book isn't about crushing your game development dreams. But the fact remains that Off-Road Velociraptor Safari took five supremely talented and experienced guys eight weeks to build on full-time hours, and they've been tweaking and improving it ever since. Even a game like this, which may seem quite small in comparison to full-blown MMO like FusionFall, is a daunting challenge for a solo developer. Put it in a jar up on the shelf, and let's take a look at something you'll have more success with.

I bent my Wooglie

Wooglie.com is a Unity game portal hosted by M2H Game Studio in the Netherlands. One glance at the front page will tell you that it's a far different portal than Blurst.com. Many of the Wooglie games are rough around the edges, and lack the sophistication and the slick professional sheen of the games on Blurst. But here is where we'll make our start with Unity. This is exactly where you need to begin as a new game developer, or as someone approaching a new piece of technology like Unity.

Play through a selection of games on Wooglie. I'll highlight a few of them for your interest:

Big Fun Racing

Big Fun Racing is a simple but effective game where you zip around collecting coins in a toy truck. It features a number of different levels and unlockable vehicles. The game designer sunk a few months into the game in his off-hours, with a little help from outsource artists to create the vehicle models.

Diceworks

Diceworks is a very simple, well-polished game designed for the iPhone in Unity 3D. We won't be covering any iPhone development, but it's good to know that your Unity content can be deployed to a number of other devices and platforms, including the Apple iPhone or iPod touch, and the Nintendo Wii. The iPhone and Wii versions of the software cost an additional fee, but you can deploy your games to the Web, to the Mac, and to the PC for free using the indie version of Unity.

Diceworks was created by one artist and one programmer working together as a team. It's rare to find a single person who possesses both programming and artistic talent simultaneously; scientists say that these disciplines are split between two different lobes in our brains, and we tend to favor one or the other. The artist-programmer pairing that produced Diceworks is a common setup in game development. What's your own brain telling you? Are you more comfy with visuals or logic? Art or programming? Once you discover the answer, it's not a bad plan to find someone to make up the other half of your brain so that your game handles both areas competently.

At any event, with Diceworks we're definitely getting closer to the scope and scale that you can manage on your own as you start out with Unity.

It's also interesting to note that Diceworks is a 2D game created in a 3D engine. The third "D" is largely missing, and all of the game elements appear to exist on a flat plane. Nixing that extra dimension when you're just starting out isn't a half bad idea. Adding depth to your game brings a whole new dimension of difficulty to your designs, and it will be easier to get up and running with Unity by focusing on the X and Y axes, and leaving the Z-axis in one of those dream jars. With a few sturdy working game examples under your belt, it won't be long before you can take that Z-jar down off the shelf and pop it open. The games that we'll be building in this book will stick to a two-dimensional plane, using three-dimensional models. Even so, certain games have taken this concept and ran with it: New Super Mario Bros. Wii locked its 3D characters to a 2D plane and wound up an extremely complex and satisfying platformer.

Walk before you can run (or double jump)

A common mistake that new game developers make is biting off more than they can chew. Even experienced game developers make this mistake when they get really excited about a project, or when they approach a new technology and expect to be immediately proficient at using it. The real danger here is that you'll sit down and try to create your dream let's say it's a sword and sorcery RPG epic that combines all the best parts of Diablo, ChuChu Rocket!, and Microsoft Excel. When you've sunk days and weeks and months into it and it still looks nothing like the game you envisioned, you give up. You figure that since you failed at creating your dream game, you were never really cut out to be a game developer to begin with.

You owe it to yourself to start small! Rome wasn't built in a day, and neither was your dream kart racing game starring famous figures from Roman history. By taking smaller steps, you can experience success with a number of smaller games. Then you can take what you learn and add to it, slowly building your expertise until you're in a position to take that dream game jar off the shelf.

For now, let's keep our dream shelf fully stocked, and turn our attention to something small and achievable. By the end of this book, you'll have a collection of working games that started out simply, and grew more and more complex as you got smarter. My hope is that once you finish the book, you'll be well-equipped to dream up new incremental features for your games, and to hunt down the resources you need to fill the gaps in your new-found knowledge.

In Chapter 2, we'll go into detail about where you should start when you're deciding what kind of game to create. We'll also see some real-world examples of games that began as simple, effective ideas and later grew into enormously complex and feature-rich titles. From small acorns, mighty multiplayer oak tree games grow.

There's no such thing as "finished"

We'll be learning a lot about iteration throughout this book. Some game developers who produce content for fixed media like game disks and cartridges are used to producing a gold master the final build of the game and calling it a day. One of the joys of deploying games to the Web is that they're never truly finished. You can continue tweaking your web games and modifying them until you end up with a far more fun and polished game than you started with.

If you follow Flashbang Studios on Twitter or if you read the studio's blog, you'll see that it's constantly modifying and improving its games, even years after they were "finished". At the time of this writing, Off-Road Velociraptor Safari was two years old, and the studio's Twitter stream revealed that it's still actively tweaking the game.

Likewise, we'll be creating some games that are really raw and unfinished at first. But as we learn more about how to program the crucial bits and pieces common to many games, we'll keep revisiting our rough, early games to add those pieces and improve them.

Stop! Hammer time

Now that you've seen some of what Unity can do, it's time to download the program and kick the tires! Unity indie version is available for the low price of free (at the time of this writing) from the Unity 3D website.

Go to http://unity3D.com. Click on the Download Now button. Download the latest version of the Unity 3D authoring tool for your platform Mac or PC. If you are given the option, make sure to download the sample project along with the program. Follow all the on-screen prompts until the Unity authoring tool has finished installing. Launch Unity!

Explore Demo island

When Unity first opens, you should see a splash screen referring you to different tutorial resources and language guides. How helpful! Now close it. (Don't worry, it'll be there next time, unless you uncheck the Show at Startup box).

Because you chose to download the sample project, it should automatically load the first time you run Unity. Navigate to Window | Layouts | 2 by 3 to see the different panels that we're about to tour.

To try out the demo, click on the Play button at the top-center of the screen.

You can walk around the Island Demo using the WASD keys on your keyboard. Jump by pressing the Space bar. When you're finished exploring, click on the Play button again to end the demo.

The wonders of technology!

Unity contains all of the tools that you need to create an island similar to the one you see in this demo. It has terrain tools that let you model your level right inside the software. It contains a ready-made First Person Controller Prefab object you can plunk into the world with automatic WASD keyboard controls that will allow you to explore the terrain. Unity automatically takes care of the rendering (drawing), collisions, physics, and sound effects. That's one fancy hammer!

Tip

Wide-open worlds with Will

If you'd like to learn how to sculpt your own terrain in Unity, and to add 3D models, sounds, and interactivity to create a simple but functional 3D open-world game, check out, "Unity Game Development Essentials", Will Goldstone, Packt Publishing.

Much of what you see in the Island Demo can be built directly in Unity using the engine's terrain sculpting tools. The demo contains special models, like the bridge, which were imported from 3D software packages, including 3D Studio Max, Maya, or Blender. Certain elements, like the birds, have scripts attached to them that teach them how to fly. Scripts are lists of instructions that tell the items in the game world how to behave. Throughout the book, we'll learn how to import 3D models and to write scripts to control them. We won't be exploring the terrain tools, but you'll be such a Unity adventurer by the end of the last chapter that you'll be able to tackle them with gusto.

Let's take a quick look around the Unity interface and note a few points of interest.

The Scene window

The Scene window is where you can position your Game Objects and move things around. This window has various controls to change its level of detail. Use these controls to toggle lighting on and off, and to display the window contents with textures, wireframes, or a combination of both. You can use the colorful gizmo in the top-right corner to constrain the window to the X, Y, and Z axes to view the top and sides of your scene. Click on the white box in the middle to return to perspective view. This is what the Scene window looks like when you start a new project or create a new Scene. You can think of scenes as levels or stages in your game.

The Game window

The Game window shows you what your players will see. When you click on the Play button to test your game (as you just did with the Island Demo), the results of your efforts play out in this window. Toggle the Maximize on Play button to test your game in full-screen mode.

The Hierarchy

The Hierarchy panel lists all of the Game Objects in your Scene. Game Objects cameras, lights, models, and prefabs are the things that make up your game. They can be "tangible" things like the birds and the bridge in the Island Demo. They can also include intangible things, which only you as the game developer get to see and play with, such as the cameras, the lights, and colliders, which are special invisible shapes that tell the game engine when two Game Objects are touching.

The Island Demo Hierarchy contains Game Objects for the birds, the sea foam, the terrain, and the sun, to name a few. It also lists something called the First Person Controller Prefab, which has one of those invisible Colliders with a camera stuck to it. That's how the player can see the island. The demo lists something called Performance an empty Game Object with a special script attached to it that helps the demo run more quickly depending on the player's computer specs. So, Game Objects can include touchy-feely "physical" objects like birds and bridges, as well as behind-the-scenes intangible things like lights, cameras, and actions (scripts).

Click on a Game Object in the Hierarchy panel, and then hover your mouse over the Scene window. Press the F key on your keyboard, and the Scene window will automatically pan and zoom directly to that object. Alternatively, you can go to Edit | Frame Selected