In today’s post we’re going to discuss the technology we use to create our real time 3D simulations, and what we think of these technologies. This inside look should also give you a good idea of what to expect from our products.
Easy and rapid programming: Microsoft .NET
As we explain in our introduction post on our product, one of our goals is to offer you a product that is easy to use, to enable any developer to benefit from real time 3D simulation technologies. As developer ourselves, we already had an idea of what “ease of use” can mean for a developer, and that led us quite immediately to the choice of Microsoft .NET
As we wanted performance and quality 3D rendering we didn’t had many option: standard C++ or .NET (java was clearly not an option). Then the choice was easy: .NET had two major advantages, the first was for our team: .NET meant that we could develop more rapidly and efficiently (and Visual Studio is an awesome IDE). The second and probably most important advantage is simply that it would be the same for our customers! Plus they can choose their programming language in the variety that the .NET framework offers (as for us, we use and recommend C#).
Graphic engine: Microsoft XNA
The choice of XNA as a graphic engine came quite naturally too, it’s using direct X 9.0 guaranteeing performance and nice 3D rendering and it’s on .NET. Plus we liked their asset managing utility. We’ve tested many other 3D engines in many programming languages before, and XNA is, for now, our choice.
Editors interface: Microsoft WPF
An important part of the “ease of use” (or “simply spirit” as we like to call it) that we wanted in our products meant that we had to design efficient user interfaces for our editors. That led us to WPF, mainly because we liked the freedom we had to design our interface combined to the ease of use of the technology.
Software interaction: Microsoft CCR/DSS
We first discovered Microsoft CCR/DSS when we started to use Microsoft Robotics Developer Studio, and we just love this technology. We had already played a bit with the concept of “service oriented” or “component oriented” architecture before and DSS is a really nice implementation of these concepts, while CCR offers a very smart way to solve concurrency and coordination problems. We’ll discuss more about this in a dedicated post, but to sum up the main advantage of this technology for us it to enable our 3D simulation to be really easy to interface with any other software application.
Physic engine: the multi-engine option
As you’ll have understood if you watched our first demo of our UAV simulation, physic realism is really important in our product. So we’ve had a look at all the different physic engine available on the market (PhysX, Newton, ODE, Havok, and a few others) and after an in depth review, we decided not to choose. In fact these physic engines have not been created for the same purpose, and they have different strong points. Some have very good performance with a lot of objects, some are really focusing on the accuracy of the movements, others are designed for fast moving objects… and we felt that the choice of the physic engine really depended on the type of application. So we’ve built the SimplyDynamics, a software library that gives you the opportunity to choose the physic engine you’re application is using. And as it might not be evident which one to choose, you can make this choice at the very last moment: at run time!
How we got it all for free: Microsoft Bizspark program
Finally another thing we like about the technologies and the tools we use is that we’ve access to it for free. We’re member of a really cool program called Microsoft Bizspark that helps innovating startup by providing access to Microsoft software, support and visibility. We had already chosen Microsoft technologies for our development because it answered really well our needs, but Bizspark membership clearly made things easier.