Game Programming

39
Game Programming Loading assets, Materials, Lighting & Shading, Camera, Game Loop, Input Handling Eriq Muhammad Adams J. [email protected] Informatics Engineering University of Brawijaya

description

Game Programming. Loading assets, Materials, Lighting & Shading, Camera, Game Loop , Input Handling. Informatics Engineering University of Brawijaya. Eriq Muhammad Adams J. [email protected]. Agenda. Loading assets Materials Lighting & Shading Camera Game Loop Input Handling - PowerPoint PPT Presentation

Transcript of Game Programming

Page 1: Game Programming

Game Programming

Loading assets, Materials, Lighting & Shading, Camera, Game Loop,

Input Handling

Eriq Muhammad Adams [email protected]

Informatics EngineeringUniversity of Brawijaya

Page 2: Game Programming

Loading assets Materials Lighting & Shading Camera Game Loop Input Handling Sky Demo

Agenda

Page 3: Game Programming

JME3 comes with a handy asset manager that helps you keep your assets structured. assets/Interface/ assets/MatDefs/ assets/Materials/ assets/Models/ assets/Scenes/ assets/Shaders/ assets/Sounds/ assets/Textures/ build.xml src/... dist/...

Loading Assets

Page 4: Game Programming

Loading Textures

Loading Assets (cont.)

Add box image texture

“BrickWall.jpg”

Page 5: Game Programming

Loading Texts and Fonts

Loading Assets (cont.)

Load default

font

Page 6: Game Programming

Loading an Ogre XML Model

Loading Assets (cont.)

Load Ogre Model

Page 7: Game Programming

Loading Assets From Custom Paths

Loading Assets (cont.)

Load Local Zip

File

Load Zip File

via HTTP

Page 8: Game Programming

Load models with materials

Load models without materials

Loading Assets (cont.)Ogre XML

(.mesh.xml) and JME Binary (.j3o) Model included with Materials

included

.obj model didn’t came

with materials

Page 9: Game Programming

Load Ogre Scene

How to export OgreXML scenes from Blender to JME:

https://docs.google.com/fileview?id=0B9hhZie2D-fENDBlZDU5MzgtNzlkYi00YmQzLTliNTQtNzZhYTJhYjEzNWNk&hl=en

Loading Assets (cont.)

Load ogre

scene

Page 10: Game Programming

Default Materials Definition (in jme/core-data/Common)

Materials

Page 11: Game Programming

Simple Unshaded Texture

Materials (cont.)

Create Unshade

d Material

Page 12: Game Programming

Transparent Unshaded Texture

Materials (cont.)

Create Unshade

d Material

Activate Transparen

cy

Page 13: Game Programming

You have to use lit material to get nice looks. n a lit material, the standard texture layer is referred to as Diffuse Map, any material can have it. A lit material can additionally have lighting effects such as Shininess used together with the Specular Map layer, and even a realistically bumpy or cracked surface with help of the Normal Map layer.

Materials (cont.)

Page 14: Game Programming

Materials (cont.)

Page 15: Game Programming

Materials (cont.)

Create Lighting Material

Set Diffuse Map

Texture

Set Normal Map

TextureSet Shininess

Page 16: Game Programming

JME 3 has three types of light : point light, ambient light, directional light, and spot light.

A PointLight has a location and shines from there in all directions as far as its radius reaches, like a lamp. The light intensity decreases with increased distance from the light source.

Lighting & Shading

Create Point Light

Page 17: Game Programming

A DirectionalLight has no position, only a direction. It is considered “infinitely” far away and sends out parallel beams of light. It can cast shadows. You typically use it to simulate sun light.

Lighting and Shading (cont.)

Create Directional Light

Page 18: Game Programming

An AmbientLight influences the brightness of the whole scene globally. It has no direction and no location, and does not cast any shadow.

SpotLight is WIP (Work In Progress) …

Lighting and Shading (cont.)

Create Ambient

Light

Page 19: Game Programming

BasicShadowRenderer, Use the Shadow Renderer to make textured scene nodes cast and receive shadows.

http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/light/TestShadow.java

Lighting and Shading (cont.)

Switch Off default Shadow and Add

BasicShadowRenderer Scene Processor

Page 20: Game Programming

Then you need set shadows for every scene that need shadows

