Book Image

Procedural Content Generation for Unity Game Development

By : Ryan Watkins
Book Image

Procedural Content Generation for Unity Game Development

By: Ryan Watkins

Overview of this book

Procedural Content Generation is a process by which game content is developed using computer algorithms, rather than through the manual efforts of game developers. This book teaches readers how to develop algorithms for procedural generation that they can use in their own games. These concepts are put into practice using C# and Unity is used as the game development engine. This book provides the fundamentals of learning and continued learning using PCG. You'll discover the theory of PCG and the mighty Pseudo Random Number Generator. Random numbers such as die rolls and card drafting provide the chance factor that makes games fun and supplies spontaneity. This book also takes you through the full development of a 2D game. Starting with level generation, you'll learn how PCG can make the game environment for you. You'll move into item generation and learn the different techniques to procedurally create game items. Thereafter, you'll be guided through the more abstract PCG areas such as scaling difficulty to the player and even generating music! The book helps you set up systems within your games where algorithms create computationally generated levels, art assets, quests, stories, characters, and weapons; these can substantially reduce the burden of manually creating every aspect of the game. Finally, you'll get to try out your new PCG skills on 3D terrain generation.
Table of Contents (18 chapters)
Procedural Content Generation for Unity Game Development
Credits
Disclaimer
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Player


The Player class has to interact with the exit tile, which represents the entrance and exit of our dungeons. The player character also has to be transported to the Dungeon Board when the player moves to an exit tile. There are some subtleties to this, since we are not actually changing the scene. Code Snip 4.8 shows the updates the Player class requires:

14 public bool onWorldBoard;
15 public bool dungeonTransition;
…
19 protected override void Start () {
20  animator = GetComponent<Animator>();
21    
22  health = GameManager.instance.healthPoints;
23    
24  healthText.text = "Health: " + health;
25
26  position.x = position.y = 2;27
27
28  onWorldBoard = true;
29  dungeonTransition = false;
30
31  base.Start ();
32}
…
40 private void Update ()
…
63    if(horizontal != 0 || vertical != 0) {
64    if (!dungeonTransition) {
65    canMove = AttemptMove<Wall> (horizontal, vertical);
66    if(canMove && onWorldBoard) {
67    position.x += horizontal;
68    position...