April 24, 2012

BSPs, Brushes, Static Mesh...Oh my!?

No, unlike the thousands of other blogs out there dedicated to game engines, this isn't a post or tutorial on how to make them. It is more of a introduction if you will, or a report on a great tutorial site that has helped me immensely.

Last year I was working with UDK for really the "first time". I became very frustrated with the lack of valuable documentation on how to learn the cryptic program. There wasn't a book out that was up to date with the newest build. Most of the docs and forum posts were for those who had a running start from Unreal Tourney 2004 and it's editor. I searched forums and sites and it seemed there just wasn't any awesome "noob" stuff available...not that I could find at least. To make things worse, the newbie stuff I did find was more of a kick in the pants because any of the online videos were too fast to follow as the creator was a noob themselves on instructional design... most likely they were great at UDK, but pretty shitty at instructing! They either spoke too fast, were sloppy and had lots of unedited retracing of steps and "oops" moments, glossed over major steps leaving me wondering where they were, or they simply rambled on about needless stuff swerving ever further off of topic. So I put the program away for a while and averted my attention back to the rink and puck, my portfolio stuff, or tended the garden or something. I just wasn't ready for the learning curve that was required... yet.

Certainly UDK is a powerful program, and a great engine to know if you are a game developer, but the monthly release schedule they have in place leaves the engine and it's interface changing constantly so it made it quite difficult to keep up with. The last download I yanked from Epic was the February 2011 release; I refuse to update monthly... lol or even YEARLY as it seems, because last month I fired up the old bitty and made a concerted effort to jump in and learn the frickin package... well, at least begin to scratch the surface of learning.

I opened the program and anything I had learned the previous winter was a distant blur that was too hard to recall. So...back to Google I went. I typed in "UDK BSP creation" and the expected list of blah blah blahs from the Epic Games forums or you-tube-eries was not delivered. Instead a new site that I had yet to discover found it's way to the top... "World of Level Design"

Upon opening the first tutorial on the list I was greeted immediately with a pleasant and professional sounding voice; though there is a slight accent which may be hard for some to decipher. The pace with which the instructor (Alex) presented the information was both comfortable and informative. I learned more watching the first three videos of his series than I had during 2 weeks worth of book/forum/youtube learning sessions during the previous winter.

After watching a few of Alex's videos I subscribed to his site and gained access to two "free" pdf files to assist in level design and game creation. Both of them sit unopened on my desktop because I have a feeling they may rehash most of the material I already teach my students in class (Game theory, pre-production, map/character creation, etc...) but I thought it was pretty cool that he offered these up to fledgeling designers. I will open them eventually and who knows, I may be pleasantly surprised with what I find.

Now even though this tutorial series is great for a beginner...and the use of Builder brushes and BSPs...it still moves past a few of the crucial components of developing Static Meshes. Perhaps the problems I had were due to my pre-production pipeline, but I had a huge issue with bringing in a model and it's textures from Max to UDK. Granted, the model was not built for a game, and this may be the culprit, however, following the different sites and tutorials I found still didn't solve the issue for this particular model.

I built an office chair in Max and mapped it to my likings to be rendered in a max scene environment. I placed materials onto the seat and back using bitmaps for the diffuse and bump channels. I used procedural maps for the plastic components and chrome components and the whole model looked quite nice. After following the step-by-step process of baking the textures and exporting the.ASE file I switched over to UDK to import the Static Mesh and when I did, it came in all checker-boardy.

"Huh. That's not what it's supposed to look like" I thought. So I went back to max and played around a bit with the model and read a bit more in the tutorials and tried exporting as a different file, this time the .FBX. Similar results. This time the Plastic worked, but the chrome and seat didn't keep their texture. So I stepped back. Perhaps it was in the process of how the model is put together? I decided to start from scratch with a simple bookcase.

This time, when creating the model I reflected back on some of the text from the tutorials; They spoke of "Attaching" the editable polys under the Edit Poly modifier on the stack. Hmmm... Perhaps rather than creating multiple editable polys and attaching them, I would try creating a single polygon mesh. Starting from a simple box, I created a bookcase with the editable poly using the extrude modifier. I added the UVW mapping, and then unwrapped the UVWs as instructed. When I mapped the item though, I used a multi/sub-object map for the case. I wanted the grains in the wood to go in different directions, based on the back/sides/shelves of the unit. So rather than have three maps for the one case, I figured one mulit-map would be easier.

Once the map was applied to the different channels of the case, I rendered the material to texture (baked it) and then exported the whole unit as a .FBX file and then imported it into the level I had developed. Sure enough, the bookcase was imported with the textures intact. Now... I can't say if it was one, or the other, or both that caused the texture to import properly, but I can definately rework through the problem with the chair and try to map the entire model with a multi/sub-object using the "Attach Poly" method.

I can't imagine every model having to be a single object in order to map it properly. I may even have goofed in part of the baking process, however as this is a lesson in mistakes and trials and error, I offer only my experience as fodder for your learning. And certainly, should you KNOW the answer the problem I am having, please comment and let me know your solution.

Later this week I will show you the iterative process in which I created the level this scene/screen shot is from. It's mostly a build off of the WoLD tutorial I mentioned earlier (Rooms, lighting, maps) but I have an idea that I want to take to completion. What better of a place to share it than here, no? Until then, happy gaming! I'm off to go spelunking in a Dwemer Ruin.

-Chad

Chad is an Adjunct Faculty member teaching video game design in Boston, MA. He is currently a freelance designer and owner of Phlume Artist Management. He can be reached for comment there. http://www.phlume.com

No comments :

Post a Comment