Lighting and Shading (cont.)

Page 21: Game Programming

PSSM shadow renderer, The PSSM shadow renderer can cast real-time shadows on curved surfaces. To activate it, add a jME SceneProcessor named com.jme3.shadow.PssmShadowRenderer to the viewPort

Lighting and Shading (cont.)

Page 22: Game Programming

You can set the following properties on the pssmRenderer object: setDirection(Vector3f) – the direction of the light setLambda(0.65f) – Factor to use to reduce the split size setShadowIntensity(0.7f) – shadow darkness (1 black, 0

invisible) setShadowZextend() – distance how far away from

camera shadows will still be computed Then you need set shadows for every scene that need

shadows http://code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/test/jme3test/light/TestPssmShado

w.java

Lighting and Shading (cont.)

Page 23: Game Programming

JME 3 have 3 types of built-in camera : Default Camera, FlyBy Camera, Chase Camera.

Default Camera, The default com.jme3.renderer.Camera object is cam in com.jme3.app.Application. Has default settings.

Width and height are set to the current Application's settings.getWidth() and settings.getHeight() values.

Frustum Perspective: Frame of view angle of 45° along the Y axis Aspect ratio of width divided by height Near view plane of 1 wu Far view plane of 1000 wu Start location at (0f, 0f, 10f). Start direction is looking at the origin.

Camera

Page 24: Game Programming

Camera (cont.)

Page 25: Game Programming

FlyBy Camera, The flyby camera is an extension of the default camera in com.jme3.app.SimpleApplication. It is preconfigured to respond to the WASD keys for walking forwards and backwards, and for strafing to the sides. Move the mouse to rotate the camera, scroll the mouse wheel for zooming in or out. The QZ keys raise or lower the camera.

Camera (cont.)

Page 26: Game Programming

Camera (cont.)

Page 27: Game Programming

Chase Camera, jME3 also supports a Chase Cam that can follow a moving target Spatial (com.jme3.input.ChaseCamera).

Camera (cont.)

Page 28: Game Programming

Multiple Camera Views, You can split the screen and look into the 3D scene from different camera angles at the same time. In this example, we create four views (2×2) with the same aspect ratio as the normal view, but half the size.

Camera (cont.)

Page 29: Game Programming

Setup first view

Setup 2nd – 4th view

Camera (cont.)

Page 30: Game Programming

Resizing and positioning viewport.

See TestMultiViews.java

Camera (cont.)

Page 31: Game Programming

1. Initialization (simpleInit())2. If exit is requested, then cleanup and destroy3. Input handling (listeners)4. Update game state

Application States update User update (simpleUpdate() method) Entity logical update (Custom Controls)

5. render Application States rendering Scene rendering User rendering (simpleRender() method)

6. Repeat (goto 2)

Game Loop

Page 32: Game Programming

3 types input handling that JME 3 support : Keyboard, Mouse, and Joystick.

Type of Trigger :

Input Handling

Page 33: Game Programming

Input Handling (cont.)

Page 34: Game Programming

Add trigger mapping

Input Handling (cont.)

One trigger

One Action

Multiple Trigger

One Action

Page 35: Game Programming

Create Listeners, JME 3 has 2 type of listeners :com.jme3.input.controls.AnalogListener

Use for continuous and gradual actions.Examples: Walk, run, rotate, accelerate vehicle, strafe, (semi-)automatic weapon shot

JME gives you access to:the name of the triggered action.a gradual value between 0-9 how long the key has been pressed.

com.jme3.input.controls.ActionListenerUse for absolute “pressed or released?”, “on or off?” actions.

Examples: Pause/unpause, a rifle or revolver shot, jump, click to select.JME gives you access to:

the name of the triggered action.a boolean whether the key is still pressed or has just been released.

Input Handling (cont.)

Page 36: Game Programming

Register Mappings to Listeners, To activate the mappings, you must register them to the Listener.

Input Handling (cont.)

Page 37: Game Programming

Implements Action

Input Handling (cont.)

Page 38: Game Programming

You can use any Node as sky, even complex sets of geometries and quads with animated clouds, blinking stars, city skylines, etc. But, if you want a simple method use SkyFactory in JME 3.

Sky

To Create Sky Box set sphere boolean value

to false

Page 39: Game Programming

DemoScene.zip

Demo