Interview: Programming with Kyle McKisc

Found articles relating to Trespasser

Moderators: TresCom Support Team, TresCom Webteam, TresCom Board Managers, TresCom Developers

Post Reply
User avatar
tatu
-=TresCom Website Manager=-
-=TresCom Website Manager=-
Posts: 5088
Joined: Fri Jun 24, 2005 9:40 pm
Antispam: No
Location: Sweden
Contact:

Interview: Programming with Kyle McKisc

Post by tatu »

Please see http://tatu.tresgame.co.uk/Devs/questio ... vs_003.htm for images

Programming with Kyle McKisc

1. Did you work on any of the development tools for Trespasser? If you did, which ones did you work on?

[km] yes, I wrote the majority of the MAXScript tools we used in 3DS Max for development.

2. We've known for a long time that the player mesh has bones for all the parts of a human body, even though only the torso and right arm are really there. In-game, the left arm bones disappear and the rest simply don't move around. Of course, this was probably for a scrapped third-person view. At what point was the full-body mesh scrapped, and why? Was a detailed full-body mesh actually made?

[km] There was never a 3rd person view - always 1st person. We did try, however, a full body 1st person model which didn’t work out well - the legs looked really odd. I don’t remember much of the left arm. We even tried putting physics on her boobs .. but that lasted just about a day ... bad idea ;)

I’m not sure if you guys figured this out or not, but to get footstep sounds, Anne rolled around on a cube, with each impact from the cube creating an impact sound of a footstep. The footsteps were always oddly timed though - not like regular footsteps.

Also, I suppose I should go ahead and own up to it now .. I painted all of Anne’s textures except the tattoo ... boobs and an arm...

3. Do you remember anything about the way dinosaur models were rigged to bone systems?

[km] yeah - I did all the rigging for them. We used typical bones rigged with the mesh through Physique, and I wrote an exporter from Max for the vertex to bone weights for the rigging. It was super-primitive and quite retarded thinking about it now. The exporter generated C++ code that I would paste into source files and re-compile the game to update the rigging - a complete hack, but it worked and got the data into the game - also, there were only a few dinos and the player to worry about, so it wasn’t a pipeline used by anyone but me and I did the content authoring and the tools for it, so it was contained.

4. Trespasser has several vocal cubes for each dinosaur, including vocals for pain and roaring. The only ones used by the released engine are Stalk, Attack, Bite, and the eating/drinking vocals. Some herbivores like Parasaurolophus end up making virtually no vocalization whatsoever in the game. Some vocals appear to have been removed by the AI-act being taken out, and sometimes the act is still present but it does not make the vocal. Do you remember why so many vocals were left out?

[km] nope.

5. Trespasser has an amazingly beautiful and realistic water system that is rarely matched even in modern gaming. What is it that makes it so good by comparison, and why don't we see it more often?

[km] This is one of those things that were ahead of its time (in my opinion). The water looks good and reacts well because it’s a true water simulation. It knows about the depth of the water from the surface to the bottom of the pond (or whatever) at any given point, and calculates everything correctly. It was a tech created very early in the development of the game. The height field of the water simulation was converted to a real-time bump map used to render the water surface ... pretty cool tech. One of the problems we had was in the resolution of the water we could support - higher resolution water meant more processing time. It was integrated with the physics sim in the world, so objects floating in the water reacted appropriately as well. FWIW, this core water sim was reused in a later game by an engineer that also worked on Trespasser in Medal of Honor: Pacific Assault.

6. We understand that a heightmap for Cocos Island was insufficient to generate the terrain for your island, so some kind of clay model was sculpted and then scanned into a computer. What processes took place between this and the creation of the final WTD terrain files? The format has been somewhat difficult to replicate properly for us - do you remember anything about how it worked?

[km] yeah, I did a lot of stuff with the terrain as well. The terrain of the island was sculpted in clay by our Art Director. It was small, not larger than a 8 1/2 x 11 sheet of paper, and we had it laser-scanned in as a regular mesh model. I took that model and generated a height field of it for the entire island. This was not enough precision for local gameplay of course, so it was used as a base layer for major features. The terrain system was built on a wavelet compression scheme where all the points in the height field had to lie on a grid of varying quad-tree resolutions. I setup a method of editing the terrain where I had a multi-layered Photoshop document with height field information I painted and selection information in it. I setup an action in Photoshop to write out all the layers and channels as specific files which got loaded into Max through a MaxScript I wrote. The basic idea was to start with a low resolution mesh, and select the faces that matched the incoming image mask - tessellate them, and then apply the corresponding image as a displacement map to the terrain - then move on to the next layer (tesselation selection and heightfield modification). This was done until I ran out of layers - down to a height field sample every quarter meter. It seems odd to work this way, but it ended up being really nice. I had layers for different terrain features on different layers, could edit them independently and within a few seconds (export/reload) see my results.

