1 / 14

Intro to Java Monkey Engine

Intro to Java Monkey Engine. Download JME SDK @ http ://hub.jmonkeyengine.org/downloads /. 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 )

nodin
Download Presentation

Intro to Java Monkey Engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 OggVorbis (.ogg) and uncompressed PCM Wave (.wav) formats. • We can use Audicity (http://audacity.sourceforge.net/)to convert other formats to these

  3. 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.

  4. The Main Game Loop

  5. 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.

  6. 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).

  7. 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.

  8. Understanding the JME App Structure public class Main extends SimpleApplication{ public static void main(String[] args) { Main app = new Main(); app.start(); }

  9. 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); }

  10. Understanding the JME App Structure public class Main extends SimpleApplication { @Override public void simpleUpdate(float tpf) { //TODO: add update code } @Override public void simpleRender(RenderManagerrm) { //TODO: add render code } }

  11. 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

  12. 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)

  13. Typical Game Objects • Distinguished Spatials • rootNode • Camera

  14. 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.php/jme3:beginner)

More Related