Building a 3D Game with LibGDX
1/5
()
About this ebook
- Implement an exhaustive list of features that LibGDX unleashes to build your 3D game.
- Write, test, and debug your application on your desktop and deploy them on multiple platforms.
- Gain a clear understanding of the physics behind LibGDX and libraries like OpenGL and WebGL that make up LibGDX.
If you are a game developer or enthusiast who want to build 3D games with LibGDX, then this book is for you. A basic knowledge of LibGDX and Java programming is required.
Related to Building a 3D Game with LibGDX
Related ebooks
Learning LibGDX Game Development - Second Edition Rating: 0 out of 5 stars0 ratingsLibGDX Game Development By Example Rating: 0 out of 5 stars0 ratingsMastering Android NDK Rating: 0 out of 5 stars0 ratingsiOS Game Development By Example Rating: 0 out of 5 stars0 ratingsHTML5 Game Development with GameMaker Rating: 0 out of 5 stars0 ratingsInstant MinGW Starter Rating: 0 out of 5 stars0 ratingsHaxe Game Development Essentials Rating: 0 out of 5 stars0 ratingsLearning AWS Lumberyard Game Development Rating: 0 out of 5 stars0 ratingsSource SDK Game Development Essentials Rating: 0 out of 5 stars0 ratingsPro Spring Boot 2: An Authoritative Guide to Building Microservices, Web and Enterprise Applications, and Best Practices Rating: 0 out of 5 stars0 ratingsCryENGINE 3 Game Development Beginner's Guide Rating: 0 out of 5 stars0 ratingsPro TypeScript: Application-Scale JavaScript Development Rating: 4 out of 5 stars4/5Flex on Java Rating: 0 out of 5 stars0 ratingsBackbone.js Patterns and Best Practices Rating: 0 out of 5 stars0 ratingsAPI Platform A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratings802.15.4 ZigBee Third Edition Rating: 0 out of 5 stars0 ratingsWordPress 2.7 Cookbook Rating: 2 out of 5 stars2/5Twilio Cookbook: Second Edition Rating: 0 out of 5 stars0 ratingsDomain Driven Design A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsLibgdx Cross-platform Game Development Cookbook Rating: 0 out of 5 stars0 ratingsSpring Boot Persistence Best Practices: Optimize Java Persistence Performance in Spring Boot Applications Rating: 0 out of 5 stars0 ratingsIvor Horton's Beginning Visual C++ 2013 Rating: 0 out of 5 stars0 ratingsMastering Google App Engine Rating: 0 out of 5 stars0 ratingsBeagleBone Essentials Rating: 0 out of 5 stars0 ratingsActionScript Graphing Cookbook Rating: 0 out of 5 stars0 ratingsOpa Application Development Rating: 0 out of 5 stars0 ratingsHTML5 Graphing and Data Visualization Cookbook Rating: 0 out of 5 stars0 ratingsGradle for Android Rating: 0 out of 5 stars0 ratingsOpenID Connect A Clear and Concise Reference Rating: 0 out of 5 stars0 ratings
Programming For You
C Programming For Beginners: The Simple Guide to Learning C Programming Language Fast! Rating: 5 out of 5 stars5/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsExcel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Coding with JavaScript For Dummies Rating: 0 out of 5 stars0 ratingsHTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5Narrative Design for Indies: Getting Started Rating: 4 out of 5 stars4/5JavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5Python Data Structures and Algorithms Rating: 5 out of 5 stars5/5Beginning Programming with C++ For Dummies Rating: 4 out of 5 stars4/5C# 7.0 All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsC All-in-One Desk Reference For Dummies Rating: 5 out of 5 stars5/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5
Reviews for Building a 3D Game with LibGDX
1 rating0 reviews
Book preview
Building a 3D Game with LibGDX - Sebastián Di Giuseppe
Table of Contents
Building a 3D Game with LibGDX
Credits
About the Author
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
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. Setting Up Your Development Environment
LibGDX 3D API overview
Downloading IntelliJ IDEA Community Edition
LibGDX project setup
Basic use of IntelliJ IDEA with LibGDX
Running the Android app
Running the desktop app
Summary
2. An Extra Dimension
Camera techniques
Drawing a cube
Translation
Rotation
Scaling
Summary
3. Working toward a Prototype
Creating our world
Creating our structure
Game screen
A simple playground
Game world
Adding visuals
Introduction to Ashley
Components
Model component
Systems and Ashley's engine
Render system
Adding physics and collisions
Bullet Physics and Bullet system
Creating a scene
Movable characters
Player component
Player system
Adding enemies
Enemy component
Status component
Enemy system
Enemy collision
Making our player able to shoot
Scene2D
Default skin for Scene2D
Health bar
Crosshair
Displaying scores
Pausing the game
Game over widget
Screens
Main menu screen
Leaderboards screen and the Settings class
Summary
4. Preparing Visuals
Setting up Blender
Downloading and installing Blender
Blender's (very) basics
Move gizmo
Scale gizmo
Rotation gizmo
Sketching
Game asset pipeline in Blender
Modeling
UV mapping
Texturing
First steps to animation - rigging
Animation
Exporting
Summary
5. Starting to Look Like an Actual Game
Models usable and ready to deploy with LibGDX
Downloading Fbx-Conv
Command-line usage
Options/flags:
Adding our own gun model
Converting our gun model file
Importing the model, finally!
Adding our own static arena
Creating our model
Importing to our game and getting the collision bounds
Enemy models!
Getting models from the Internet
Preparing for more than one animation
Run animation
Death animation and system
Improving the spawn function
Adding a SkyDome
Getting the model
Implementing
Shadows and lights
Adding a directional shadow with a light
Summary
6. Spicing Up the Game
3D particles and LibGDX 3D particle editor
Particle effect types
Emitter properties
Saving and importing
Adding the particle effect and a material attribute
Mobile performance
Testing on Android
Performance improvements on the enemy model
Performance improvements and frustum culling
UI tweening
Online leaderboards and the .NET API
Analog sticks on mobile and platform recognition
Summary
7. Final Words
Deploying to platforms
Running and deploying on desktop
Running and deploying on Android
Troubleshooting common problems
Gradle
Antivirus
IntelliJ
What's missing from our game?
More platforms
Loading screen and loading feature
About section
Splash screen
UI customization and screen transitions
Game design
Attack system
Shaders and shadows across all platforms
Shooting lasers
Positional audio
Publishing
Ads
Social networks
Summary
Building a 3D Game with LibGDX
Building a 3D Game with LibGDX
Copyright © 2016 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 authors, 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: August 2016
Production reference: 1220816
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.
ISBN 978-1-78528-841-8
www.packtpub.com
Credits
About the Author
Sebastian Di Giuseppe started back in 2011 with Java game development and native Android development. With a huge passion, he spent a lot of time learning the different areas of game development, exploring programming areas, and creating prototypes of all kinds for several platforms. With a good plan for his improvement while having a full time job as an Android developer, he also spends a lot of time on the forum, java-gaming.org, learning and making contacts. He joined forces with a graphic designer and a musician to peruse more professional tasks and updates on their work that led him to meet a team of developers who called themselves Deeep Games. With them, he took a step up and also learned project and product management. With time, he joined and consulted other game development teams on management and processes. He now works as a full-time project and product manager and you can see him hang out on the Indie Game Developers' Facebook group posting updates on prototypes, ideas, or recruiting for future projects. You check out his LinkedIn profile at https://ar.linkedin.com/in/sebadigiuseppe or his Facebook profile at https://www.facebook.com/sebastian.digiuseppe.54.
I'd like to thank, Elmar Van Rijnswou and Andreas Krülmann for inviting me to join Deeep Games, which was a huge boost to my career. Packt Publishing, along with Aaron Lazar and Anish Sukumaran take a huge gratitude from me for being so patient, helpful, and supportive on the project, and for giving me this huge opportunity. Also, thanks to Oliver Mendoza for helping synthesize an easy and representative 3D model development along with its other areas.
www.PacktPub.com
eBooks, discount offers, and more
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 [email protected] 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.
https://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read 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 a web browser
Preface
Building a 3D Game with LibGDX is a book about how to create games with LibGDX that can work in 3D. We'll cover camera differences with 2D primitive shapes, a game design on the run
approach, modeling our assets, getting assets from websites, preparing our models and downloading them to be used with LibGDX, animations, textures, a basic UI and with Tweening, all toward developing a basic FPS game. And finally, we will get to export to a desired platform along with troubleshooting usual problems.
What this book covers
Chapter 1, Setting Up Your Development Environment, will cover everything we need to install in order to have a workflow.
Chapter 2, An Extra Dimension, will go over the differences between a 2D and a 3D camera, and then set up a base to work with and draw primitive shapes.
Chapter 3, Working toward a Prototype, will go over the creation of a prototype, from the creation of a level with enemies, chase mechanics, physics, collisions, a user interface, and a mechanism to defend ourselves from the enemies.
Chapter 4, Preparing Visuals, will walk us through the basics of how to use Blender and go step by step through how to create a representative model for our game.
Chapter 5, Starting to Look Like an Actual Game, will help you prepare and import the model created in the previous chapter as well as from other sources. We will also get collision shapes from a static model and add basic shadows.
Chapter 6, Spicing Up the Game, will help you polish your game a little by adding a particle system and some UI Tweening. You will also work a bit on the performance of the game and explore the .NET API, brought by LibGDX, by adding online Leaderboards.
Chapter 7, Final Words, will demonstrate deploying games on various platforms and some basic troubleshooting. This chapter will also help you identify the platform we are running the game on, and finally, talk about room for improvement.
What you need for this book
For this book we'll need the following:
Intellij IDEA Community Edition, at least version 14.1.4
LibGDX's Setup App, at least version 1.6.4
Java JDK
Android SDK with at least API 22
Who this book is for
If you are a game developer or an enthusiast who wants to build 3D games with LibGDX, then this book is for you. Some basic knowledge of LibGDX and Java programming is required.
Conventions
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: The AddScore(..) will do the obvious: reading our Strings for the high scores.
A block of code is set as follows:
public static final float VIRTUAL_HEIGHT = 540;
Screen screen;
@Override
public void create() {
Gdx.input.setCatchBackKey(true);
setScreen(new GameScreen(this));
Any command-line input or output is written as follows:
fbx-conv-win32.exe -f -v myModel.fbx convertedModel.g3db
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: Click on Generate and wait. After it is done, open IntelliJ IDEA
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of. To send us general feedback, simply e-mail [email protected], and mention the book's title in the subject of your message. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
You can download the code files by following these steps:
Log in or register to our website using your e-mail address and password.
Hover the mouse pointer on the SUPPORT tab at the top.
Click on Code Downloads & Errata.
Enter the name of the book in the Search box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on Code Download.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/Building-a-3D-Game-with-LibGDX. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
Downloading the color images of this book
We also provide you with a PDF file that has color images of the screenshots/diagrams used in this book. The color images will help you better understand the changes in the output. You can download this file from http://www.packtpub.com/sites/default/files/downloads/Buildinga3DGamewithLibGDX_ColorImages.pdf.
Errata
Although we have taken every care