Email | Résumé

Introduction | Unreal Setup | Problems | Modeling | Breaking and Tuning | Extras and Final Product | Conclusion
It seemed as if everything went south as soon as I took my first look at the programming side of things. I created temporary materials to stand in as placeholders until the final model was done, and set up the Durango's directory and script files. I plugged in all of the references to the package, mesh, materials, and all the good stuff that makes a custom vehicle custom. I opened the Unreal Editor and happily saw my Durango in the VehicleFactory list. And then promptly crashed the editor when I tried to test it.

After taking a look at the log, it seemed that the engine wasn't happy with my custom naming conventions within the rig. Specifically those bones for the tires. This would have set off red flags for a more experienced coder, but as a beginner I missed all of the clues to a larger problem that would take me weeks to uncover. My simple solution here was to go back into my rig and rename the tire bones to those of the Scorpion. The engine would now launch with no crashes, and the Durango would spawn in the gameworld only it sat at a awkward angle and was half naked due to ignoring one of the materials. It resembled a sad, half-sunken ship, not an SUV.
She didn't drive much like an SUV either. In fact, if the player entered the Durango, they would be treated to a far-off view and wouldn't budge an inch in any direction save for if they used the boost function. But even this would only throw them off wildly in some direction.

Considering that the car behaved so nicely during the physics simulations in PhAT, I could only imagine that this was a coding error. So I started again, this time basing the code off the Hellbender instead of the Scorpion. When that lead to more problems than fixes, I rewrote everything again based on the Scorpion, and got no further.

My second guess was that the physics where wrong, which led to the tilting of the car, and since all four wheels were not on the ground perhaps that was the reason for it being undrivable. I found that by changing the size of the physics bounding box I could at least influence the way that the car would incorrectly land. At some point she sat clean on her side, and when that happened, I found that I could drive the car fine. Just...sideways.
This was a big slap in the face. The problem was yet again related to the rig! The parent bone was misaligned, the Z axis was facing along Y and vice versa, not at all what Unreal wanted. This whole rigging issue seemed very odd, never in my previous research had I seen a mention of a special way to make bones for Unreal, but it seemed that however 3ds Max wanted them, Unreal wanted them upside-down and backwards. Or more likely, whatever viewport I happened to be using was a strict no-no for Unreal rigging.

With this sorted out, the Durango now spawned in the gameworld, right-side up, and was almost perfectly driveable. Almost, because though everything seemed to be alright everywhere else, the tires would not spin or turn, which shattered any sense of believability.
The tire problem was the high anxiety point in the project. I put many hours of twiddling and research into trying to reason it out, but had no luck. Normally my last resort after exhausting my own research is to ask instructors and colleagues for their thoughts. But amazingly, even they were stumped. Everything appeared to be set up correctly, all references in code seemed correct, things just weren't working as expected. The tires spun, turned, and rotated perfectly fine in the editor, but in game they remained as firm as stone. After another week with no luck, I discovered my next last resort, and posted my progress on two online forums: GameArtist and GameArtisans. Within a day the threads had been viewed a combined 103 times, and the source files downloaded by 54 people, but no one else had yet found the problem either. Another week went by, and not wanting to waste too much time I decided the best thing to do would be to join the official EpicGames forums and ask for help from those who would be sure to know the engine and the language well. It took less than twelve hours before I got a response. It was a coding error. And it was as simple as half a line.
Change: class UTVehicle_Durango_Content extends UTVehicle_Scorpion_Content;
to: class UTVehicle_Durango_Content extends UTVehicle_Durango;
This half a line meant that all the code that contained the references to the Durango's behavior was being ignored. The tires weren't working because the engine had no idea they were even there. When the class was extended from the correct parent everything was solved, the tires now responded to player control, the car drove as it should, and life was good. After thanking all who took the time to look it over, things where back on track.


Desborough Designs and all included material are property of Janelle Desborough, 2011.