I spent 4.5 hours on the phone with my partner, and we accomplished quite a bit in terms of prioritizing & tightening up the design. This game is going to rock.
It's very important to us that the RPG elements of the game are very clearly identified to the player, with enough information to make intelligent tradeoffs. For instance, when you are evaluating a weapon, it will tell you not just how much damage the weapon could do, but how much damage YOU could do with the weapon, based on your attributes and skills.
On the technical side, I finished integrating the capsule code, which fixed several collision problems that been lingering, due to having a mix of collision shapes. For instance, since ellipsoid->ellipsoid collision is so hard, I treated entity->entity collisions as sphere->sphere. This didn't work so well - causing your player to rebound off of enemies in a jerky manner due to the radius mismatches of the two shapes.
Now I use capsules for both entity->world and entity->entity collisions, so that sorted out nicely.
Here is a shot of the capsules in game :
Last night I reworked the collision code, taking out the old Physics::Particle class that assumed things were a sphere, and changed it to use the new Collidable interface, with concrete members for Sphere, Capsule and Triangle. Soon to come are Lozenges, thanks to my coding partner, and also OOBBs down the line.
Today I will finally add the feature that I have been dying to do for weeks. One of the main reasons to re-visit the collision system was to support physical entities like throwing knives, arrows, etc. in a reasonable way. Right now we have laser blasts, which are done through the particle system, where physics is handled via raycasts. With more substantial objects, I wanted to be able to support rotation. Also only physical entites can cast a shadow.
My goal is to have the ability to throw a spinning knife at a wall, and have it either stick, or give off sparks and tumble away if it collides hilt-first. That will be sooo cool!
The main things needed to handle this are to add the angular momentum code into the collidable system for capsules and spheres, and to extend the entity properties so that each entity can be assigned a certain collidable shape at design time.
I just added the ability to set the collision shape via the csv entity data file. Here is a shot of two entities using capsules, and a skull object using a sphere.