Wednesday, April 8, 2009

Unreal Mod - A Study in Kismet

Okay, so I haven't posted for eons... blah, blah, blah... Anyway, in order to improve my overall understanding of Unreal Tournament 3, I decided to create a mod using assets that shipped with the game, instead of modelling and texturing all of the static meshes that would populate my level. This would give me more time to research and experiment with "Kismet" (which is UT3's scripting language) and focus on the actual level design & gameplay experience. So, just to make sure everyone understands, all of the individual static meshes, textures and characters in the following images were created by the amazing folks at Epic Games, the people who created Unreal Tournament 3.

So, what is Kismet exactly? It is not the C++ code that was used to program the engine itself, but actually a higher level object-oriented programming language called UnrealScript. Since the actual script has been replaced by a graphical user interface (gui) consisting of flowchart-like steps, Kismet is actually considered to be "visual scripting" system. Everything that moves, makes a sound or triggers something in the level (with the exception of the player's character) requires some form of scripting. This scripting can be fairly straightforward, like the example I have below, which toggles off the visibility of "Power Couplings" the player must collect (and incrementing a counter which keeps track of the total number of Power Couplings the player has collected)...
...or can be quite obscene, as this A.I. script I created for the end "boss battle."

Initially, I created a level design sketch of my level, which included details, such as: player path, puzzle spots, pickup locations and general points of interest. I then created "top down" maps using graph paper (since UT3 uses a grid system). Next, I roughed out my Binary Space Partition (BSP) using the Unreal Editor. After I was happy with the scale and placement of everything, I added my terrain and rough lighting. Finally, I simply completed a series of refinement steps, adding textures, static meshes and finished lighting. Regarding scripting, I initially scripted basics, such as: doors, elevators, ladders and moving/changing lights. I then scripted more complex things, such as my simple Non-Player Characters (NPCs), power couplings, glass floor trap, cave-in trap and explosive barrels. Lastly, I scripted the most complex things, such as the basic enemy A.I. and the final boss battle. All in all, it was a wonderful learning experience.

Although the intial inspiration was the animated film Final Fantasy: The Spirits Within, the level evolved as did the player's goal in the game. Instead of running around collecting plants (spirits) as Aki Ross did in the movie, the player must collect "Power Couplings" to repair his damaged ship. Initially, however, the player must simply find a way off his ship and onto the planet, as the main ramp is closed and the Hellbender vehicles are secured. Here's a view of the first floor of the ship:

Here's a view of the second deck, with a control panel that glows softly in the distance.

Activating the control panel turns on a series of lights leading back to the elevator, which is now operational.

The elevator leads to the third deck which has two locked doors which must be accessed by--you guessed it--the distant control panel.

A side passage ladder leads to the top deck, which contains an NPC robot that reveals your mission objective, the all important Main Override Switch as well as a nice view of the planet out of the main window.

Activating the Main Override Switch opens the lower ramp and releases the Hellbender vehicles.

A view of the post-apocalyptic planet surface. The first Power Coupling glows off to the left--it appears to be attached to some machine... possibly used by locals as a makeshift power source.

A passage on the far side of the ship leads to the first Power Coupling.

A long ladder and simple jump puzzle lead to the first Power Coupling (view of the ship and ramp on far right).

Continuing along the canyon path leads under a building and to the...

...Second Power Coupling! The player must shoot the explosive barrel to open the crate in order to collect this Power Coupling.

Turning around, the player discovers a smashed hole in the side of a building. Proceeding inside, the player encounters a large statue, pillars and a glass panel in the ceiling which reveals the third Power Coupling.

The trip to this point in the level has not been easy as the player has been facing scripted enemies throughout. Here, two enemies charge the player through the glass doors of nearby offices. The third Power Coupling is visible in the distance.

Here is a view of one of the offices. Note that although Epic is responsible for creating the individual static meshes present in the level, I recombined them in interesting ways to create new objects. Since Unreal doesn't have any "chair" models, I created these using 4-5 meshes in the game. Also, the desk lights were actually streetlamps. Creative use of assets was key throughout creation of this level.

Here is another view of the second floor from the opposite side of the room. The third Power Coupling is firmly encased in glass.

Passing through an elevator leads to the top floor, where the player enters this consulting office, and is surprised by more enemies.

Here's a nearby conference room.

The final door is the former CEO's office, featuring a fancy skylight, class cubicals, raised dias with desk, and--oh yeah--another Power Coupling. After polishing off the enemies, approaching the desk opening the glass boundary for the last Power Coupling.

Closer view of one of the side cubicals.

Here's a view of the office from the raised dias.

After collecting all of the Power Couplings, you head back to your ship, but are intercepted by a Dark Walker "boss." Prepare for battle. Polishing off the Dark Walker causes your ship's ramp to re-open allowing you to return all of the Power Couplings to the robot NPC on the top floor of the ship. A simple ending sequence finishes the level.

Friday, November 21, 2008

Next foray into the magical world of Animation

Now, I am by no means an animator. My first plunge into the wonderful world of Animation was mixed at best: my bouncing ball was pretty nifty, my racing car was mediocre but my character walk cycle was absolutely dreadful (...and you seriously don't want to ask me about my character's dance. Seriously.) So, it is with obvious trepedation that I return, as the Prodigal Son, to this uncertain realm. I am happy to say, however, that, so far, it's been fairly successful. I credit part of that to the wonderful instruction by Mr. Paul Orlando, a teacher infamous for being brooding, confrontational (dare I say, Snape-like?) and just a bit altogether wacky. Anyway, I've included several simple playblast (i.e., non-rendered) animations for your viewing pleasure.

So, my first task was to create a default "happy" walk cycle using the Andy Rig v1.4.6 created by John Doublestein. It's a pretty good model, rigged nicely, including the option to change the gender with a couple of different clothing options. The cycle is only a couple of steps, so you may need to play it repeatedly.

After creating a "happy" walk cycle, I decided to do its polar opposite: the "sad" walk cycle. Again, it's fairly short, so you may need to play it a few times. Basically, this was just an exercise to get used to the rig, creating a mechanical action in which the whole body of the character looks like it's involved in the motion. Also, I experimented with timing, spacing and pose to evoke an emotion.

Next, I moved on to the "Basic Guy" Rig v.1.0 created by Tim Oberlander. This rig is actually a bit more advanced and easy to use than the Andy Rig, but (obviously) Basic Guy has no mouth, so facial animation is a bit limited. First, I created a simple spin jump, just to get used to the rig and continue my exploration of character mechanics.

Then, I added a prop--in this case, a golf club--and created a small story in which Basic Guy (hopefully) emotes a whole range of emotions. So, like I said, things are going fairly well in my sophomore attempt at animation, but I still have a lot to learn as animation presents is own obstacles and challenges.

What's that you say? You say you're still curious about my "dance." I warned you! I warned you NOT to ask me about that!!! Okay, okay, if you MUST see... but be AFRAID, be very AFRAID!

I WARNED YOU!!!

Persian Fort project

Whoa, another insanely huge post!!! Anyway, this is another Unreal mod project in which I was involved set in medieval Persia. I was basically responsible for most of the level design concepts, all concept art/level diagrams as well as building and texturing most of the assets in the level. I was not involved in the creation of the BSP, assembly of the level or any scripting. My initial isometric sketches served as a kind of miniature template for what would become the final level, and helped me to create the master asset list. The initial idea was to design a single player mission in which the player would descend throughout the level to a lower dungeon, eventually rescuing a comrade being held captive. The time constraints proved to be too difficult to finish all of the scripting required. However, Mike Reed was able to finish a good "guard mode" A.I. which deviates from default deathmatch A.I. that the bots usually use. He was also able to script some nice triggers, such as: the ability to shoot down torches and lights, proximity-based sounds and the ability to shoot objects off tables. Cameron Barnes created the BSP and assembled the level.


Here are just a few of the assets that I created for the level, starting with a nice palm tree...

Here's a fruit stand, which was also used in the Courtyard.

I created this simple archery target for the Training Area.

...and, for the Barracks, I created this simple bed and chest (i.e., used a Persian rug for the blanket).

I also created this weapons rack for the Training Area, complete with authentic Persian weaponry.

For the Main Hall, I created this fountain with an elaborate Persian mosaic texture.

Also for the Main Hall, I created this wall piece (with texture and normal map)...

...this ceiling piece (with texture and normal map)...

...and this floor piece (with texture map, normal map and specular map). Note: the Persian rug does not reflect the light as does the tile.

I also had the grand idea of retexturing one of the Unreal 3 models, to make it fit with our medieval theme. By the way, I know, I know, the Persians didn't wear full plate male as did the Europeans, but what do you expect?!? I got a model of a guy wearing friggin' Gears of War power armor and he looks like he's right out of Warhammer 40K! I don't think I could pull off transforming that into leather or chainmail with textures alone!

Ahem, sorry about that. Anyway, the sad truth is, after I worked so hard re-texturing this default Unreal 3 model, I was unable to re-import it into the game. Oh well, it was a good texturing exercise. (Did I mention that I did NOT create this model? It is one of the default male models that ships with Unreal 3--I just re-textured it)



Here's a screenshot of the Courtyard.

This is the entrance to the Persian fort (the torches can be shot down)

This is the dining hall portion of the Barracks. After starting the project, we each decided to assume responsibility for one room; Mike Reed selected the Barracks. He wrote script so the light can be shot down to darken the room (to stealthily sneak by guards). In addition, the plates and cups can be shot off the tables.

I assumed responsibility for the Main Hall. I really wanted to capture the dizzying clash of textures that I found in much of my Persian reference imagery. I wanted to make a strong impact on the player as soon as they enter the front door. Also, the patterns could act as a sort of camouflage, enhancing the difficulty as the players battle the guards.

Although I could have matched the blue within the wall tiles to the blue within the columns and floor better, I'm fairly happy with the overall effect I achieved within the room (i.e., complete gaudiness).

Thursday, November 20, 2008

Cleanup On Aisle Six project

WOW, HUGE POST!!! Okay, so this is my first foray into the world of Unreal. Some friends and I decided to do a zombie-based level set in a small rural supermarket. The basic premise is the player's character has been surviving a zombie onslaught in a small town. When his supplies ran low, however, he needed to stop by the local grocery store for some rations in the form of canned goods. While checking off the items on his grocery list, a van tore across the parking lot into a tanker truck; which subsequently exploded, cutting off the character's only escape route. I was responsible for most of the level design elements, environmental art, as well as the creation, texturing and assembly of the BSP map within Unreal. We created almost all of the static meshes placed within the level, only borrowing the RealTree and car meshes that shipped with Unreal. Michael Horton created and textured the vast majority of these custom static meshes. Vincent Walker created some of the more involved (and higher poly) meshes, such as the zombie character and the tanker truck. Octavia Jones rigged and animated the zombie character and assisted with particle effects.

My initial quick sketch of the parking lot and exterior of the store ended up being a fairly accurate depiction of the final level...

Originally, the player was going to fight Big Earl, himself, the former proprietor of this fine establishment, in a "boss"-like zombie battle.

However, we eventually decided to have the player battle hordes of redneck zombies, wearing their signature rebel flag "wife beaters" and tight jeans tucked into their cowboy boots. The zombie character was beautifully modelled by Vincent Walker and lovingly animated by Octavia, but, due to time constraints, we were unable to fully import it into the level. Such a shame...

Here's a nice exterior view of the Earl's Grocery Food and Drug Mart...

...and another view from the other side of the parking lot.

Here's a view of the van/tanker truck collision, with nice particle-based fire and smoke effects.

This is the main entrance to the store...

...with the shopping cart return area. Notice the pig logo has a big chunk missing from his body as he gestures toward a floating ham hock above him. I swear, sometimes Michael worries me...

This is a nice view of the dim, atmospheric interior of the store. A light behind the distant pharmacy counter indicates where the player might pick up some additional health.

Here's one of the many trashed aisles in Earl's Grocery (hence the title). Zombies really don't know a thing about picking up after themselves, do they?

This is another view of the small, obsolete registers used in the store. Note: the yellow boxes are "Bushidos" cereal, which is obviously Michael's doing.

The areas that received the least amount of attention were the bathrooms...

...and the loading dock area, which are both rather boring and plain. However, due to time constraints, sacrifices had to be made.

Overall, it was a great learning experience (and a level that has a lot of potential).

Sacrifice project

Well, I've been working on some environmental concept art for an Unreal mod called "Sacrifice." The overall concept, as well as the Game Design Doc (which includes the story, characters, level diagram, art asset list, level/puzzle descriptions, scripts, art references, et al.) were created by Daniel Cazan. In a nutshell, the story is this: a Death-worshipping alien race descended on a remote Eastern European monastery built on powerful lay-lines, setting a trap that will open a gateway to the realm of Death itself. This trap involved building a mysterious black dome around the monastery, with internal walls dividing the structure into three "pie wedge" sections; individual entrances lead into each of the three sections. Eventually, the dome-shrouded structure was discovered by local hikers and the military was called in to investigate. The military sends teams into each of three entrances, which simultaneously shut, trapping each of the teams inside. The player's character is the leader of (Green) Squad 1.

As in Gears of War (i.e., the Kryll), the player will discover that being surrounded by darkness is a bad thing. One example is the sunken Library of the monastery. The stairs on either side of the room lead only to darkness and death; only by jumping across the tops of the bookcases (and, thus, remaining in the hazy glow of the alien lights) will the player be able to traverse the room.

The first image that the player will see is the--hopefully--awe-inspiring view of the monastery facade surrounded by the alien dome. The pale, artificial light has caused the foliage to wither and many of the structures are crumbling from neglect. Creepy alien devices cover parts of the building in an aesthetic that is Star Trek's Borg crossed with the mechanisms in Event Horizon (e.g., "heavy metallic, spikey, alien look").

Both of these images basically started as pencil drawings which I scanned and colored using Photoshop. I'm still getting my feet wet regarding the use of color, but I'm fairly pleased with how these images turned out.

Some old doodles...

Okay, in an attempt to be somewhat discriminating about what I post out here, I've gone back to my old tricks of not posting anything new in ages. So, to whet your appetite until my next big post--which should be in the next day or two, honest!--I've provided a few sketches I've accumulated since my last entry. My next couple of posts will cover my first couple of Unreal levels as well as some early attempts at animation.

Demon Concept

Demon Concept (details)

Alien Concept
Steampunk Character #1
Steampunk Character #2
Electric Eel Creature