Friday, May 17, 2013

Games Need More Dinosaurs

     So I'm bringing them back.  So tired of zombies.  After a bit of inactivity, this guy was a quick way to start setting things in motion again.  I think this is probably enough characters for now - I'd really like to get the stage setup and have the UI wireframes started soon.  Though, with my track record of not following my own schedules at all the next thing I'll likely end up with is a script.

Sunday, February 24, 2013

Tesla & Stage Lighting

Nikola Tesla

     This is probably the most "character" models I've done in a long time.  Moreso, it's definitely the most DRAWING I've done in a long time.  Full disclosure, this sketch had to go through a ton of plastic surgery in the form of the puppet warp tool in PS to get to the stage in the screencap on the left.  I don't even feel comfortable posting the original sketch.  I could probably up the quality a lot by using a scanner instead of my phone's camera, but I figure that the characters will be so small on screen anyway that it won't matter too much.  Once I fixed the outlines, I just painted under them in PS and used the same technique for the model as I did for The Housekeeper.

     Once I had the model in-game, I started working on a couple theater features.  The first was tweaking the lighting so that it dimmed when mousing over a character.  I felt like this helped create the stage atmosphere by giving each character their own monologue lighting.  I really like UDK's matinee system, I can get a lot done with it really quickly.
     After setting up the lighting, I remembered that my character classes were cast from the kactor system.  Just as a quick test, I wanted to see if a matinee animation would work with one of the characters, so I grabbed Tesla and gave him a quick animation.  I'm actually pretty happy with how this is coming along now.

Now if I can just settle on a solid story.

Saturday, February 23, 2013

Act I, Chapter I

Main Character Evolution
     Since I have the weekend off, I decided I'd try and make the best of it by finally putting to paper (or screen) the basic foundation for my point-and-click adventure/play game.  Pictured above is a tentative (possibly final) version of the main character.  The gameplay will sort of parody adventure games as well as theater plays - hopefully they go together well.  The basic premise is that the main character (pictured above) is the maid/housekeeper to Nikola Tesla during WWI.  While Tesla is away on business, she starts poking around his lab and accidentally fires up a machine that causes a rip in space-time in which dinosaurs start trampling through.  Suddenly the front lines are fraught with all manner of dinos, effectively ending the war and leaving her (and the rest of humanity) sprawling to clean up the mess!

     Anyway, I was fortunate that some very generous people over at the UDN had done a ton of the legwork for me already in creating the basis for an adventure game point-and-click system.  Creating A Mouse Interface with UDK

     After loading up those resources, I was really happy to see that I didn't need to tweak much (the sinfully ugly default cursor is on the top of the priorities list).  The above kismet setup is pretty much the extent of the entire system.  One thing I'll need to do is implement a verb system, and the ability to switch between them (eg grab/touch, speak to/with, look at).  I'll probably stick to those three, and I'm not sure if I want to work on an inventory system or not.  If I do, I'll probably do it in scaleform vs an unrealscript solution (or maybe even with the prebuilt Hourences kismet-based interface).  In terms of gameplay, I'll probably divide it up into 3-4 Acts, which will have around 2-3 chapters each (with each chapter featuring 1-2 puzzles).  

Demo of the Setup

     The barrel was originally a stand-in for The Housekeeper, but I had such a laugh with its dialogue that I'll probably leave it in as an inside joke/easter egg with myself.  The verbing will be pretty easy to implement, and I'll probably start working on a scaleform HUD tomorrow as well.

Friday, February 22, 2013

UDK Camera Targeting

     I was talking with one of my good friends the other day about the extinction of the traditional, classic, survival horror genre.  I realize that's a pretty inflammatory statement to make, but he and I grew up on the Resident Evil series (pre-Resident Evil 4, that is).  One of the hallmarks that we both really liked about the series was it's use of static cameras throughout environments - you just don't see that anymore.  It's either FPS or over-the-shoulder "jump-out-at-you-boogeyman" scares nowadays.  I'd imagine the developers originally had to use the static camera angle because of limited rendering power (from what I remember, most of the backgrounds were either matte skyboxes or pre-rendered camera projections).  Without that restriction, it makes sense that they'd move on to fully immersive, real-time rendered worlds.  My friend and I both agreed that in doing so, the genre (especially with 4) lost some of the tension due to the fact that you were always in control of what you could see.  Previously, it was always a gut-busting move to turn a corner when you didn't know what lurked behind it.

     Because I've been (not) hard at work trying to come up with my own survival horror game/mini-game, I wanted to give that classic static-camera style a try.  Here's what I ended up with:
