Search Ebook here:


Game Engine Architecture, Third Edition



Game Engine Architecture, Third Edition PDF

Author: Jason Gregory

Publisher: A K Peters

Genres:

Publish Date: August 17, 2018

ISBN-10: 1138035459

Pages: 1240

File Type: PDF

Language: English

read download

Book Preface

Welcome to Game Engine Architecture. This book aims to present a complete discussion of the major components that make up a typical commercial game engine. Game programming is an immense topic, so we have a lot of ground to cover. Nevertheless, I trust you’ll find that the depth of our discussions is sufficient to give you a solid understanding of both the theory and the common practices employed within each of the engineering disciplines we’ll cover. That said, this book is really just the beginning of a fascinating and potentially lifelongjourney. A wealth of information is available on all aspects of game technology, and this text serves both as a foundation-laying device and as a jumping-off point for further learning.

Our focus in this book will be on game engine technologies and architecture. This means we’ll cover the theory underlying the various subsystems that comprise a commercial game engine, the data structures, algorithms and software interfaces that are typically used to implement them, and how these subsystems function together within a game engine as a whole. The line between the game engine and the game is rather blurry. We’ll focus primarily on the engine itself, including a host of low-level foundation systems, the rendering engine, the collision system, the physics simulation, character animation, audio, and an in-depth discussion of what I call the gameplay foundation layer. This layer includes the game’s object model, world editor, event system and scripting system. We’ll also touch on some aspects of gameplay program ming, including player mechanics, cameras and AI. However, by necessity, the scope of these discussions will be limited mainly to the ways in which gameplay systems interface with the engine.

This book is intended to be used as a course text for a two- or three-course college-level series in intermediate game programming. It can also be used by amateur software engineers, hobbyists, self-taught game programmers and existing members of the game industry alike. Junior engineers can use this text to solidify their understanding of game mathematics, engine architecture and game technology. And some senior engineers who have devoted their careers to one particular specialty may benefit from the bigger picture presented in these pages as well.

To get the most out of this book, you should have a working knowledge of basic object-oriented programming concepts and at least some experience programming in C++. The game industry routinely makes use of a wide range of programming languages, but industrial-strength 3D game engines are still written primarily in C++. As such, any serious game programmer needs to be able to code in C++. We’ll review the basic tenets of object-oriented programming in Chapter 3, and you will no doubt pick up a few new C++ tricks as you read this book, but a solid foundation in the C++ language is best obtained from [46], [36] and [37]. If your C++ is a bit rusty, I recommend you refer to these or similar books to refresh your knowledge as you read this text. If you have no prior C++ experience, you may want to consider reading at least the first few chapters of [46] and/or working through a few C++ tutorials online, before diving into this book.

The best way to learn computer programming of any kind is to actually write some code. As you read through this book, I strongly encourage you to select a few topic areas that are of particular interest to you and come up with some projects for yourself in those areas. For example, if you find character animation interesting, you could start by installing OGRE and exploring its skinned animation demo. Then you could try to implement some of the animation blending techniques described in this book, using OGRE. Next you might decide to implement a simple joypad-controlled animated character that can run around on a flat plane. Once you have something relatively simple working, expand upon it! Then move on to another area of game technology. Rinse and repeat. It doesn’t particularly matter what the projects are, as long as you’re practicing the art of game programming, not just reading about it.

Game technology is a living, breathing thing that can never be entirely captured within the pages of a book. As such, additional resources, errata, updates, sample code and project ideas will be posted from time to time on this book’s website at http://www.gameenginebook.com. You can also follow me on Twitter @jqgregory.

New to the Third Edition

The computing hardware that lies at the heart of today’s game consoles, mobile devices and personal computers makes heavy use of parallelism. Deep within the CPUs and GPUs in these devices, multiple functional units operate simultaneously, employing a “divide and conquer” approach to high-speed computation. While parallel computing hardware can make traditional singlethreaded programs run faster, programmers need to write concurrent software to truly take advantage of the hardware parallelism that has become ubiquitous in modern computing platforms.

In prior editions of Game Engine Architecture, the topics of parallelism and concurrency were touched on in the context of game engine design. However, they weren’t given the in-depth treatment they deserved. In this, the third edition of the book, this problem has been remedied via the addition of a brand new chapter on concurrency and parallelism. Chapters 8 and 16 have also been augmented to include detailed discussions of how concurrent programming techniques are typically applied to game engine subsystem and game object model updates, and how a general-purpose job system can be used to unlock the power of concurrency within a game engine.

I’ve already mentioned that every good game programmer must have a strong working knowledge of C++ (in addition to the wide variety of other useful languages used regularly in the game industry). In my view, a programmer’s knowledge of high-level languages should rest upon a solid understanding of the software and hardware systems that underlie them. As such, in this edition I’ve expanded Chapter 3 to include a treatment of the fundamentals of computer hardware, assembly language, and the operating system kernel.

This third edition of Game Engine Architecture also improves upon the treatment of various topics covered in prior editions. A discussion of local and global compiler optimizations has been added. Fuller coverage of the various C++ language standards is included. The section on  memory caching andcache coherency has been expanded. The animation chapter has been streamlined. And, as with the second edition,various errata have been repaired that were brought to my attention by you, my devoted readers. Thank you! I hope
you’ll find that the mistakes you found have all been fixed. (Although no doubt they have been replaced by a slew of new mistakes, about which you can feel free to inform me, so that I may correct them in the fourth edition of the book!) Of course, as I’ve said before, the field of game engine programming is almost unimaginably broad and deep. There’s no way to cover every topic in one book. As such, the primary purpose of this book remains to serve as an awareness-building tool and a jumping-off point for further learning. I hope you find this edition helpful on your journey through the fascinating and multifaceted landscape of game engine architecture.


Download Ebook Read Now File Type Upload Date
Download here Read Now PDF January 12, 2021

How to Read and Open File Type for PC ?