Game Development with Three.js

Game Development with Three.js

Isaac Sukin

Language: English

Pages: 118

ISBN: 1782168532

Format: PDF / Kindle (mobi) / ePub


With Three.js you can create sophisticated 3D games that run in the web browser. This book is aimed at both the professional game designer and the enthusiast with a step by step approach including lots of tips and examples.

Overview

  • Develop immersive 3D games that anyone can play on the Internet
  • Learn Three.js from a gaming perspective, including everything you need to build beautiful and high-performance worlds
  • A step-by-step guide filled with game-focused examples and tips

In Detail

The advent of WebGL and its inclusion in many browsers enabled JavaScript programs running in a web browser to access the GPU without a plugin or extension. Three.js is a next generation high-level library that makes it possible to author complex 3D computer animations that display in the browser using nothing more than a simple text editor. The development of these new tools has opened up the world of real-time 3D computer animations to a far broader spectrum of developers.

Starting with how to build 3D games on the web using the Three.js graphics library, you will learn how to build 3D worlds with meshes, lighting, user interaction, physics, and more. Along the way, you'll learn how to build great online games through fun examples. Use this book as a guide to embrace the next generation of game development!

Moving on from the basics, you will learn how to use Three.js to build game worlds using its core components, including renderers, geometries, materials, lighting, cameras, and scenes. Following on from this, you will learn how to work with mouse and keyboard interactions, incorporate game physics, and import custom models and animations. You will also learn how to include effects like particles, sounds, and post-processing. You will start by building a 3D world, and then create a first person shooter game using it. You will then be shown how to imbue this FPS game with a "capture the flag" gameplay objective. With Game Development with Three.js, you will be able to build 3D games on the Web using the Three.js graphics library.

What you will learn from this book

  • Set up a Three.js scene representing a game world
  • Understand the types of Three.js components, including geometries, materials, lighting, cameras, and renderers
  • Interact with your games using the mouse and keyboard
  • Structure your worlds with various approaches to physical collision
  • Construct complex levels using several different methods
  • Extend the Three.js framework with custom game-specific classes
  • Gain insight into development processes and important design and performance considerations for web games
  • Achieve a basic understanding of multiplayer game networking

Approach

A step-by-step, example-based guide to building immersive 3D games on the Web using the Three.js graphics library.

Who this book is written for

This book is for people interested in programming 3D games for the Web. Readers are expected to have basic knowledge of JavaScript syntax and a basic understanding of HTML and CSS. This book will be useful regardless of prior experience with game programming, whether you intend to build casual side projects or large-scale professional titles.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Table of Contents Game Development with Three.js Credits About the Author About the Reviewers www.PacktPub.com Support files, eBooks, discount offers and more Why Subscribe? Free Access for Packt account holders 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. Hello, Three.js The

they are not exactly in the direction of a ray. Lastly, rays check for intersection using an approximation of objects' shapes, so irregularly-shaped objects can be incorrectly selected. However, this is the simplest general-purpose approach that can work without additional libraries or knowledge about the world's layout.Intersection: We can manually compare objects' geometries and positions to see if they overlap. Since detecting collision between complex 3D shapes is mathematically difficult,

passed to the onLoad parameter of the loader's load callback when all loading has been completed. Consider HTML like this for a loading bar, where the outer div has a defined width:

In this case, you might include code like this in a callbackProgress handler: var total = progress.totalModels + progress.totalTextures, loaded = progress.loadedModels + progress.loadedTextures, progressBar = document.getElementById('progress'); progressBar.style.width

use THREE.AnimationHandler.CATMULLROM instead of the LINEAR easing. We also need to update the animation in our physics loop: THREE.AnimationHandler.update(delta); It is possible to use both skeletal and morph animations at the same time. In this case, the best approach is to treat the animation as skeletal and manually update the mesh's morphTargetInfluences array as demonstrated in examples/webgl_animation_skinning_morph.html in the Three.js project. Particle systems Now that our flags are

option, which eliminates small gaps between the mesh's faces that arise due to limitations of the canvas API. (The WebGLRenderer does not need this property; it can align faces more perfectly.) You can see the result in the following screenshot: Earth as a sphere with a mapped texture The image used in this example is available in the Three.js package at examples/textures/planets/land_ocean_ice_cloud_2048.jpg. There are a number of other options for different kinds of materials that are too

Download sample

Download