Open-Source Graphics Development with the Delta3D Game Engine Chris Osborn Lead Software Engineer Delta3D, MOVES Institute

Slides:



Advertisements
Similar presentations
Chapter 16 Graphical User Interfaces
Advertisements

1 SEDIT & S/REXX SEDIT and S/REXX Mainframe-caliber tools for UNIX Offered by Treehouse Software, Inc.
Chapter 16 Graphical User Interfaces John Keyser’s Modifications of Slides by Bjarne Stroustrup
Mainframe-caliber tools for UNIX Treehouse Software, Inc.
BY AHROORAN & CHRIS 3D Software. Blender Blender is a free open source software that is compatible with most operating systems for example GNU/Linux,
FireMonkey Deep Dive The Next Generation of Business Application Development.
UFCFSU-30-13D Technologies for the Web Creating and Updating a Graphical Heads-Up Display (HUD)
OCLC Online Computer Library Center CONTENTdm Developers Meeting ALA Midwinter Meeting Seattle, WA January 19 th, 2007 Claire Cocco, Product Manager Joe.
CSE 1302 Lecture 8 Inheritance Richard Gesick Figures from Deitel, “Visual C#”, Pearson.
A graphical user interface (GUI) is a pictorial interface to a program. A good GUI can make programs easier to use by providing them with a consistent.
Microsoft ASP.NET AJAX - AJAX as it has to be Presented by : Rana Vijayasimha Nalla CSCE Grad Student.
QGIS Matthew Rosencrans Tom DiLiberto. Outline What is QGIS? What can we do with it? What data can we work with?
Automated Testing Nathan Weiss April 23, Overview History of Testing Advantages to Automated Testing Types of Automated Testing Automated Testing.
An Overview of Qt - asankar1. Agenda About Qt –A brief intro of Qt Qt development tools –Tools used for building Qt application Qt Architecture –The underlying.
Open Office Writer Computer Training Programme Speaker Kumardeep Chaudhary 17th September 2014 (Wednesday)
Python Introduction.
CSE 380 – Computer Game Programming Scripting and Lua Lua.
Automated Production Report Generation with OPC DataHub Your Host Today: Colin Winchester, Director of Support Presenter: Win Worrall, Application Engineer.
The Delta3D Gaming and Simulation Engine: An Open Source Approach to Serious Games Curtis Conkey: NETC Rudy Darken: MOVES Institute Perry McDowell: MOVES.
Tools for Game Developmet Erik Harpstead Carnegie Mellon University 1.
SVG: The Past, Present and Future of Vector Graphics for the Web Patrick Dengler Senior Program Manager, Internet Explorer Team Member, W3C SVG Working.
JQuery 10/21. Today jQuery Some cool tools around the web JavaScript Libraries Drawing libraries HTML Frameworks Conventions.
Java Analysis Studio Status Update 12 May 2000 Altas Software Week Tony Johnson
11 A First Game Program Session Session Overview  Begin the creation of an arcade game  Learn software design techniques that apply to any form.
Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output.
UNDERSTANDING ADOBE FLASH. The Flash Interface  The flash interface provides you with:  A menu bar  Panels  A work area: stage.
2. Introduction to the Visual Studio.NET IDE. Chapter Outline Overview of the Visual Studio.NET IDE Overview of the Visual Studio.NET IDE Menu Bar and.
Embedded Software SKKU 17 1 Embedded Software Lab. Tizen v2.3 Input Service Framework.
Scalable Game Development William Roberts Senior Game Engineer
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Web Games Programming An Introduction to Unity 3D.
Grid Workflow Research update in SIG Dr. ZhenChun Huang Tsinghua Univ. NRSCC/RSGS/SIG Team Sep. 8th, 2004.
Generics and Collections. Introduction Generics New feature of J2SE 5.0 Provide compile-time type safety Catch invalid types at compile time Generic methods.
Selected Topics in Software Engineering - Distributed Software Development.
Manipulate Graphics Skill Area Lecture Overview Photoshop’s GUI Basic Function Basic Image Manipulation.
Sheep A Rigid Body Dynamics Engine François Beaune Thursday 7, 2002.
Creating Graphical User Interfaces (GUI’s) with MATLAB By Jeffrey A. Webb OSU Gateway Coalition Member.
Shader Study 이동현. Vision engine   Games Helldorado The Show Warlord.
Return to Outline Copyright © 2011 by Maribeth H. Price 3-1 Labeling and annotation.
Course Summary Xcode & iPhone Simulator
ASENT_CDM.PPT Component Data Manager Last revised 01/10/2011.
RealXtend vs. Second Life RealXtend overview  Main ambition Promote the evolution.
Imagine Creating Software Without a Single Line of Code!
Mantid Manipulation and Analysis Toolkit for ISIS data.
Delta3D: To Date Progress of the Delta3D Open Source Game Engine Erik Johnson, Technical Director.
Sega 500 Precaching in UT2003 Jeff “Ezeikeil” Giles
Inkscape - Open Source Software. About Inkscape - Free open-source software - Vector application GUI editor for personal computers - Cross-platform editor.
Rigid Body Dynamics: A Graphical Simulation Eugene Paik
IE Developer Tools Jonathan Seitel Program Manager.
Input Zhaohui Ning Aaron Cardwell Boonthanome Nouanesengsy.
Terra-Fusion Loads Tiles in real-time while panning Loads Tiles in real-time while panning Improved overall performance via: Improved overall performance.
OSSIM Technology Overview Mark Lucas. “Awesome” Open Source Software Image Map (OSSIM)
UFCFSU-30-13D Technologies for the Web An Introduction to Unity 3D.
Ori Hanegby Pixtazy Blog:
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
Course Summary Xcode & iPhone Simulator
Immediate Mode GUI – Theory and Example
In-situ Visualization using VisIt
Delta3D David Seagal CMPS 164 Spring 2009.
Ogre Overview.
Event Driven Programming
Animate Workspace. Objective % Utilize appropriate tools and methods to produce digital animation.
Lecture 22 Inheritance Richard Gesick.
GENERAL VIEW OF KRATOS MULTIPHYSICS
Software Installation
Blender API: Part 2: Game Engine
AGPL it is a free software License or a variation of the GPL License
ANIMATE WORKSPACE Stage Timeline Properties Panel Library Panel
Games Development 2 Tools Programming
Presentation transcript:

