Tension is rising…

Flattr this!

Have you ever tried hammering a nail into a wall using nothing but a rock, with both hands tied firmly behind your back?
That’s just about how it feels trying to do any 3D operations in XNA that are even remotely advanced. I have now tried for several months to set up skeletal animation, and am now in a situation where I’ve discovered that XNA even has a built-in function for parts of what I’ve been trying to do (transforming a set of vertices based on a bone’s location in 3D space), but that this is completely useless so long as I am unable to position the skeleton’s bones correctly in 3D space.
My current theory is that the bones’ locations (which are made up of a rotation and a translation) are stored as OpenGL-native coordinates. Vitaboy (the rendering system used by The Sims and The Sims Online) was originally written in Direct3D, but it isn’t unthinkable that it was ported to OpenGL for TSO. I have tried every possible matrix and vector based operation on the bones’ translations and rotations that I could possibly think of, but nothing seems to help.
I have been putting this off for what feels as long as possible, and I’m giving myself another week, but if I haven’t made any significant progress within that timeframe I’m switching to OpenGL.
I have already tried SFML (Simple Fast Multimedia Library – an engine that allows you to use OpenGL calls and combine them with calls to the engine), but it applies some kind of funky custom world matrix that fucks up animation and rendering.
The reason I’ve been putting this off for so long is that I know that rewriting the GUI-system in OpenGL is going to take time and be a learning process all of its own, but my current consensus is that it’ll take less time than trying to fight with XNA in order to make it do something it obviously wasn’t meant to do.
I am allowing comments on this post in the hope that I can get some bright ideas and/or support.

8 thoughts on “Tension is rising…

  1. Hi my name is Anderson, and I’m following the project a few months and why you are implementing the game if you can make an emulator? It would be much more quick and easy!

    • Making an emulator, at this point, is unfortunately next to impossible. Realistically, it would require you to disassemble more or less all the DLLs of the game that deals with networking. While this is possible due to the way the DLLs are implemented, it would be extremely timeconsuming, probably more so than rebuilding the game.

  2. Being a designer and not a coder, I cannot give coding support — but I completely support and applaud the project you are attempting.

    Thank you for keeping us updated after that brief silence.

  3. Both games use DirectDraw for 3D. I’m not even kidding. Do a hex dump of TS1, TSO, and SimShow, and you’ll find they don’t link with opengl32.dll or d3d.dll, but with ddraw.dll. According to Wikipedia, “DirectDraw is a 2D API. That is, it contains commands for 2D rendering and does not support 3D hardware acceleration. A programmer could use DirectDraw to draw 3D graphics, but the rendering would be slow compared to an API such as Direct3D which does support 3D hardware acceleration.”

Leave a Reply

Your email address will not be published. Required fields are marked *