Discover millions of ebooks, audiobooks, and so much more with a free trial

From $11.99/month after trial. Cancel anytime.

Creating ELearning Games with Unity
Creating ELearning Games with Unity
Creating ELearning Games with Unity
Ebook457 pages3 hours

Creating ELearning Games with Unity

Rating: 0 out of 5 stars

()

Read preview

About this ebook

This book is an easytofollow guide that incrementally develops the game framework and missions, stepbystep, with each chapter. Extensive source code is provided and explained in detail to support and explain each of the concepts in the book.

This book is intended for novice game programmers with a little experience in Unity3D, who want to learn how to program eLearning games. Educators and trainers who want to use Unity in an eLearning setting will also benefit from the book. It would be helpful to have a basic understanding of the concepts such as Unity scripting and the Finite State Machine (FSM), but no prior experience in game development is required.
LanguageEnglish
Release dateMar 25, 2014
ISBN9781849693431
Creating ELearning Games with Unity

Related to Creating ELearning Games with Unity

Related ebooks

Computers For You

View More

Related articles

Reviews for Creating ELearning Games with Unity

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Creating ELearning Games with Unity - David Horachek

    Table of Contents

    Creating E-Learning Games with Unity

    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

    Downloading the color images of this book

    Errata

    Piracy

    Questions

    1. Introduction to E-Learning and the Three Cs of 3D Games

    Understanding e-learning

    Introducing our game – Geography Quest

    Comprehending the three Cs

    Creating our first scene

    Developing the character system

    Building character representation

    Developing the camera code

    Implementing GameCam.cs

    Developing the player controls code

    Implementing PlayerControls.cs

    Try it out!

    Summary

    2. Interactive Objects and MissionMgr

    Understanding the base scripts

    Building an interactive object

    Implementing the CustomGameObj script

    Implementing the InteractiveObj script

    Implementing the ObjectInteraction script

    Implementing the InventoryItem script

    Implementing the InventoryMgr script

    Implementing the DisplayInventory method

    Implementing the MissionMgr script

    Implementing the Mission script

    Implementing the MissionToken script

    Implementing the SimpleLifespanScript

    Putting it all together

    Testing the mission system

    Try it out!

    Summary

    3. Mission One – Find the Facts

    Finding the facts

    Designing games to maximize fun

    The teaching loop in game design

    Implementing the core classes for mission one

    Creating a terrain

    Creating the FlagLocators GameObject

    Creating the FlagMonument GameObject

    Creating the MonumentMgr Script

    Creating the InventoryPlaceOnMonument class

    Creating the MissionMgrHelper script

    Creating the TriviaCardScript script

    Creating the SetupMissionOne script

    Creating the flag Prefabs

    Creating the pop-up card Prefabs

    Creating the mission pop-up Prefab

    Creating the mission reward Prefabs

    Creating the FoundAllTheFlags Prefab

    Creating the ReturnedTheFlagsResult Prefab

    Configuring the mission manager

    Playing the level!

    Summary

    4. Mission One – Future Proofing the Code

    Reorganizing our GameObjects in the Scene view

    Creating a global scene

    Creating a first level scene

    Adding new scenes to the project

    Creating the PopupMainMenu GameObject

    An introduction to Finite State Machines

    Implementing an FSM in a game

    The switch case FSM

    Classes implementation of FSM

    Implementing the GameMgr script

    Reflecting on our code changes

    Analyzing code functionality

    Updating some systems

    Making the ScorePlate active

    Updating the player motion algorithm

    Playing the level!

    Summary

    5. User Interfaces in Unity

    Getting familiar with Unity UI classes

    Developing the pop-up system

    Exploring the GUIText component

    Interpreting the members on GUIText

    Exploring the GUITexture component

    Exploring the TextMesh component

    Ideal use of TextMesh

    Creating clickable text elements

    Detecting mouse clicks

    Detecting mouse over

    Detecting leaving mouse over

    Exploring UnityScript and the GUIButton object

    Using UnityGUI

    Creating a clickable button

    Detecting a mouse click

    Building the main menu pop up

    Testing our work

    Future extensions

    Summary

    6. NPCs and Associated Technology

    Creating the NPC GameObject

    Implementing the npcScript class

    Implementing the SplineMgr class

    Connecting SplineMgr to NPCScript

    Implementing the NPC decision system

    Implementing the npcCondition script

    Implementing the npcResponse script

    Implementing the npcInteraction script

    Implementing the npcDecisionMgr script

    Building a collection of NPC conditions and responses

    Implementing the condition_closerThanThresh script

    Implementing the condition_fartherThanThresh script

    Implementing the response_changeState script

    Putting it all together

    Summary

    7. Mission Two – Testing a Player's Learning

    Exploring the structure of mission two

    Defining the framework for mission two

    Adding a mission to the missionMgr script

    Extending the GameCam script

    Modifying the terrain

    Adding NpcRacers to the mission

    Creating the start and finish line flags

    Creating the LevelStart and LevelFinished pop ups

    Creating the setupLevel2 Prefab

    Creating the raceStartup Prefab

    Implementing the LevelLogicObj GameObject

    Summary

    8. Adding Animations

    Exploring 3D hierarchies

    Skinned meshes in Unity3D

    Acquiring and importing models

    Exploring the Mechanim animation system

    Choosing appropriate animations

    Building a simple character animation FSM

    Exploring in-place versus root motion animation

    Adding the character script

    Building a zombie racer animation FSM

    Building a quiz racer animation FSM

    Exploring the Unity animation editor

    Summary

    9. Synthesis of Knowledge

    Understanding the mission three GameObjects

    Applying learning theory to mission three

    Creating the structure for mission three

    Modifying the terrain

    Adding visitors to the park

    Modifying the pop-up system

    Creating the NpcLocators Prefab

    Creating the CorrectResponse Prefabs

    Modifying the quiz cards

    Adding another data condition

    Using the setupLevel3 Prefab

    Creating the AddScore condition

    Creating the ShowLevel3Results response

    Creating the Time object

    Modifying the LevelLogicObj object

    Rewarding the player

    Summary

    10. An Extensible Game Framework Pattern in Unity

    Load additively

    Using delete/load patterns

    Refactoring our work

    The pop-up system

    Updating level 3 pop ups

    Updating level 2 pop ups

    Updating level 1 pop ups

    Refactoring level 2

    Implementing a system to connect object references

    Updating the SetupMission2 script

    Refactoring level 3

    Playing and distributing your game

    Reflecting on e-learning and game design

    Summary

    Index

    Creating E-Learning Games with Unity


    Creating E-Learning Games with Unity

    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: March 2014

    Production Reference: 1180314

    Published by Packt Publishing Ltd.

    Livery Place

    35 Livery Street

    Birmingham B3 2PB, UK.

    ISBN 978-1-84969-342-4

    www.packtpub.com

    Cover Image by Parag Kadam (<[email protected]>)

    Credits

    Author

    David Horachek

    Reviewers

    Neeraj Jadhav

    Alankar Pradhan

    K. Aava Rani

    Ranpariya Ankur J. [PAHeartBeat]

    Acquisition Editor

    Joanne Fitzpatrick

    Content Development Editor

    Chalini Snega Victor

    Technical Editors

    Arwa Manasawala

    Manal Pednekar

    Anand Singh

    Ankita Thakur

    Copy Editors

    Sarang Chari

    Brandt D'Mello

    Mradula Hegde

    Project Coordinator

    Binny K. Babu

    Proofreader

    Simran Bhogal

    Indexer

    Hemangini Bari

    Graphics

    Ronak Dhruv

    Yuvraj Mannari

    Abhinash Sahu

    Production Coordinator

    Shantanu Zagade

    Cover Work

    Shantanu Zagade

    About the Author

    David Horachek is a video game software developer with over 13 years of experience in programming arcade, home console, and portable games. He has programmed game projects published by Midway Games, EA, Ubisoft, SEGA, and others. He develops games under the Arbelos Interactive label.

    I would like to thank my wife Allison and my family for their encouragement and support, the team at Packt Publishing for their patience and advice, and aspiring e-learning game programmers for their work to come.

    About the Reviewers

    Neeraj Jadhav did his Bachelors in Computer Engineering from Mumbai University and Masters in Computer Science from University of Houston-Clear Lake. He has been working as a software developer for three years. His interests primarily lie in software development with Java and C# as well as web development with HTML 5, CSS 3, jQuery, and JavaScript. During his graduate years, he worked on developing games using Unity's 3D game engine with JavaScript and C#.

    Alankar Pradhan is from Mumbai, Maharashtra, and went to Indian Education Society's CPV High School. He is an ambitious person who loves interacting with new people, travelling, spending leisure time with friends, or playing games on both his PC and mobile. Games have been always a passion in his life. More than just playing the game, his main curiosity is how things work. Hence, he decided to pursue his career in the same field. He graduated with BSc Honors in Software Development from Sheffield Hallam University, UK. He is currently pursuing an advanced course in game programming (BAC+5 Equivalent) from DSK Supinfogame, where he is undertaking industry-oriented projects to enhance his skill set and giving his best in doing so. He worked as a game programming intern at The Walt Disney Company India Pvt Ltd. During his internship, he worked on a live project, called Hitout Heroes, where he was responsible for integration of small gameplay modules and then social integration of Facebook into the game, but later on, the whole UI implementation, working, flow, and mechanism was managed solely by him. At the end, he was responsible for bug solving and memory management. His name was added in the credits due to his accomplishments.

    He has worked in many small projects in team as well as individually, thus sharpening his own skills in various languages, such as C#, C++, Java, Unreal Script, Python, Lua, Groovy/Grails, and HTML5/CSS. He is familiar with engines such as Unity3D, Unreal Development Kit, and Visual Studio and also SDKs such as NetBeans, Eclipse, and Wintermute. Recently, in 2013, his dissertation on Comparison between Python and Lua in Gaming Industry got published as a book.

    More to this, he even likes to read, listen to music, and write poems and rap songs at times. He has his own website at http://alan.poetrycraze.com where he posts his poems and has also published a book called The Art Of Lost Words, which is available on Amazon.com.

    We are so often caught up with our goals that we forget to appreciate the journey, especially the people we meet on the way. Appreciation is a wonderful feeling; it's way better if we don't overlook it. I hereby take this opportunity to acknowledge the people who directed me and inspired me in this initiative. I would like to express hearty thanks to my parents, who instilled and believed in me always. I am also thankful to my friends for their constant support and encouraging words that helped me to reach this level. Last but not least, I would like to thank all the people who are directly or indirectly involved in this and helped me in one or the other way.

    K. Aava Rani is a co-founder of CulpzLab Pvt Ltd., a software company having 10 years of experience in game technologies. A successful blogger and technologist, she switched her focus to game development in 2004. Since then, she has produced a number of game titles and has provided art and programming solutions to Unity developers across the globe. She is based in New Delhi, India. She has been a recipient of several prestigious awards including Adobe for game technology expert 2012 and SmartFoxServer for her articles. She has experience in various technologies.

    Aava is the co-founder of CulpzLab, a software development company of highly skilled professionals in web, game development, and interactive media. Founded in 2010, CulpzLab has proven itself to be a reliable technology partner for its clients. Currently, CulpzLab employs over 50 people and is based in New Delhi, India.

    CulpzLab is a leading, custom (bespoke) process-driven software solutions provider that has helped and partnered with many reputable brands, start-up ventures, and offshore IT companies, helping them realize their digital solutions and delivering effectively, efficiently, and on time.

    CulpzLab has worked with a plethora of clients globally. With a diverse technology background, industry expertise, and a client footprint that extends to more than 14 countries, CulpzLab is well positioned to help organizations derive maximum value from their IT investments and fully support their business aims.

    CulpzLab's core business purpose is to invent, engineer, and deliver technology solutions that drive business value, create social value, and improve the lives of customers.

    I would like to acknowledge the creators of Unity3D program, the amazing tool that allows the ultimate digital experience in creative expression. I'd also like to thank my clients for being part of the fun! Many of you have become good friends over my creative successes. And finally, I'd like to thank R.K.Rajanjan, who taught me how to love and appreciate technologies.

    Ranpariya Ankur J. [PAHeartBeat] represents himself in the gaming world as PAHeartBeat. He has vast experience in the computer programming field from FoxPro to Microsoft .NET technologies. In game programming, he works with one of India's successful game studios, GameAnax Inc., by IndiaNIC InfoTech Ltd., as a Unity3D game programmer, and also works on racing titles for mobile device-based games and studio's internal reusable code GameAnax Engine, which works in Unity3D for the iOS and Android platforms. He has worked on the two most successful in-house games, Crazy Monster Truck – Escape and Go Karts, and has also worked on client projects.

    Before this, he hasn't worked for any other books either as a reviewer or as a co-author; it's his first experience in book reviewing.

    I would to like to thank my family and my roommates who give me space to work for games at night and adjust their routines and time according to my schedule, thus providing their help.

    www.PacktPub.com

    Support files, eBooks, discount offers and more

    You might want to visit www.PacktPub.com for support files and downloads related to your book.

    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 for more details.

    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.

    http://PacktLib.PacktPub.com

    Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.

    Why Subscribe?

    Fully searchable across every book published by Packt

    Copy and paste, print and bookmark content

    On demand and accessible via web browser

    Free Access for Packt account holders

    If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.

    Preface

    E-learning can be described as the use of computers and digital technology to facilitate teaching and learning. One popular method of accomplishing this, and which is also the approach we will take in this book, is through gamification of learning, that is, the application of cognitive psychology and game-based rules to learning systems.

    At the time of writing this book, it is projected that by the year 2020, 85 percent of all daily human tasks will be gamified to some extent (Everyone is a Gamer, a HTML document by Corcione, Andrew, and Fran Tardo, available at www.prnewswire.com, February 25, 2014. This document was accessed on February 28, 2014, http://www.prnewswire.com/news-releases/everyones-a-gamer---ieee-experts-predict-gaming-will-be-integrated-into-more-than-85-percent-of-daily-tasks-by-2020-247100431.html). This book was written in parts to address the need of young programmers to have a robust and substantial example of an e-learning game to learn from.

    The reader will participate in the development of an e-learning game that teaches American geography, Geography Quest. The code and the book were written in tandem so that the text could serve as an accompanying guide to the software.

    What this book covers

    Chapter 1, Introduction to E-Learning and the Three Cs of 3D Games, introduces e-learning and how games are effective at targeting learning outcomes. It also introduces us to Unity3D and guides us through the development of the character, camera, and control systems for the game.

    Chapter 2, Interactive Objects and MissionMgr, helps us to develop some of the core technology for our game foundation. We will implement a system that tracks the user's progress in the game through the concept of a mission. We also develop an interactive object class the player can interact with.

    Chapter 3, Mission One – Find the Facts, helps us to code the first level of our game by applying the learning theory we know and the technology we have developed to create an exploration level.

    Chapter 4, Mission One – Future Proofing the Code, helps us finish developing the first level of our game after taking a look back at our design needs and refactoring our code so that it is maintainable and extendible. This level presents the learning outcomes to the player for the first time.

    Chapter 5, User Interfaces in Unity, takes a sojourn into user interface technology in Unity. We then apply our knowledge and develop a pop-up windows system that will be used in our game.

    Chapter 6, NPCs and Associated Technology, helps us apply the technology we have already built in the creation of simple computer-controlled characters for our game.

    Chapter 7, Mission Two – Testing a Player's Learning, guides us to develop the second level of our game, applying all of the systems and technology we have developed thus far. This level of the game gives the player an opportunity to manipulate and practice the learning outcomes.

    Chapter 8, Adding Animations, takes another sojourn into the various animation systems in Unity3D. We then apply this knowledge by replacing our existing characters with 3D animated models.

    Chapter 9, Synthesis of Knowledge, helps us to develop the last level of our game in this chapter by using all of the technology and theory we have learned. This level of the game challenges the user to master the desired learning outcomes.

    Chapter 10, An Extensible Game Framework Pattern in Unity, integrates our game levels into one extensible framework. We will polish it more and then package the game up for your user to run on their PC.

    What you need for this book

    You will need Unity Version 4.2.2f1, which at the time of writing this book may be downloaded from http://unity3d.com/unity/download/archive.

    Who this book is for

    This book is intended for beginners in Unity3D programming who wish to develop games in Unity3D that teach and inform the user of specific learning outcomes. Common target applications could be for training

    Enjoying the preview?
    Page 1 of 1