Open-Source Graphics Development with the Delta3D Game Engine Chris Osborn Lead Software Engineer Delta3D, MOVES Institute

Agenda Why Use Open-Source Software? Overview of the Delta3D Game Engine Building a Delta3D Application STAGE: the Simulation, Training, And Game Editor Building Actor Libraries for STAGE Questions

Why Use Open-Source Software? Often cross-platform... Windows, Linux, OSX, BSD, and more Always the lowest bid! No vendor lock-in Freedom to modify and enhance code Often has commercial-friendly licensing

Licensing The Delta3D libraries are licensed under the LGPL. Lesser GNU Public License Applications may use a LGPL library and retain a commercial license. In contrast to the GPL, where programs that use a GPL library automatically fall under the GPL themselves. The STAGE source code is licensed with the GPL.

What’s in Delta3D? Libraries dtUtil: General utilities dtCore: Core engine dtABC: Application Base Classes dtAudio: Audio dtChar: Characters dtGUI: CEGUI implementation dtHLA: HLA/RTI networking dtScript: Python scripts dtTerrain: Terrain framework dtDAL: Dynamic Actor Layer dtGame: GameManager dtActors: STAGE export of dtCore dtBSP: BSP Library dtInspector: FLTK debugging tool Utilities bspCompiler STAGE hlaStealthViewer psEditor: Particle Systems Viewer: Model Viewer

Architecture

Building a Delta3D Application Rapid, iterative development is good. Delta3D provides base classes to facilitate this style of development. Derive from dtABC::Application to instantly have a working program with a window, scene, mouse & keyboard callbacks, and an entry point into the frame loop.

dtABC::Application void Confg() Setup your scene here void KeyPressed() Keyboard callback void ButtonPressed() Mouse callback void PreFrame() Per-frame callback It is safe to add and remove objects from the scene here

Let’s take a look at a sample application.

STAGE The Simulation, Training, And Game Editor Assemble 3D scenes by placing “actors” and modifying their properties Contains core library of actors supporting almost all Delta3D classes Extensible plug-in interface for your own actors Intuitive user-interface Supports triggers and basic scripting

Let’s take a look at STAGE.

dtDAL & STAGE Architecture

Building an Actor Library 1. Create your Actor classes. 2. Wrap the classes using ActorProxies. 3. Export the ActorProxies in a shared library. 4. Load the library via a GUI in STAGE.

Creating Actors Here, Actor refers to a custom Delta3D classes that you wish to use in STAGE. Actor classes must have a base class of dtCore::DeltaDrawable. An Actor Property is any member variable you wish to manipulate in STAGE. For example, a collision shape. You must define Gets & Sets for all of the Actor Properties.

Let’s take a look at a custom Actor: the TessellationActor. It represents a flag-like object that can be assigned a texture.

Wrapping classes with ActorProxies An ActorProxy is a generic interface to Actor Properties. They allow STAGE to manipulate Actor without understanding the Actor type. Custom ActorProxies dervie from dtDAL::ActorProxy, dtDAL::TransformableActorProxy, etc. Often, you will need to wrap the Gets/Sets on the Actor itself to fit the interface required by STAGE. void BuildPropertyMap() Associates Properties with Gets/Sets.

Let’s take a look at the ActorProxy for our TessellationActor.

Exporting ActorProxies to a Library Finally, we must export the ActorProxy into a shared library that STAGE can use. On Windows, this would be a.dll. On Linux, the library is a.so. ActorProxy Libraries derive from dtDAL::ActorPluginRegistry. void RegisterActorTypes() Defines which Actors are in this library.

Let’s take a look at the library containing our TessellationActorProxy.

Loading a ActorProxy Library in STAGE Edit -> Map Libraries... -> Import Library Then you’ll be able to use your Actor in STAGE! Oh, and if you want to open your map at another time, make sure you custom library is somewhere in your PATH (Windows) or LD_LIBRARY_PATH (Linux).

Let’s go check out our new Actors in STAGE.

Loading a Map from an Application dtDAL::Project::GetInstance().GetMap(“MyMap”) This function returns a reference to the map with the name “MyMap”. void LoadMap( dtDAL::Map& map ) You can then pass that reference into this function, which loads the map into the default Scene in your application.

Let’s see how to load map with some good ol’ C++.

Finding Proxies in a Map dtDAL::Map::FindProxies(vector,name) vector is of type std::vector > name is of type std::string (wildcards allowed, i.e. *) This function will fill the vector with proxies that match the wildcard string name. Once you have the matching ActorProxies you can call ActorProxy::GetActor() to return the internal Actor. Then you should dynamic_cast the Actor to your Actor’s static type.

Let’s see how to find our TessellationActorProxy in a Map.

Thank you! Questions? Chris Osborn osb on the forums, come say hi!