Tuesday, January 25, 2011

Recent Developments

Hey folks, been really busy lately with my "real life"(tm) so the engine hasn't gotten as much love as it could.  But, rest assured it'll be getting some soon enough.  I cleaned up most of the documentation, but still have to get to the physics engine for conversion to the new namespace.  I've also done some optimizations which were causing excessive repetition of calculation.  One example is the new convex hull collider component...  It was performing an early-out test using simple circle-to-circle testing to see if a collision could even occur.  When it was determined that they might, if the actual hulls were circular it would do the same work again.  Very wasteful...  Correcting this resulted in a small, but noticeable speedup.



I've also updated the box and circle collider components so that they have a simple and detailed operation mode.  Simple mode uses a boolean intersection test (colliding/not colliding), whereas detailed mode will perform a bounding circle test which allows us to create a collision data structure.  For box collider, it uses the longest half-axis length and box center to calculate the bounding circle.  It's not as accurate as convex hulls, but it allows an in-between modus operandi.  I also reworked the base collider component a bit to simplify all of this.  Overall result is just more features.

There have been other enhancements and fixes put into the engine which are helping to stabilize the platform.  One thing I wanted to note is that I'm working on creating some new point, vector, and rectangle classes.  I want  to create classes that are syntactically interchangeable with the Point2D, Vector2D, and Rectangle2D classes, but are also lightweight and don't use the Base class for inheritance.  I felt that there's a potential speedup there.  The goal is that if you need a complex operation provided by Point2D, you'd cast a Point2 to a Point2D and call its method.  But, since most of the time the only operations needed on points and vectors is simply adding, subtracting, or multiplying, those would be handled by the more streamlined classes.

Anyways, lots of stuff in the pipeline and now you know!

No comments:

Post a Comment