Book Image

Mastering AndEngine Game Development

By : Maya Posch
Book Image

Mastering AndEngine Game Development

By: Maya Posch

Overview of this book

AndEngine is a popular and easy-to-use game framework, best suited for Android game development. After learning the basics of creating an Android game using AndEngine it's time you move beyond the basics to explore further. For this you need to understand the theory behind many of the technologies AndEngine uses. This book aims to provide all the skills and tools you need to learn more about Android game development using AndEngine. With this book you will get a quick overview of the basics of AndEngine and Android application development. From there, you will learn how to use 3D models in a 2D scene, render a visual representation of a scene's objects, and create interaction between these objects. You will explore frame-based animations and learn to use skeletal animations. As the book progresses, you will be guided through exploring all the relevant aspects of rendering graphics with OpenGL ES, generating audio using OpenSL ES and OpenAL, making the best use of Android's network API, implementing anti-aliasing algorithms, shaders, dynamic lighting and much more. With all this, you will be ready to enhance the look and feel of your game with its user interface, sound effects and background music. After an in-depth study of 2D and 3D worlds and multi-player implementations, you will be a master in AndEngine and Android game development.
Table of Contents (21 chapters)
Mastering AndEngine Game Development
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Common AndEngine lighting effects


Even with purely static lighting, some dynamic lighting effects are hard to avoid. One of these is a day-night cycle. This can be implemented in AndEngine using either the blending of a black or dark image layer, or a fragment shader program that changes the ambient light level. The shader is by far the easiest approach:

public static final Vector4 ambientColor = new vector4(0.3f, 0.3f, 0.7f, 0.7f);

Here, we define the desired ambient color (in hex RGB: 0x030307, a slightly dark shade of blue) as well as the alpha level (0x07). We used a four-element vector so that we can pass it in one go to the fragment shader:

varying LOWP vec4 vColor;
varying vec2 vTexCoord;

//texture samplers
uniform sampler2D u_texture; //diffuse map

//additional parameters for the shader
uniform LOWP vec4 ambientColor;

void main() {
  vec4 diffuseColor = texture2D(u_texture, vTexCoord);
  vec3 ambient = ambientColor.rgb * ambientColor.a;

  vec3 final = vColor * diffuseColor.rgb ...