1 Building Your First Game Application.- 2 What Is Programming?.- 3 Game Programming Basics.- 4 Creating a Game World.- 5 Showing what the Player is Doing.- 6 Reacting to Player Input.- 7 Basic Game Objects.- 8 Communication and Interaction Between Objects.- 9 A Limited Number of Lives.- 10 Organizing Game Objects.- 11 Finishing the Game.- 12 Dealing with Different Screen Sizes.- 13 Arrays and Collections.- 14 Game Objects in a Structure.- 15 Gameplay Programming.- 16 Finishing the Game.- 17 Better Game State Management.- 18 User Interfaces and Menus.- 19 Loading Levels from Files.- 20 Gameplay Programming.- 21 Finishing the Game.- 22 Creating the Main Game Structure.- 23 Animated Game Objects.- 24 Game Physics.- 25 Intelligent Enemies.- 26 Finishing the Game.
Wouter van Toll is a post-doctoral researcher at Inria in Rennes, France, as well as a fanatic developer of games and apps. His research focuses on simulating the behavior of human crowds. Previously, he was a lecturer at the Department of Information and Computing Sciences at Utrecht University in the Netherlands. He has taught several bachelor and master courses there, including the introductory Game programming course designed by co-author Arjan Egges.
Arjan Egges has more than 15 years of teaching experience at the Department of Information and Computing Sciences at Utrecht University in the Netherlands as well as at the University of Geneva in Switzerland. He taught programming courses on both bachelor and master levels, as well as courses related to games and computer animation. He wrote several books about game programming, in C#, JavaScript, and Swift. Arjan is currently involved in the startup Fans4Music, which aims to provide a platform that connects musicians with their audience. He also recently launched Pensyve, a web-based platform that offers assignments in various programming languages as well as tools that help teachers create handouts for their students and grade programming assignments.
Jeroen Fokker is an assistant professor in the Software Technology group at Utrecht University. As the director of education, he is responsible for the undergraduate programs in Computer Science and Information Science. He has been teaching introductory programming courses for over 20 years, using C++, Haskell, Java, and C#, as well as courses on compiler construction.
Developing computer games is a perfect way to learn how to program in modern programming languages. This book teaches how to program in C# through the creation of computer games – and without requiring any previous programming experience.
Contrary to most programming books, van Toll, Egges, and Fokker do not organize the presentation according to programming language constructs, but instead use the structure and elements of computer games as a framework. For instance, there are chapters on dealing with player input, game objects, game worlds, game states, levels, animation, physics, and intelligence. The reader will be guided through the development of four games showing the various aspects of game development. Starting with a simple shooting game, the authors move on to puzzle games consisting of multiple levels, and conclude the book by developing a full-fledged platform game with animation, game physics, and intelligent enemies. They show a number of commonly used techniques in games, such as drawing layers of sprites, rotating, scaling and animating sprites, dealing with physics, handling interaction between game objects, and creating pleasing visual effects. At the same time, they provide a thorough introduction to C# and object-oriented programming, introducing step by step important programming concepts such as loops, methods, classes, collections, and exception handling.
This second edition includes a few notable updates. First of all, the book and all example programs are now based on the library MonoGame 3.6, instead of the obsolete XNA Game Studio. Second, instead of explaining how the example programs work, the text now invites readers to write these programs themselves, with clearly marked reference points throughout the text. Third, the book now makes a clearer distinction between general (C#) programming concepts and concepts that are specific to game development. Fourth, the most important programming concepts are now summarized in convenient “Quick Reference” boxes, which replace the syntax diagrams of the first edition. Finally, the updated exercises are now grouped per chapter and can be found at the end of each chapter, allowing readers to test their knowledge more directly.
The book is also designed to be used as a basis for a game-oriented programming course. Supplementary materials for organizing such a course are available on an accompanying web site, which also includes all example programs, game sprites, sounds, and the solutions to all exercises.