InfiniteSims has been keeping an eye on the various posts that Ocean Quigley, former Maxis employee, has been writing on his project blog (site contains nude drawings, so please be aware). His most recent posts contain information on how he designed the roof system for The Sims 2 as well as the graphics technique they used for SimCity 4 buildings. Read below for the full scoop!
SimCity4 was a proper 3D engine, with the view constrained to an orthographic perspective.
Buildings were rendered by projecting textures onto very simple 3D geometry. This allowed for sorting and interaction with terrain, that wouldn’t have been possible with simple sprites.
The buildings were basically imposters, a graphics technique that I’d seen at Siggraph back in 2000.
They looked pretty much normal if you saw them from this angle:
But if you rotated the view, the illusion was blown and everything looks weird.
I was hoping to use the underlying geometry to attach details like signs and water towers, but we ran out of time (and in any case, we didn’t want to create an authoring pipeline for sticking them on)
You can see what’s really going on with this view from below
My first experiments with imposters were for Simsville. In that game, we had a perspective camera, so they had to hold up to a little bit more camera motion. You can see some artifacts where the texture is projected through the roof, but all in all, it holds up pretty well.
Simsville didn’t come to fruition, but the stuff I learned while prototyping it fed into SimCity, so it wasn’t a total loss.
Probably the second hardest thing I ever had to design was the roof system for the Sims2.
The roof geometry had to be completely clean, and everything had to snap together perfectly, vertex to vertex and edge to edge without any overlaps (because we had to be able to hide and reveal different roof sections without any ragged edges showing).
And we couldn’t just solve the problem with CSG, as Irfan Zaidi quickly informed me, at least not with realtime performance.
It seems like it would be perfectly straightforward, but dealing with all of the crazy intersections and permutations felt like taking a 2 month long IQ test.
Here was a mockup I made in Maya while trying to think through the problem.
And this was just for the straightforward, rectangular roofs. The tricky problems came up when the roofs were rotated 45 degrees off of the grid.