Monday, November 15, 2010

v2.0 Refactoring

In v2.0 I have moved everything related to the engine into the "/engine/" folder.  Components, render contexts, resource loaders, etc. have all been moved in there.  Since the files are considered "engine files", it makes a lot of sense to make them subfolders of "/engine/".  The folder structure is a lot cleaner since the files are now "hidden" in the engine.  These files were always intended to be the foundation classes for a game, and not supposed to be modified directly.

Putting them in "/engine/" sort of enforces that concept.  Doing so allows someone to see the separation between their game and the engine.  I know this will cause some confusion, especially for people who want to upgrade to v2.0 of the engine.  However, the only real change is that files which were previously loaded via:

Engine.include("/engine/...");

Will now need to be:

Engine.include("/...");

That and the index page will need to load the libraries from the "/engine/libs/" path now.  This change will not affect previous versions of the engine, so only if you're using v2.0 and beyond.

Friday, November 12, 2010

Abstracting the Sound Engine and Collisions

Currently The Render Engine uses SoundManager 2, which was a great solution at the time since the audio tags weren't formalized and Flash seemed like the only way to play sounds reliably.  Now that the spec is formal, and after analyzing SM2, I have decided that abstracting the sound system would be a good idea for v2.0.  This would allow a developer to plug in a different sound system if they have a better alternative.  Instead of loading SM2 and using its HTML5 capabilities (originally what was planned) I'm going to create a layer of abstraction which allows for just such a thing.

SM2 will continue to work, but will instead be a pluggable sound system.  The actual SoundLoader and Sound objects won't change, but instead the loader will interact with the abstraction.  This is all planned for v2.0 but should be in the repository soon.  I really want a lightweight sound system, and depending on SM2 is pretty heavyweight but it does have lots of nice options...

I played around a bit with getting the fundamentals in for the Separating Axis Theorem last night.  While The Render Engine will support any collision system, I've decided to provide both GJK and SAT.  GJK is mostly implemented, and SAT is getting there.  It'll be nice to have some choices when using the collision system.  I still think that the SpatialGrid will continue to be the broad-phase of choice, but I'm also considering BSP which would open up the engine for raycasting and such.

Wednesday, November 10, 2010

v1.5.2 is in the works...

I was working on Tutorial 7 last night and realized that the collision system wasn't acting appropriately.  It was yelling, getting really drunk, and generally being annoying... I kid, I kid.  There were some issues with arguments being out of order in the ColliderComponent subclasses of BoxColliderComponent and CircleColliderComponent.  Plus, CircleColliderComponent was doing way too much for simple circle-to-circle collision checking so I've moved the code into Math2D for now.  Also, I realized that I was depending on instance checks which can be costly when executed repeatedly.  I'm always looking for a win when it comes to getting some milliseconds back to use elsewhere.

Well, of course this means that I need to fix up some code in v1.5.1 and release a small upgrade.  v1.5.2 will include the fixes for the two subclasses and also have the implementation of collision masking.  Plus I'm trying to figure out what's going on with IE and FlashCanvas when run remotely.  That's going to be all that will change, since there really isn't anything new that's ready.  Plus, I need stuff for v2.0!

If anyone's interested, here's a link to Tutorial 7.  You can't download the tutorial code yet and the example isn't hooked up yet.  If you see anything crazy, let me know.  Oh, and if you're trying to get the tutorial working in v1.5.1... well, you're gonna have to wait for v1.5.2.

Sunday, November 7, 2010

Update to v1.5.1

After releasing v1.5 of The Render Engine we found some bugs which were quite critical.  Internet Explorer support was not working and some of the tutorials were faltering.  After some quick debugging, we've gotten these working and have released an update to version 1.5.1.

Version 1.5 is unsupported and should be replaced with v1.5.1 instead.

Saturday, November 6, 2010

The Render Engine v1.5 has been released!

The v1.5 incremental release of The Render Engine has been tagged!  This version includes the Box2d Physics Engine and two examples of its usage.  Additionally, this release has numerous bug fixes and enhancements to the engine as a whole.  The API documentation has been updated and is available, along with the full and minified versions of the engine.

Now I can start to focus on v2.0 again...

Tuesday, November 2, 2010

v1.5 Ragdoll Demo

It's almost complete, just working out the kinks (no pun intended) in the joints.  Wanted to give you all a peek at what's coming with the v1.5 release...

http://renderengine.googlecode.com/svn/branches/v1.5/demos/physics2/index.html

You can't do anything with it, except restart it and watch the doll fall again, but it's almost there.  I also have the FlashCanvas support working in IE prior to IE9.  It's certainly not very fast since it is emulation using Flash, but at least all of the demos are beginning to work.

Asteroids demo:
http://renderengine.googlecode.com/svn/branches/v1.5/demos/vector/index.html

New physics demo:
http://renderengine.googlecode.com/svn/branches/v1.5/demos/physics/index.html

I'm still hoping for an end-of-week release.  My fingers are crossed!

Monday, November 1, 2010

v1.5 Delayed

Sorry to be the harbinger of bad news, but the release of the 1.5 update will be delayed.  There are a few things that haven't been fully tested and I want to make sure that everything is solid before releasing the update.  I apologize for the late notice, but I didn't want people waiting around for something that isn't going to happen.  I don't have a specific date yet, but I'm feeling pretty strongly about it happening before the end of the week.