Java Game Development with LibGDX From Beginner to Professional — Second Edition — Lee Stemkoski Java Game Development with LibGDX From Beginner to Professional Second Edition Lee Stemkoski Java Game Development with LibGDX: From Beginner to Professional Lee Stemkoski Garden City, New York, USA ISBN-13 (pbk): 978-1-4842-3323-8 ISBN-13 (electronic): 978-1-4842-3324-5 https://doi.org/10.1007/978-1-4842-3324-5 Library of Congress Control Number: 2018931188 Copyright © 2018 by Lee Stemkoski This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Cover image by Freepik (www.freepik.com) Managing Director: Welmoed Spahr Editorial Director: Todd Green Acquisitions Editor: Steve Anglin Development Editor: Matthew Moodie Technical Reviewer: Garry Patchett Coordinating Editor: Mark Powers Copy Editor: April Rondeau Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, email [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please email [email protected], or visit http://www.apress.com/ rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484233238. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper Contents About the Author �����������������������������������������������������������������������������������������������������xi About the Technical Reviewer �������������������������������������������������������������������������������xiii Acknowledgments ���������������������������������������������������������������������������������������������������xv Introduction �����������������������������������������������������������������������������������������������������������xvii ■ Part I: Fundamental Concepts ������������������������������������������������������������1 ■ Chapter 1: Getting Started with Java and LibGDX �������������������������������������������������3 Choosing a Development Environment ����������������������������������������������������������������������������3 Setting Up BlueJ ���������������������������������������������������������������������������������������������������������������4 Downloading and Installing ��������������������������������������������������������������������������������������������������������������������4 Using BlueJ ���������������������������������������������������������������������������������������������������������������������������������������������5 Setting Up LibGDX�����������������������������������������������������������������������������������������������������������������������������������8 Creating a “Hello, World!” Program with LibGDX ��������������������������������������������������������������9 Advantages to Using LibGDX ������������������������������������������������������������������������������������������14 Summary ������������������������������������������������������������������������������������������������������������������������14 ■ Chapter 2: The LibGDX Framework ����������������������������������������������������������������������15 The Life Cycle of a Video Game ��������������������������������������������������������������������������������������16 Game Project: Starfish Collector ������������������������������������������������������������������������������������19 Managing Game Entities with Actors and Stages ����������������������������������������������������������24 Reorganizing the Game Flow �����������������������������������������������������������������������������������������32 Summary and Next Steps �����������������������������������������������������������������������������������������������37 iii ■ CONTENTS ■ Chapter 3: Extending the Framework ������������������������������������������������������������������39 Animation �����������������������������������������������������������������������������������������������������������������������41 Value-Based Animations �����������������������������������������������������������������������������������������������������������������������41 Image-Based Animations ����������������������������������������������������������������������������������������������������������������������42 Physics and Movement ��������������������������������������������������������������������������������������������������54 Velocity �������������������������������������������������������������������������������������������������������������������������������������������������54 Acceleration ������������������������������������������������������������������������������������������������������������������������������������������56 Movement ���������������������������������������������������������������������������������������������������������������������������������������������58 Collision Polygons ����������������������������������������������������������������������������������������������������������60 Polygons Versus Rectangles �����������������������������������������������������������������������������������������������������������������60 Detecting Collisions ������������������������������������������������������������������������������������������������������������������������������63 Simulating Solid Objects�����������������������������������������������������������������������������������������������������������������������65 Managing Collections of Actors ��������������������������������������������������������������������������������������67 World Boundaries �����������������������������������������������������������������������������������������������������������72 Multiple Screens ������������������������������������������������������������������������������������������������������������76 Summary and Next Steps �����������������������������������������������������������������������������������������������81 ■ Chapter 4: Shoot-em-up games ��������������������������������������������������������������������������83 Game Project: Space Rocks �������������������������������������������������������������������������������������������83 Discrete Input �����������������������������������������������������������������������������������������������������������������84 Spaceship Setup ������������������������������������������������������������������������������������������������������������87 Lasers, Rocks, and Explosions ���������������������������������������������������������������������������������������94 Endgame Conditions ������������������������������������������������������������������������������������������������������97 Summary and Next Steps �����������������������������������������������������������������������������������������������98 ■ Chapter 5: Text and User Interfaces ��������������������������������������������������������������������99 Displaying Text �������������������������������������������������������������������������������������������������������������101 Bitmap Fonts ��������������������������������������������������������������������������������������������������������������������������������������101 Labels �������������������������������������������������������������������������������������������������������������������������������������������������104 iv ■ CONTENTS Buttons �������������������������������������������������������������������������������������������������������������������������106 Image-Based Buttons �������������������������������������������������������������������������������������������������������������������������108 Text-Based Buttons ����������������������������������������������������������������������������������������������������������������������������110 Organizing Layouts with Tables ������������������������������������������������������������������������������������114 Signs and Dialog Boxes ������������������������������������������������������������������������������������������������116 Creating Cutscenes ������������������������������������������������������������������������������������������������������121 Game Project: Visual Novels �����������������������������������������������������������������������������������������129 Summary and Next Steps ���������������������������������������������������������������������������������������������141 ■ Chapter 6: Audio ������������������������������������������������������������������������������������������������143 Sounds and Music ��������������������������������������������������������������������������������������������������������143 Game Project: Rhythm Tapper ��������������������������������������������������������������������������������������147 Working with Files ��������������������������������������������������������������������������������������������������������148 Browsing for Files �������������������������������������������������������������������������������������������������������������������������������148 Recording Song Data ��������������������������������������������������������������������������������������������������������������������������151 The Game Application���������������������������������������������������������������������������������������������������157 Synchronizing Game Objects and Audio ���������������������������������������������������������������������������������������������160 Adding Interactivity and Creating the User Interface ��������������������������������������������������������������������������162 Finishing Touches �������������������������������������������������������������������������������������������������������������������������������166 Summary and Next Steps ���������������������������������������������������������������������������������������������169 ■ Part II: Intermediate Examples �������������������������������������������������������171 ■ Chapter 7: Side-Scrolling Games �����������������������������������������������������������������������173 Game Project: Plane Dodger �����������������������������������������������������������������������������������������173 Infinite Scrolling �����������������������������������������������������������������������������������������������������������175 The Player Plane and Simulating Gravity ���������������������������������������������������������������������178 Collectibles and Obstacles �������������������������������������������������������������������������������������������180 Stars ���������������������������������������������������������������������������������������������������������������������������������������������������180 The Enemy Planes ������������������������������������������������������������������������������������������������������������������������������182 Finishing Touches ���������������������������������������������������������������������������������������������������������185 Summary and Next Steps ���������������������������������������������������������������������������������������������187 v ■ CONTENTS ■ Chapter 8: Bouncing and Collision Games ���������������������������������������������������������189 Game Project: Rectangle Destroyer ������������������������������������������������������������������������������189 Creating the Game Objects �������������������������������������������������������������������������������������������190 Paddle �������������������������������������������������������������������������������������������������������������������������������������������������191 Walls ���������������������������������������������������������������������������������������������������������������������������������������������������192 Bricks��������������������������������������������������������������������������������������������������������������������������������������������������193 Ball������������������������������������������������������������������������������������������������������������������������������������������������������194 Bouncing Around ����������������������������������������������������������������������������������������������������������196 User Interface ���������������������������������������������������������������������������������������������������������������197 Items ����������������������������������������������������������������������������������������������������������������������������199 Sounds and Music ��������������������������������������������������������������������������������������������������������203 Summary and Next Steps ���������������������������������������������������������������������������������������������205 ■ Chapter 9: Drag-and-Drop Games ���������������������������������������������������������������������207 Drag-and-Drop Functionality ����������������������������������������������������������������������������������������209 Game Project: Jigsaw Puzzle ���������������������������������������������������������������������������������������214 Game Project: 52 Card Pickup ��������������������������������������������������������������������������������������219 Summary and Next Steps ���������������������������������������������������������������������������������������������225 ■ Chapter 10: Tilemaps �����������������������������������������������������������������������������������������227 Revisiting the Starfish Collector Game �������������������������������������������������������������������������228 Creating the Tilemap ���������������������������������������������������������������������������������������������������������������������������229 Creating the TilemapActor Class ���������������������������������������������������������������������������������������������������������236 Project Integration ������������������������������������������������������������������������������������������������������������������������������240 Rectangle Destroyer Revisited �������������������������������������������������������������������������������������241 Creating the Tilemap ���������������������������������������������������������������������������������������������������������������������������241 Project Integration ������������������������������������������������������������������������������������������������������������������������������244 Summary and Next Steps ���������������������������������������������������������������������������������������������246 ■ Chapter 11: Platform Games �����������������������������������������������������������������������������247 Game Project: Jumping Jack ����������������������������������������������������������������������������������������248 Starting the Level ���������������������������������������������������������������������������������������������������������249 vi ■ CONTENTS Platform Character Setup ���������������������������������������������������������������������������������������������252 Game-World Objects ����������������������������������������������������������������������������������������������������258 User Interface �������������������������������������������������������������������������������������������������������������������������������������260 The Goal: Reach the Flag ��������������������������������������������������������������������������������������������������������������������261 Coins ���������������������������������������������������������������������������������������������������������������������������������������������������262 Time and Timers ���������������������������������������������������������������������������������������������������������������������������������262 Springboards ��������������������������������������������������������������������������������������������������������������������������������������264 Platforms ��������������������������������������������������������������������������������������������������������������������������������������������265 Keys and Locks �����������������������������������������������������������������������������������������������������������������������������������267 Summary and Next Steps ���������������������������������������������������������������������������������������������270 ■ Chapter 12: Adventure Games ���������������������������������������������������������������������������271 Game Project: Treasure Quest ��������������������������������������������������������������������������������������272 Level Setup �������������������������������������������������������������������������������������������������������������������273 The Hero �����������������������������������������������������������������������������������������������������������������������276 The Sword ��������������������������������������������������������������������������������������������������������������������280 Bushes and Rocks ��������������������������������������������������������������������������������������������������������283 User Interface ���������������������������������������������������������������������������������������������������������������284 Enemies ������������������������������������������������������������������������������������������������������������������������288 Arrows ��������������������������������������������������������������������������������������������������������������������������290 Non-Player Characters �������������������������������������������������������������������������������������������������292 Item Shop ���������������������������������������������������������������������������������������������������������������������295 Summary and Next Steps ���������������������������������������������������������������������������������������������296 ■ Part III: Advanced Topics ����������������������������������������������������������������297 ■ Chapter 13: Alternative Sources of User Input ��������������������������������������������������299 Gamepad Controllers ����������������������������������������������������������������������������������������������������299 Continuous Input ���������������������������������������������������������������������������������������������������������������������������������300 Discrete Input �������������������������������������������������������������������������������������������������������������������������������������303 vii ■ CONTENTS Touchscreen Controls ���������������������������������������������������������������������������������������������������305 Redesigning the Window Layout ��������������������������������������������������������������������������������������������������������306 Working with a Touchpad �������������������������������������������������������������������������������������������������������������������308 Summary and Next Steps ���������������������������������������������������������������������������������������������310 ■ Chapter 14: Maze Games �����������������������������������������������������������������������������������311 Game Project: Maze Runman ���������������������������������������������������������������������������������������311 Maze Generation ����������������������������������������������������������������������������������������������������������312 The Hero �����������������������������������������������������������������������������������������������������������������������322 The Ghost ���������������������������������������������������������������������������������������������������������������������325 Winning and Losing the Game ��������������������������������������������������������������������������������������329 Audio ����������������������������������������������������������������������������������������������������������������������������332 Summary and Next Steps ���������������������������������������������������������������������������������������������333 ■ Chapter 15: Advanced 2D Graphics �������������������������������������������������������������������335 Particle Systems ����������������������������������������������������������������������������������������������������������335 The LibGDX Particle Editor ������������������������������������������������������������������������������������������������������������������335 Rocket-Thruster Effect �����������������������������������������������������������������������������������������������������������������������338 Explosion Effect ����������������������������������������������������������������������������������������������������������������������������������339 The ParticleActor Class �����������������������������������������������������������������������������������������������������������������������340 Integrating Particle Effects into Gameplay �����������������������������������������������������������������������������������������342 Shader Programming ���������������������������������������������������������������������������������������������������345 Default Shaders ����������������������������������������������������������������������������������������������������������������������������������346 Using Shaders in LibGDX ��������������������������������������������������������������������������������������������������������������������348 Grayscale Shader ��������������������������������������������������������������������������������������������������������������������������������349 Custom Uniform Values ����������������������������������������������������������������������������������������������������������������������349 Border Shader ������������������������������������������������������������������������������������������������������������������������������������350 Blur Shader �����������������������������������������������������������������������������������������������������������������������������������������352 Glow Shader ���������������������������������������������������������������������������������������������������������������������������������������354 Wave-Distortion Shader ����������������������������������������������������������������������������������������������������������������������355 Summary and Next Steps ���������������������������������������������������������������������������������������������357 viii ■ CONTENTS ■ Chapter 16: Introduction to 3D Graphics and Games ����������������������������������������359 Exploring 3D Concepts and Classes �����������������������������������������������������������������������������359 Creating a Minimal 3D Demo����������������������������������������������������������������������������������������362 Recreating the Actor/Stage Framework �����������������������������������������������������������������������365 The BaseActor3D Class�����������������������������������������������������������������������������������������������������������������������365 The Stage3D Class ������������������������������������������������������������������������������������������������������������������������������369 Creating an Interactive 3D Demo ��������������������������������������������������������������������������������������������������������373 Game Project: Starfish Collector 3D �����������������������������������������������������������������������������380 Summary and Next Steps ���������������������������������������������������������������������������������������������389 ■ Chapter 17: The Journey Continues�������������������������������������������������������������������391 Continuing Developing �������������������������������������������������������������������������������������������������391 Working on Projects����������������������������������������������������������������������������������������������������������������������������391 Obtaining Art Resources ���������������������������������������������������������������������������������������������������������������������392 Participating in Game Jams ����������������������������������������������������������������������������������������������������������������393 Overcoming Difficulties ����������������������������������������������������������������������������������������������������������������������393 Broadening Your Horizons ��������������������������������������������������������������������������������������������394 Playing Different Games ���������������������������������������������������������������������������������������������������������������������394 Increasing Your Skill Set ���������������������������������������������������������������������������������������������������������������������395 Recommended Reading����������������������������������������������������������������������������������������������������������������������395 Disseminating Your Games �������������������������������������������������������������������������������������������396 Packaging for Desktop Computers �����������������������������������������������������������������������������������������������������396 Compiling for Other Platforms ������������������������������������������������������������������������������������������������������������397 Finding Distribution Outlets ����������������������������������������������������������������������������������������������������������������399 ■ Appendix A: Game Design Documentation ��������������������������������������������������������401 Game Design Documentation Questions ����������������������������������������������������������������������402 Case Study: Space Rocks ���������������������������������������������������������������������������������������������405 ■ Appendix B: Review of Java Fundamentals �������������������������������������������������������411 Data Types and Operators ��������������������������������������������������������������������������������������������411 ix
Description: