• Register

You will be able to play TSO once again, free forever! The Sims Online existed from late 2002 to 2008 and was a popular social MMO way ahead of it's time. When it came out in 2002, most areas of the world were still in the age of dial-up. Lag turned away many and the idea of paying a monthly fee to play a game was common only to a small group of gamers, as this was before MMORPG's really became mainstream. These issues along with other factors resulted in TSO being seen by the media as a total flop. TSORestoration.com was founded by Ghost and Afr0 and went public on October 22, 2010 and has seen an incredible growth of new members. We're a team of talented individuals who are working hard to bring back the game that we all loved, The Sims Online. We do this with no financial incentive and have plans to eventually provide the capability for you too one day be able to have your own server!

Post news Report RSS A Quick Preview of the Isometric Engine

Here is a brief overview of how the Isometric Engine will work graphically.

Posted by on

In the isometric engine, everything but the walls (since we haven't actually stored them in their 4 isometric views) and the Sims is drawn on top of each other, just by a simple stream copy from the source bitmap to the screen, starting from the back (the tile farthest away in space, meaning, the tile highest up) and rendering each object up to the front. Walls are the only things which we have to transform before displaying: we simply need to skew them before drawing them on to the walls.

As far as "isometry" goes, an isometric view is where the horizontal and vertical rotation of the camera is aligned so that if you were looking at a cube, the vertex closest to you is right in the center of what you see.

Posted Image

To start, you would take a square grass texture and tile it (repeat it) so that it becomes the size that you want. (We don't know this size yet. We'll have to take a screenshot from The Sims 1 and find the exact pixel size per game tile)

The game doesn't actually use this texture for the lots, but, it works since I can't find the actual one.
Posted Image
From: &#xPr;ogramFiles(x86)%\Maxis\The Sims Online\TSOClient\gamedata\terrain\newformat\gr.tga

To create the playable area from this image, again, no transformations to it are required. Once it is tiled to fit the size that you want (in this case, I have tiled it to 768x768), you mask it to the shape of an isometric rectangle laid in front of you, which, as I demonstrated above, has top and bottom angles of 120 degrees each and left and right angles of 60 degrees each.

Here I calculate the exact pixel coordinates for this.
Posted Image

After the mask is created and applied, the image now becomes:Posted Image

And we can start writing images on to it.

We will need to keep track of 3 types of coordinates.

Local screen coordinates are where the user clicks on the screen (just on his monitor).

Global screen coordinates are where the user clicks on the world. If he/she clicks on the very top left pixel of the world, then it's (0,0). We'll make the y value increase as the user moves his mouse down so that it'll match the fact that objects are drawn on top as they are closer to the user, and down is always closer to the user. Also, instead of making the top middle (0,0) and having negative values for x, we're making the top left (0,0) because we always need to know the width of the image to create the mask image, and OpenGL itself refers to the top left as (0,0) anyway.

Global tile coordinates are what tile on the grid the user clicked on. And again, to match the fact that the farther down something is the more "on top" it is, we'll make the y value increase as it goes down, and make the x axis start right next to it.

To sum it up,
Posted Image

And next, we will consider "precision" for these coordinates. The local screen coordinates always have 100% precision. If the user moves his mouse 4 pixels, the local screen coordinates are changed by 4 pixels too. The global screen coordinates match the precision of the zoom level. So, at 100% zoom (the closest zoom), the precision is 100%. When you zoom out, however, the precision will be lower (we don't know how much lower, yet: we'll have to find these values from The Sims 1), so if it were 50% precision, then moving your mouse 4 pixels would change the global screen coordinates by 8 pixels. The global tile coordinates are really the same thing, just at a bigger scale.

I googled about OpenGL projections, since that's what Bob was using. Because I don't have any experience, I don't know what's right and wrong. Right now I need to know if it's okay to have every object on its own "projection", whatever that really is. As far as I know, that might be the fastest (most efficient) way to do it, or that might actually be the absolute worst way to do it. We have to make sure we are using enough cache. What if the user removes an object? Are we going to be constantly redrawing everything each frame anyway? And is that a bad thing? Like, can we keep each tile on its own OpenGL projection?

We will just need more developers experienced with OpenGL to answer these questions.

(Original update written by X-Fi6)
Read the rest of the update at Tsorestoration.com

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: