What is Simulation Core?
(Last Update - Jan 17, 2011)
What is it?
The Simulation Core repository is a library of features often required by modern 3D simulations. It is designed to help new Modeling and Simulation projects get up and running quickly. SimCore is a set of actors, components, and utilities that are designed to work in a networked simulation environment using either HLA (dtHLAGM) or client/server (dtNetGM). SimCore is a C++ development baseline that sits on top of Delta3D - it is targeted at M&S developers who don't want to build a complete framework from scratch.
Is it free? Can I get access?
SimCore is a free, open source project with no runtimes or licensing fees, just like Delta3D. As with Delta3D, the SimCore libraries are released under the LGPL license. Most of the executables are released using the MIT license.
Who develops SimCore?
SimCore is developed primarily by Alion Science and Techology. The first version of SimCore was developed as part of the Deployable Virtual Training Environment (DVTE) project for USMC which started in 2006. Although Alion is still the primary developer of SimCore, it is now used by a number of other companies and organizations across the M&S community. Contributions have been accepted by a variety of developers from those organizations. If you have a change or contribution to make to SimCore, please post about it on the Delta3D Forums.
What features does it provide?
A few of the most prominent features are highlighted below. Note that some SimCore features are provided as higher level abstractions on top of underlying behaviors that are provided by Delta3D or OSG.
- Stealth Viewer
- After Action Review - Record and Playback (integrated)
- Entities - platforms, characters, vehicles (see below)
- HLA and Client/Server Networking (integrated)
- Dead Reckoning and Ground Clamping (integrated)
- Large Terrain Support
- Dynamic Lights
- Weather Visualization
- Munitions - Detonations, direct and indirect fire, particle effects, tracers, physically modeled bullets
- Articulated Parts
- Open GL shader examples
- Asset repository - includes a number of Open GL Shader, particle systems, 3D models, sounds, textures, and terrains
- Heads Up Display example
- Coordinate Conversion (integrated)
- Camera Motion Models
- XML Configuration
- User Tools - binoculars, compass, help
- Driver Demo using HLA and dtAgeiaPhysX (I/ITSEC 2008 Tutorial)
- Net Demo using Client/Server and dtPhysics (I/ITSEC 2009 Tutorial)
For more information about SimCore features, see one of the following: A) (short) I/ITSEC 2009 SimCore 1 Page Briefing or B) (long) I/ITSEC 2008 SimCore Tutorial or C) (long) I/ITSEC 2009 Network Tutorial.
I still don't understand what SimCore is. How is it different from Delta3D?
The primary strength of SimCore is that it has all the things needed to get an M&S simulation up and running. Open Scene Graph (OSG) provides the basic drawing mechanics (scene graphs, cameras, file formats) and Delta3D provides the basic game development structure (actors, game management, audio). But, if you want to stand up an M&S project, you will need a strong infrastructure for Entities.
Entities are the guts of an M&S project. They need to have a cohesive structure that understands damage states, 3D models, publish rates, and dead reckoning for both local and remote vehicles. Local vehicles need to understand how to deal with physics and more importantly, how to take damage from various types of weapons, both direct and indirect. Entities need to understand things like being on fire, smoking, or leaving missile trails.
SimCore also provides an entire system around munitions. Munitions can be complex and it makes up a significant part of SimCore. They understand what they are impacting and how to publish both fire (shooting) and detonation (impacting) messages. The munition system works with vehicles so everything understands how to impart damage from direct or indirect fire. Each bullet, grenade, etc can be physically modeled but also knows how to combine shots together when publishing on the network.
SimCore also has a complex weather system with actors and properties. It supports rain, snow, time of day, sunsets, sunrise, etc. It has a system for managing dynamic lights in the scene for things like falling flares, weapon flashes, vehicle headlights, burning vehicles, and even tracers (itís cool when the red tracer arcs through buildings). And it has direct support for features like large terrains and ocean rendering.
SimCore also comes with a completely functional and mature Stealth Viewer. Thatís the application that instructors use to view an entire networked simulation. It allows you to search for and attach to entities. It has a complete system for recording and playing back your simulations, without exiting the app. And, it supports both Client/Server and HLA connections. Some customers use SimCore for the Stealth Viewer alone - with no intent to ever develop a custom M&S project.
How do I get Simulation Core?
SimCore is publicly available from Source Forge at the following SVN repository: https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/SimulationCore/trunk.
Are There Any Tutorials on Simulation Core?
Yes, there are quite a few available on the Delta3D Tutorials Page. The most recent full tutorial was IITSEC 2009 - Building Networked Games with Delta3D Simulation Core.
Which version should I use?
Does SimCore have an official release version?
At this time, the most stable version of SimCore is tied to the official Delta3D 2.4 release. That Delta was tested extensively and the SimCore was kept in sync with it for many months. For Delta3D, the SVN branch is https://delta3d.svn.sourceforge.net/svnroot/delta3d/branches/RB-2.4; for dtPhysics, https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/dtPhysics/branches/RB-2.4; for dtAgeiaPhysX, https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/dtAgeiaPhysX/branches/RB-2.4; and for SimCore, https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/SimulationCore/branches/RB-2.4. SimCore is now primarily targeted to work against the Delta3D trunk. If you require a branch, the 2.4 branch is still the best sync'ed version. Previous users may have had good experience with the version tied to the Delta3D official release ver 2.3, the SimCore version is 1559 and the dtAgeiaPhysX version is 1546 (-thanks bugs). To use that, you are still required to pull down Delta3D source code and build it yourself.
What is up with the physics?
SimCore supports two different physics libraries: 1) dtAgeiaPhysX and 2) dtPhysics. To get it to work, you must have one of these. As of mid-2010, dtAgeiaPhysX is no longer supported. Previously, you could chose, but anything after the 2.4 is not guaranteed to be 100% correct with PhysX(tm). You can still configure this with cmake.
In 2009-2010, there was significant effort to move away from being tightly coupled directly to PhysX. To this end, we built a library, called dtPhysics. dtPhysics is publicly available as part of the Delta3D Extras repository on Source Forge at the following SVN repository: https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/dtPhysics/trunk. dtPhysics is built upon the Physics Abstraction Layer (PAL) Open Source project. PAL is itself a generic wrapper for other physics engines. It allows you to write mostly engine agnostic code that will work with any number of physics engines including PhysX, Bullet, and ODE. When you setup your CMake for SimCore, it will pick dtPhysics by default. dtPhysics and dtAgeiaPhysX have similar goals and share some common architectural aspects.
As part of the early development of SimCore, Alion obtained a license with Ageia (now NVidia) that allowed us to integrate Delta3D with NVidia PhysX. The license allows us to distribute the runtime installer of PhysX as part of the Delta3D PhysX integration (dtAgeiaPhysX). At the time of this writing, we are still one of the only open source projects that has such an agreement. To use PhysX, you will need version 2.8.1. dtAgeiaPhysX is publicly available as part of the Delta3D Extras repository on Source Forge at the following SVN repository: https://delta3d-extras.svn.sourceforge.net/svnroot/delta3d-extras/dtAgeiaPhysX/trunk. For more information about the integration with NVidia's PhysX library (dtPhysX), see NVidia PhysX Integration with Delta3D Released to Public.
Unless you have VERY strong reasons to do so, you should plan to use dtPhysics. dtPhysics is newer, but is now more stable and is guaranteed to work in the trunk. Besides, dtAgeiaPhysX is no longer officially supported.
Are there any demo apps?
There are 2 demonstration applications provided with SimCore: NetDemo (2009) and DriverDemo (2008). These demos were developed as part of the tutorial presentations for the I/ITSEC Modeling and Simulation Conference. At this time, the 2 apps are setup to use different networking layers. DriverDemo was developed for the 2008 tutorial and uses HLA networking (dtHLAGM). Netdemo was developed for the 2009 tutorial and uses Client/Server networking (dtNetGM). At various times, both have been connected to the Stealth Viewer.
How do I build SimCore?
At this time, getting SimCore setup, compiled, and running is probably the hardest part of using SimCore. Many users have expressed frustration about this process and there are plans in place to address this in the future. In the meantime, this process will take you some time - please plan accordingly and be patient. Remember, SimCore is Open Source project and community contributions and improvements are always welcome.
Below are some high level tips that may help.
- Dependencies - you need CMake (2.6 preferred), SVN (or Tortoise), and QT (4.4.3).
- If HLA - you will need your own RTI. Users have tested against RTI-S, Mak's RTI, and CERTI.
- If Client/Server - dependencies are provided with Delta3D
- runVisualStudio.bat - For Windows developers, SimCore has a utility batch file to make things easier. Edit this file to match your directory structure and use it to launch ALL of your Visual Studios from then on. This one .bat file can be used for Delta3D, physics, and any other VS projects. It should reduce the burden of setting environment variables.
- Boost - At this time, the 2.3 dependencies no longer include Delta3D\ext\inc\boost. So, you need to either a) download and build boost yourself or b) find the older Delta3D dependencies that included boost and copy over the Delta3D\ext\inc\boost directory.
- Get Delta3D from Subversion (from head)
- Get dtAgeiaPhysX (or dtPhysics) from Subversion (from head)
- Get SimulationCore from Subversion (from head)
- Download and compile QT version 4.4.3.
- Install the Delta3D dependencies from the Delta3D Downloads page and solve the boost issue (above)
- Configure Delta3D with CMake and Build it
- Configure [dtAgeiaPhysX or dtPhysics] with CMake and Build it
- Configure SimCore with CMake and Build it
- Run DriverDemo or Netdemo to verify
Some folks have heard about the DVTE repository from long ago. This repository was the original repository where the Simulation Core was started. When Simulation Core matured, the library was approved for release and was moved to its current home on Source Forge (see above). The DVTE repository does still exist, but is mostly just a shell library that houses a few custom behaviors as well as a model library. This repository is considered GOTS and requires official US government program sponsorship to gain access. Note - this repository should NOT be needed by most users.
Anything else I should know?
Please remember that Delta3D and Simulation Core are open source projects. The best information is usually available from the Tutorials Page or the Delta3D Forums. Both projects rely heavily on community contributions - submissions, not $$$. Both projects are continually improving and can always be made better. If you have a change you would like to submit, please get involved in the forums and let us know. Also, if you have a project that uses either repository and would like some free publicity, feel free to submit a short write up for the Projects Page.
What does it look like?
Stealth Viewer In Action
HMMWV Vehicle Simulator Written Using SimCore
Ocean Visualization in the Stealth Viewer
Characters in SimCore
DriverDemo - Connected and observed in Stealth Viewer via HLA
NetDemo Screen shot