Penguins are so next-gen horror, didn't you know?

     Ignoring the choice of player character, I was pretty happy with the result (and also how efficiently the kismet code worked.  I don't know if I'll elaborate any further on this, but considering how incredibly easy this was to implement, I'm tempted to keep experimenting (eagle-eyed viewers will probably remember this particular hallway as an homage to the RE1 upstairs hallway, joining the Yawn room w/the first mask puzzle)
Seriously, I probably sunk 2,000 hours into this game alone.

Here's the setup:
3 Cameras (in red), 3 triggers
Kismet: 3 Triggers, 2 Switches, 3 Cameras
     I could probably get away with substituting the first trigger with a "On Level Loaded/Player Spawned" event, but I like the flexibility of having the third trigger there.  Each trigger flips a switch that toggles between two different camera angles.  Pretty simple stuff.  Initially, I started trying to do everything in matinee (using bools/camera groups with director groups) but then I remembered the "set camera target" function which made things way, way easier.

Friday, February 1, 2013

Exprimenting with Normal Maps

     Finished a couple new assets today.  I've always been intrigued by the amount of detail in Epic's (and really any other AAA studio's) normal maps.  Usually I lift my normal maps straight from my diffuse maps.  Generally, doing so has produced some reasonable results, but because of this they've never yielded DEEP/DRAMATIC results.  I decided to play around with that today.  The Well in the picture above clocks in at about 170 polys.  For this normal map, I took a new approach to my process by cranking out a highly detailed model of the well (with individual stones) and baked the information out to the low poly.  I've known about texture baking for years, but I've never bothered with using it extensively on normal maps.  I'm glad I did this time.  Below is a breakdown of the process:

     Because I hadn't tried baking such a drastic normal map before, I went in expecting less than stellar results.  I was absolutely flabbergasted when I first loaded the base normal map into the UDK.  From there I didn't have to do much - I cranked out a super simple diffuse and specular map and lifted a detail normal map from the diffuse pass using my old method of normal map creation.  Once I overlaid the detail normal with the baked normal map, I called it done.

     Just to make sure it wasn't a fluke, I went ahead and built the bucket to go with the well.  The process was very similar - make a low poly, craft a high poly, and bake everything down from there.  The biggest difference was the diffuse map which needed a little more love for the finer details.

  Once I had the high poly built and baked, the rest was pretty standard.  I gave it a little bit of flourish with a simple bone rig and PhysicsAsset so that it can be knocked around in-game.

The scene as it currently stands
     I'm starting to run out of prop ideas now, so I might have to bite the bullet and start cranking out the bigger assets like houses/shacks.

Tuesday, January 29, 2013


In-Engine (UDK) demo

     After a bit of inactivity, I spent some time crafting a few props today.  It's always been difficult for me to kick off a project when it's in such a nebulous phase.  I'm still not sure if I want it to be an FPS, or a sidescrolling adventure game that is staged like a play (animating lights and flipping an entire stage full of props around sounds fun as hell).

     One of the mechanics I really want to include is the ability to increase the power of your primary light source by "increasing" the oil-flow into the lit wick.  The trouble with my initial model is that it was a candlestick and not something that could logically have a variable intensity.  So I set out to make a whale-oil lantern.  Hunting down the reference for this was surprisingly difficult.

     This lantern required two separate UV channels - One for the overall metal, and one for the transluscent materials like the flame and the glass.  I realize I could have done both of these on the same UV channel with a bit of creative masking, but I wanted to use the extra UV space to get a bit of subtle grime/dust added to the glass itself, which might have been a bit difficult at a smaller scale inside the first UV channel's 1:1 space.  I love that the metal's UV channel ended up looking like a face.  The lantern mesh is a bit dense, but I figured it'd be a good idea to allocate a few extra polys to it since it'll be up-in-your-face through the whole experience.

     After I had the secondary "weapon" finished, I started working on some general props that you might find in an early 1700s colonial farm village.  I ended up creating a fence (with an endcap prop), a barrel, and a wooden bench.  I wanted the fence to be a modular prop, so I paid special attention to creating it within a 128x128 square so that it'd easily tile on UDK's gridspace.

     Unlike the lantern, this model is all enveloped inside one UV channel, with a LOT of the repeated elements overlapping in the UV space.  I think the polycount on this one turned out pretty good, I might have been able to get away with a few extra cuts for more plank detail, but since the game is going to be pretty dimly lit anyway, I figured it'd be wasted as the silhouette wouldn't have changed much.  I was able to recycle all of the elements in the fence prop to create the endcaps, so there's no extra textures or materials on that model.  Can't beat two for the price of one.

     At this point I'm a little concerned about spending much time on developing any homes/shacks/cottages as I don't know what direction I'm taking this in yet - but I think I have enough props to start layering something together.  I'll probably see if I can come up with some creative lighting solutions in the meantime to create visual interest in an otherwise pitch-dark environment.

Monday, January 14, 2013

Back on the Wagon

     Of course, right before a huuuuuge flare-up in my work schedule I'm feeling more zoned in than ever before. I've started planning out a new survival/thriller game that I am hopefully going to follow through on.  Even though Peril On Monster Island 2 1/3 was a serious bomb, I learned how to (and not to do) a TON when creating a game.  I think this new project will be better suited to the UDK than POMI was since it uses a lot of the same mechanics as the average FPS.
     Without going into the details of the project, one of the most immediate assets I need developed is a portable candle light, along with the hand that holds it.  I started working on the candle asset today.  Here is a rough of the low poly w/normal mapping applied:

Averaging ~1k polys.  A bit denser than I'd like but it should be fine.

     Once I had the geometry sorted out (though it's still under revisions), I crafted up a fairly basic diffuse map that let me rough out a spec/detail normal map (At this point I just wanted to get a prototype in-engine and worry about the fussy details later).

Normal, Specular, Diffuse, and Ambient Oclusion

     Once in-engine, I needed to setup a temporary room that fit the mood I'm going for, as well as had enough room to play around in (I love the freedom of sandbox maps).  The plan is to have upgradable light sources, with this first one being the fallback "weapon" when the more powerful sources run out of fuel.  For the more advanced light sources (I'm thinking kerosene/oil lamps here), there'll be a toggle that will allow the player to feed more fuel into the burner for increased light radius/intensity, but at the cost of fuel.  I have no idea if that's realistic or not, but it seems pseudo-science-y enough for me.  This was the sandbox I crafted:

Is that DOOM 3 enough for you?

     Next, I set to work bringing over my candle assets.  The shader was probably the most involved part of the process.  I coupled a very, very subtle reflection vector with one of the default cubemaps to generate a faked reflection for the metal surface and combined it with the diffuse map.  The specular is pretty straightforward, just with the normal map added for the benefit of shiny sharp corners.  When I added the normal map, I found it was just too subtle a change between the normal details and the low-poly version by itself, so I used my diffuse map to bake out a detail normal map that gave the surface some nice fine crevices/dents:

     This is what it currently looks like in-game.  I really, really hate the texture seam on the candle, so that's going to get nuked, and I'll probably bump up the whiteness of the candle to differentiate it from the brass of the candlestick.  I might try an emissive map as well that will hopefully give the candle wax a little bit of a faked subsurface scattering look.  Ignore the fire for now, as that's just a default asset that will be replaced later.  I don't know if it'll be a mesh flame or a particle effect yet so I'll need to do a little playing around to figure that one out.

Looks ok from a distance

Up close reveals some ugly seams and a gross wax texture

     With a little bit of touch ups (a little more irregularity in the candle wax will go a long way), and I'll probably be pretty satisfied with this asset.  The next step will be crafting a viewmodel hand to go with it.  I'm a bit rusty when it comes to organic models, so that should be an exercise in patience.  I'll need to rig it, so this second phase will probably take a bit of time to finish, but I think in the long run it'll set me up for some very nice player animations.