Intro to JME

Download Report

Transcript Intro to JME

Intro to Java Monkey Engine Download JME SDK @ http://hub.jmonkeyengine.org/down loads/

JME Technology

• JME stands for the java monkey engine: a game engine written in java and built upon LWJGL (light-weight java GL -- a java binding for OpenGL) – – – OpenGL is a platform independent library for 2D and 3D graphics. For our purposes, OpenGL is far too low-level for the kinds of graphics programming we'd like to accomplish • OpenGL concerns itself with fast, often hardware accelerated, rendering of basic geometric primitives) We appeal to a game engine to provide additional high-level functionality • Note: JME provides audio capability via OpenAL support. JME supports Ogg Vorbis (.ogg) and uncompressed PCM Wave (.wav) formats. – We can use Audicity ( http://audacity.sourceforge.net/) to convert other formats to these

Game-Level Objects

Main Application (SimpleApplication) - A base class from which the custom game inherits – Provides method hooks (i.e., callbacks) to initialize a game (simpleInitApp) update game (simpleUpdate) objects and re-display (simpleRender) objects.

InputManager - A class to manage all device input (e.g., keyboard, mouse, joystick) and present that input to the application for handling.

Display - A class to insulate the game from the device specific characteristics of platform on which the game is being run. The Display also encapsulates the features of window management.

Renderer - An abstraction of the OpenGL state and rendering pipeline as discussed in class. OpenGL is a state-driven system. That is, you define a graphics state as a set of rendering attributes and then send a sequence of geometric data to the renderer which then is drawn subject to the current attributes.

– The three classes above are referred collectively as the JME context.

The Main Game Loop

Game-Level Objects (cont)

Main Application (SimpleApplication) - A base class from which the custom game inherits – Scene Graph - A class to manage the objects in the scene – Camera - A class to encapsulate the eye position and its attributes (e.g., field of view, depth of field, up vector, etc.).

– Math Library for 3D Graphics (functions to handle vectors, matrices, geometric data, collisions, etc.).

– Model Importers - A fully featured game engine provides for importing mesh models from any of several different modeling programs.

The Scene Graph

• • • A grouping of Nodes in a tree hierarchy according (most of the time) to spatial location.

Spatially because … – Game objects are typically located by location – Allows for fast culling – Tree structure natural for many game objects – Easy to express, create tools for this data structure Spatial is an abstract class allowing uniform treatment of: – Node (internal, invisible, grouping class, transformable) – Geometry (leaf, visible—mesh and material— transformable).

Beginning a Project

• • • In the jMonkeyEngine SDK: Choose File→New Project… from the main menu.

In the New Project wizard, select the template JME3→Basic Game. Click Next.

– – Specify a project name, e.g. "HelloWorldTutorial" Specify a path where to store your new project, e.g. a jMonkeyProjects directory in your home directory.

Click Finish.

Understanding the JME App Structure

public class Main extends SimpleApplication { } public static void main(String[] args) { Main app = new Main(); app.start();

Understanding the JME App Structure

public class Main extends SimpleApplication { .

@Override public void simpleInitApp() { Box b = new Box(Vector3f.ZERO, 1, 1, 1); Geometry geom = new Geometry("Box", b); Material mat = new Material(assetManager, “…"); mat.setColor("Color", ColorRGBA.Blue); geom.setMaterial(mat); } rootNode.attachChild(geom);

Understanding the JME App Structure

public class Main extends SimpleApplication { } @Override public void simpleUpdate(float tpf) { //TODO: add update code } } @Override public void simpleRender(RenderManager rm) { //TODO: add render code

Typical Game Objects

• Spatial: Spatials are abstract and exist to allow handling of the Nodes and Geometry uniformly.

– Node (internal, i.e. has children) contains transformations and links to children (no Mesh or Material--invisible) – Geometry (leaf) contains transformations and visible characteristics, i.e., Mesh and Material

Typical Game Objects

– Geometry (leaf) contains transformations and visible characteristics, i.e., Mesh and Material • Mesh • Material – Color (Ambient, Diffuse, Emmisive, Specular) - Base color of an object that is not influenced by a color map – Texture » Color Map » Specular Map » Bump Map (Height Map, Normal Map)

Typical Game Objects

Distinguished Spatials

– rootNode – Camera

Getting Started

• • One of the better ways to learn what you can do in JME is to: Examine the JME Tests Complete the JME "Tutorial Series (

http://hub.jmonkeyengine.org/wiki/doku.ph

p/jme3:beginner)