Blog

Author: Created: Monday, May 24, 2010 RssIcon
The blog of the DigitalRune team.
By DigitalRune Team on Tuesday, September 28, 2010

GeneralWe have created class diagrams for the Microsoft XNA Framework 4.0 assemblies (including Content Pipeline). (If you are looking for XNA 3 class diagrams, take a look at this post: XNA 3.x Framework Class Diagrams).

A Few Notes

  • The class diagrams contain all types of the Microsoft XNA Framework 4.0.
  • We tried to arrange the class diagrams so that they can be viewed on a widescreen monitor.
  • Large namespaces, e.g. Microsoft.Xna.Framework.Graphics, are subdivided into several diagrams.
By DigitalRune Team on Tuesday, September 28, 2010

Our new physics library is nearly finished. Here is a compilation of a few tests:

By DigitalRune Team on Friday, September 17, 2010

When writing a 3D collision detection system you will most likely run into the following problem: Given a convex polygon (in 2D) or a convex polyhedron (in 3D), which of its vertices is the extreme point in a given direction. The problem is known as Support Mapping or Extremal Query. (The resulting vertex is called Support Point or Extreme Point.) Algorithms like GJK, EPA (Expanding Polytope Algorithm) or MPR (Minkowski Portal Refinement) rely heavily on extremal queries.

For simple polyhedra (small number of vertices) you can simply do an exhaustive search to find the extreme point in a given direction. However, for complex polyhedra you want to find a way to accelerate the query…

By DigitalRune Team on Monday, September 13, 2010

BunnyIn the last post we computed convex hulls for the XNA dude. Convex hulls are useful approximations for collision detection because many algorithms like GJK, EPA (Expanding Polytope Algorithm) or MPR (Minkowski Portal Refinement) can handle arbitrary convex objects. We also used simplified convex hulls. In this post we describe how we have implemented convex hull generation, convex hull simplification and skin width.

Convex Hull Computation

Actually, there are many convex hull algorithms. Here is a java applet showing different algorithms: http://www.cse.unsw.edu.au/~lambert/java/3d/hull.html

We started with incremental construction as described in this book:

By DigitalRune Team on Friday, September 10, 2010

DigitalRune Geometry supports automatic generation of bounding shapes and convex hulls. Using simple bounding shapes or convex hulls is more efficient than using arbitrary triangle meshes in game physics. In this post we will investigate different kinds of bounding shapes.

What's up dude?

Let's look at a practical example. Here is the Dude from the XNA Skinned Model Example:

XNA-Dude

The model has 13132 vertices and the skeleton has 60 bones.

Bounding Spheres

Here is the same model where a bounding sphere is computed for the vertices of each bone.

By DigitalRune Team on Wednesday, September 08, 2010

female-jogger-morro-bay-coleman-avenueSomewhere I read that characters in Quake-style first-person-shooter games have a speed of 10 m/s. To account for this unnatural speed the gravity is often set to a higher than normal value, like 16 m/s² (instead of 9,81 m/s²).

We haven't verified this statement, so let's put this in perspective (with collected notes from our internal knowledge base):

Walking

  • Normal passer-by on the street: 1,48 m/s (5,34 km/h)
By DigitalRune Team on Monday, September 06, 2010

JumpJumping Is Important!

Seriously. If I cannot jump in an action game, chances are high that I will not play it.

Do you remember that there once was a game type called "Jump'n'Run" – where according to the genre name jumping was 50% of the gameplay and the joy? Jumping on its own is fun and it is a natural way to show emotion. In World of Warcraft, for example, jumping is the simplest expression of feelings. – Typing emotes is way to complicated for me ;-)

Implementing Jumping

When implementing jumping an interesting question arises: How much control does the user have while jumping?

By DigitalRune Team on Saturday, August 28, 2010

Ok, this one is simple - but simple things matter. Take a block of wood, drill three holes and add 3 colored pencils. If you do it right, you might get something like this:

Cordy

By DigitalRune Team on Thursday, August 26, 2010

Yet another blog post about character controllers for 3D games, and this time we will talk about the actual implementation.

Kinematic Character Controller Using Discrete Collision Detection

Here is how the character controller in our Character Controller Example works:

Capsule Shape

The character is represented as a an upright capsule that does not rotate:

Character_Capsule

By DigitalRune Team on Friday, August 20, 2010

There are at least two ways to implement a character controller for a 3D game: Kinematic and Dynamic Character Controllers. In this post we discuss the difference and which solution is better.

A short reminder:
In this context a character controller is the piece of code that computes the movement of the player character in the game. It takes care that the user does not run through walls, can step up/down, jump etc. The character is often modeled as an upright capsule.

Related posts:  3D XNA Character Controller Example and Character Controller Requirements

Kinematic Character Controller

Article Collection

A collection of the most useful blog articles can be found here:

Article Collection
(on Documentation page
)