The exporter I wrote would really just write out the vertex positions, ensuring they were on valid grid points, and the correct height. Our runtime terrain system (not written by me) would take that and create the mesh based on the players view angle. I believe it used a Delanuay triangulation to do this. When playing the game, you see a lot of terrain popping. This was largely due to needing to keep frame rate. After we shipped Trespasser, looking at Tribes, for example, they did things more smoothly, where new points int he terrain that were added were slowly moved into position rather than popping in as we did. One of my learning points on this issue was to do what you can to not distract the player from the action going on - it doesn’t matter much if it’s subtle and the player notices it, it matters that the player starts looking at things that aren’t important to the goals of the game.

The terrain texturing was pretty unique as well- we had the ability to tag free form objects as terrain materials and apply a layer height to them A, B, C, D or E which allowed us to have certain elements layer on top of other elements. The nice thing about this from an art perspective was that if I wanted a road, I would loft an arbitrary road where I needed it and it would just work. Then, each frame (at run time), if needed, the terrain system would generate new terrain texture patch by rendering this stack of objects to a new 256x256 texture and mip maps for a particular quadtree node. Still, to this day, I haven’t worked with a more free-form terrain texturing solution. Certainly before its time IMHO.

WTD was the format of the file - Wavelet Terrain Data, I think it stood for.
Active project: Trespasser: Isla Sorna
Status:
BE-PH1: Released
PH2-IT: Pre-released
PL-SUM: In production

"...there used to be more benches, but InGen's workers removed them during the evacuation in the name of framerate."
User avatar
Draconisaurus
T-Rex Killer
T-Rex Killer
Posts: 14045
Joined: Mon Dec 06, 2004 5:21 pm
Antispam: No
Location: Isla Sorna
Contact:

Re: Interview: Programming with Kyle McKisc

Post by Draconisaurus »

We even tried putting physics on her boobs .. but that lasted just about a day ... bad idea ;)
LMFAO!

I painted all of Anne’s textures except the tattoo ... boobs and an arm...
Aha, seems it's not photo reference after all.. not directly anyway.

(FWIW... apparently means "for what it's worth". A 'net acronym I'm not familiar with? Wow.)
Pretty cool info on the water.. real-time bump map, that can render in hardware mode. Nice. And does anyone have a video of water from that other game? And if that game happens to have released its source, Rex, ye can pirate the water code.. ;)

That is a truely amazing description of how the terrain was done. I'm quite envious... It also explains how we can have stuff like a streambed which gets curved up along a ridge. A separate layer had the streambed, being partially transparent, and a layer of raised terrain under it would cause a brightness shift leading to being raised up like that.. Also explains the how the shift of the hidden valley's edge in JR is possible. Just cut and drag some layers in photoshop, real simple..
Is there a chance anyone can use this info to help decode the WTD format better?

And yeah, his description makes me appreciate Trespasser's terrain objects even more.. And as I suspected, the appendages of A-E were originally used to determine height. I wonder if the engine used the actual name to determine this, or if the Height value was originally "char" instead of "int"?



Very nice interview...
User avatar
tatu
-=TresCom Website Manager=-
-=TresCom Website Manager=-
Posts: 5088
Joined: Fri Jun 24, 2005 9:40 pm
Antispam: No
Location: Sweden
Contact:

Re: Interview: Programming with Kyle McKisc

Post by tatu »

I painted all of Anne’s textures except the tattoo ... boobs and an arm...
haha, whats left to texture? xP Exept the shirt lol
Active project: Trespasser: Isla Sorna
Status:
BE-PH1: Released
PH2-IT: Pre-released
PL-SUM: In production

"...there used to be more benches, but InGen's workers removed them during the evacuation in the name of framerate."
User avatar
Draconisaurus
T-Rex Killer
T-Rex Killer
Posts: 14045
Joined: Mon Dec 06, 2004 5:21 pm
Antispam: No
Location: Isla Sorna
Contact:

Re: Interview: Programming with Kyle McKisc

Post by Draconisaurus »

Lol no I *think* he means he textured everything except the tattoo, which means boobs+arm is what he textured.
Post Reply