Saturday, July 31, 2010

Feature Creep

Perhaps it was last night's coding session, but I've been hit with a new found excitement for working on the game. This morning I decided to sit down and write down some of the newest ideas for my game into my Design Doc so I wouldn't forget them. My Design Doc has now grown to 3 pages (doesn't sound like a lot) and I'm starting to fear my game might be suffering from Feature Creep. For those that don't know (and I hadn't heard the term till about a month ago), Feature Creep is when you keep adding new ideas to your project until you over complicated its design and ultimately dilute the original intent.

I carefully reread my document and realized that it wasn't so much new features I was adding, but more like references to the style and look that I wanted for the game. I'm trying to be mindful of not making my first game too big, but I still contend that nothing I'm doing is more complicated than things I've seen way back on the SNES. I'm just piecing together things that I like and trying to bring a fresh spin to a genre that I've always enjoyed. Looking through my Design Doc, it's obvious that I'm an artist jumping into programming because all of my "style" notes come with descriptions on how I would do it in Flash, Photoshop, or After Effects.

Well, just wanted to get that out while my mind was running crazy. On to the busy weekend.

Chapter 10 finished

Seeing as my Saturday is going to be busier than usual, I thought I would stay in tonight and catch up on some programming (seeing as I haven't done any in 2 weeks). This evening was "Chapter 10: Using C# Methods to Solve Problems" and was exciting because it was the introduction to the final third of the book (Part III: Writing Proper Games). This chapter was mainly about adjusting the rectangle for drawing 2D textures, creating your own Methods, working with "floats", and using breaking points to help debug your code.

Had very few problems with this chapter, which was a nice change from the last few where I'd been absolutely stumped by some unforeseen problem. I remember opening the book and dreading the threat of having to post on the forum with another problem that was clearly my own fault. Luckily, that wasn't the case.

Once again, he is not terribly clear on where to be putting code, but more alarming are the instances where he adds code without telling you. There is one section where you are starting with a picture that is much larger than the screen. You are to gradually shrink the picture, but only to the point where it matches the screen size. He explains a bit of code that works out pretty well and everything comes together. Later, you add a bunch of new code and, without any inclination, the previous code is replaced with an entirely new one. Now, I'm not sure if this is by design, but its a little annoying. Oddly enough, all of this searching for the differences in my code and the book's online examples are probably teaching me a great deal.

All in all, it was a fine and I was relieved that everything I had learned hadn't flown out of my head during my 2 weeks of neglect. If I'm lucky, I'll try and do the next chapter on Sunday night.

Book: Microsoft XNA Game Studio 3.0: Learn Programming Now! (Pro - Developer)

Friday, July 30, 2010

Limbo Success

First off, I've yet to play Limbo. I was originally really excited about it (and still am), but a "Buy 2 Get 1 Free" deal at Gamestop had me spending more money than I had originally intended. Not sure why I do it, I already don't have the time to play all of these but will still get the occasional new game. I guess that's why I'm on the side of the fence that is all for 6-12 hour games. I just can't make the time commitment any more for anything more entangling then that. The fact that Limbo is only anywhere between 3-6 hours is enticing in that I can experience it in 1-2 nights and then move on to the next one.

But the real reason I've been thinking about Limbo is because of a blog entry I read a few days ago by Robert Boyd from Zeboyd Games. He was the indie developer that made Breath of Death VII (another game I haven't played, but my brother swears by it). In his entry, he discusses what he feels are some of the contributing factors to the game's success and mentions the huge money that it pulled in. Not huge in terms of anything by EA's standards, but life changing for an indie developer. Its definitely worth a read: HERE

I should have some time to get back to my programming book tonight. I was looking through my blog entries and realized it has been 2 weeks since the last chapter I'd studied. Work on the game hadn't stopped, as I've been focusing on art and adding to my design document, but I need to get back into the code side of things to keep them fresh in my head. Really need to focus and get back in my normal rhythm.

Monday, July 26, 2010

Tutorial: 2D Art Soft Shadow

Earlier this year, I was animating a simple talking character to be used for roughly 60 seconds. For some reason, I decided that I wanted to forgo the hard edge shadow that I was so familiar with from my favorite cartoons (Justice League, Batman, Superman, etc) and go for a softer, more "Disney" style shadow. Basically, Disney has a smoother, more blended look to their shadows and, for the life of me, I couldn't figure out how to achieve that on my own. Well, I eventually saved up my money and got CS5 and found out about "Lens Blur." Not sure what Lens Blur is really supposed to do, but it filled my purposes beautifully.
So go ahead and check your version of Photoshop, if you have Lens Blur in there, feel free to follow along.

Step 1: Scan in your original art.
I usually like to use about 300 dpi (dots per inch) and set my scanner settings to Black and White. I useful tip I learned Producing Independent 2D Character Animation: Making & Selling A Short Film by Mark Simon is to draw all of your rough art in a "non-photo blue" pencil. Xerox machines and scanners (set to B&W) can't see the blue. That way, you can rough your art out first and then ink over it with your black pen. Another tip is to use a red pen when inking to mark your shadows. It will show up as black on the scan, but you can keep track of shadows with your original art near by.
Original Art:Scanner Set to B&W:

Step 2: Color in your Art Work
Go ahead and start coloring your art work. I usually use ToonBoom to color in my art work because of the ability to adjust my palette after I've used the "Fill Bucket." You can also fill your work in with Photoshop and just paint in the black lines. (Use the "Wand" tool and select the black lines. Then just go over it with the pencil).

Step 3: Selecting the Colors to Blend
First Select the "Wand Tool."

Next, hold in the Shift Key and select all colors that need to be blended (the normal value, shadow, and highlights). Make sure "Contiguous" and "Anit-Aliased" is NOT checked while you are selecting.

Step 4: Select Lens Blur
Go up into your Toolbar and select "Filters", then "Blur", then "Lens Blur".

Once inside the Lens Blur's editor, start adjusting the "Shape" and "Radius" until you get a nice, smooth transition between the colors (or whatever effect you are looking for).Hit OK and you should have it. Feel free to go back and use it with any other sections of the same picture. Just remember that they all have to be of the same color range. Let's say I also had shadow values on the cape, if I selected it too, then it's colors would bleed into the tights' selection.

Now, a couple of things to keep in mind when using this.

First: The reason to use Lens Blur as apposed to any others is because Lens Blur repeats the edge pixels. Use of Gausian Blur or any others results in Photoshop pulls color from outside the selection. (Click for larger view. Notice Yellow is bleeding into the blue, even though its out of the selection.)
Second: Place your shadows and highlights careful when drawing and compensate for the natural spreading of the colors that happens with the Blur. In the following picture, I did not plan accordingly and the highlight bled past his chest and over to his arm (where there shouldn't be a highlight). I'd love to say that I was really smart and planned that on purpose to teach you a lesson, but I'm not. (I adjusted the contrast so you could more easily make out where the highlight is bleeding over the line.)
In closing, if you are looking at my final product and thinking that you could do the same thing with "Bevel" and "Emboss" effects, then only blame my use of shadow. In further works, I'm going to be more mindful of using it to express shape and form and try to avoid any type of symmetry or parallel lines that may be causing that effect. Also, I'm pretty sure I could achieve this effect on a series of images using Actions and the Select Color Range feature, but have not tested it enough. Hope this helps some of you out.

Tuesday, July 20, 2010

Flash Rigged Sprite Update: Success?

So a quick update on using Flash's "bone tool" for animating characters.

Not willing to let the whole "Toon Boom dropping the ball on the importer" situation slow me down, I exported the character from Toon Boom to a normal SWF file. I then loaded it into Flash and began the tedious process of naming each part of the character (again). Then, I selected all of the parts at once and used "distribute to layers" to put them all onto their own layers for use.

I was then able to start rigging the character with the virtual armature. The only real hinky part was that the layer depths change while you are rigging. This wouldn't be a big deal if I could slide them around in the layer window, but you have to use the "Bring Forward, Bring to Front, etc" functions. Didn't take forever, just longer than I would have liked.

Later this week, I'm going to try and animate hands for the character and create its "Idle Animation".

Monday, July 19, 2010

Flash Rigged Sprite Update: Arghh!

So this threw a little bit of a kink into my plans. I've always preferred Toon Boom's "trace bitmap" feature because it leaves the background transparent and overall has a better look to it. So I went into Photoshop and broke down my enemy sprite to different sections that I could run Flash's bone system through. That worked out fine (if not terribly tedious).

Next, I exported all of my layers to separate files that I could take into Toon Boom to trace and then color. All of that worked great and I found a color palette that I liked.

The problems came in when I tried to export my Toon Boom project in Flash for the rigging. Previously, Toon Boom had created an importer for flash that would bring in the project and name the layers. At this point, there is no such thing for CS5. Huge bummer. For now, I may have to see if I can export to and "swf" file and pull apart the stuff there. Needless to say, that would suck.

In the mean time, I have included the newest edition to the size chart. And, yes, I realize I haven't done his hands yet. I just get too excited.

Saturday, July 17, 2010

Flash Rigged Sprite: Prologue

Odd how a lot of my favorite sketches start on yellow, ruled notepad. For some reason or another, sitting down with a sketch pad to get some work done doesn't do it for me. However, if I'm sitting at my desk at lunch time and have a ball point pen and a legal pad near by, I can usually churn something out. I guess it is just a product of the odd times I'm inspired.

So I found a video on Youtube concerning the bone tools in Flash CS4/CS5. It looked simple enough and I wanted to finally give it a shot. I will mostly use this for enemy characters and do not intend to use it for the full range of motion. More likely I will use it for idle animations, but never the full range of motion. Hopefully it will cut into the animation time and free up some resources for more hand drawn stuff.

Hopefully I can give it a shot tomorrow. I'm going to try and do a step-by-step of the process, but I don't think it will be refined enough to call it a tutorial. I should have more to post soon.

Thursday, July 15, 2010

Chapter 9 Finished

Just finished the chapter on entering user input from keyboards. Seemed like quite a bit of code with a little janky-ness for what it was trying to accomplish. Might go through and double check the code because I ran into a few problems. Couldn't quite get the "Shift" code to work and noticed some differences between the website examples and the ones in the book. The odd part was that they weren't differences from my making mistakes, but actual corrections after print.

The more exciting news is that I'm moving on to the last section of the book (Part 3: Writing Proper Games)...which still accounts for half of the pages. None the less, I'm excited that I'm still progressing forward. I'm also looking forward to possibly learning how to set up tiles in XNA just so I can start building assets for my city and seeing how they look. Looking at the book, it probably still won't be for a while, but I'm excited to get into the next chapter regardless.

Wednesday, July 14, 2010

Worth A Read

I bumped into this article a few years ago and thought it was completely fascinating. It's a pretty thorough account of the creation of Street Fighter the Movie: The Game by one of its creators, Alan Noon. It discusses certain design decisions as well as capture sessions and difficulties with the technology. I highly recommend it. Actually, I wish I could find more frank and honest postmortems from this generation of games. I'll have to spend more time at Gamasutra and reading RetroGamer.

Original Post

PDF Download

Also, tonight I'm hoping to sit down and finally get through the next chapter of the XNA book as well as add some new ideas to my design document. We'll have to see how the rest of the night pans out.

Tuesday, July 13, 2010

Looking to the Past and Preparing for the Future

So I was on a bit of a Retro Game kick (for a while now) and I started looking up some of my favorite older games. One that I had a particular fondness for was Xybots. It was pretty much the father of "first person shooters" and was birthed from the idea of creating a new Gauntlet game in the 3rd dimension. Designer, Ed Logg, was turned down and made Xybots, a sci-fi shooter that had you travel through mazes much like Gauntlet. I always thought it was extremely entertaining and a unique way to simulate polygonal environments (not sure if "3D Games" still means what it used to).

Perhaps that was why I was thinking of Xybots today: because I appreciated its simulation of 3D space. When I first decided I wanted to take up game programming, the question of doing it with polygons was immediately brought up to me. Maybe I thought it sounded too hard for one man to accomplish, but I'd like to think with my art and film hobbies, I might be able to achieve a higher quality than if I were to learn CG modeling and programming. The idea of simulating certain camera effects has fascinated me as long as I can remember. I remember being particularly enamored with the multi-plane effects achieved by Disney as early as "Snow White" as much as the focus pulls and compositing used in "Who Framed Roger Rabbit." Its these type's of effects that I'm interested in attempting in my own game (where necessary).
So I started looking up Xybots when I saw that I actually already owned a copy on my Midway Arcade Treasures 2 disc. Also to my surprise, I owned Rampage World Tour (whose cities are a direct influence on my current game), Gauntlet II, NARC, MKII & III, and a host of others. Delving deeper into the disc, I noticed that certain games had video features discussing the design and choices behind a few of the games (A.P.B., MKIII, NARC, and a couple more). It was fascinating to see the guys that made the games discussing their miniature teams, limited resources, and the mistakes that they've learned on the way. Seeing what they accomplished with so little should be as inspiring as the work coming out by independent developers (in my opinion). I would highly recommend checking to see if you have one of these games laying around or if you can find the video content on Youtube.

On a similar note, I bumped into this video on the history of fatalities. Its in 3 parts (roughly 25 minutes) but its fun to watch and relive a time in gaming that may soon return.

Sunday, July 11, 2010

Chapter 8: Creating a Timer Finished

So I finally got past my problem with this chapter (thanks to the forum pointing out my lack of code) and finished. Although it was mostly about applying a timer to the game, it was more importantly about using "arrays" and "strings" in your code. I think I have a fairly good handle on it, but will probably "get it" more once its used more thoroughly in practice.
If I have one complaint about this chapter, its that the author ignores additions and changes to the "Draw Method" that are essential to the program. The information is taught in previous chapters, but there is no mention that they should be referenced or be added. In addition, a later point in the chapter needs you to adjust the code to work once the "arrays" are in place.

This is in line with a problem I've had since the beginning, in that he never says: "Enter this code here." I never know if it is information that I should be typing, if I should be adding code to previous games we've written, or if I should just be reviewing the information and committing to memory. This time I had to apply it to memory because of the lack of Draw Method information.

With that said, I did notice that the problems that occurred with my code (not counting my earliest mistake) were easily discovered through applying what I've learned in the previous chapters. That is probably the best testament to this stuff "sticking" in my brain. I'm still a fan of the book and the author, but would have preferred it if missing information was at least acknowledged.In other news, saw Predators last night. Movie was pretty amazing and you should do yourself a favor and (if you liked the first one) go see it. It is exactly the Predator movie that I wanted and it wasted no time getting right into the action, while also building towards the reveal of the "movie monsters." I'm sure that last statement makes no sense, but it will when you see it. If I have any complaints about the movie, its that the special effects have gotten too good. While the "cloaking" effect looks good, I prefer the "concentric sections" version from the first 2 movies. I'm sure that had the franchise started today, the current version would be used, but I've always liked the old look. Either way, go see it.

Saturday, July 10, 2010


Still plugging away on the XNA book. Today's chapter was all about starting a time and using the variable created from the timer to translate a score. Of course I'm already running into trouble and the frustration is building. The concept behind the chapter is to begin a timer when the "Start" button is pressed. The code sets the timer to -120 when the button is pressed, then the timer is told to update afterward. Once the timer hits "0", it is supposed to play a ding noise.

I have set up the code according to the book and added the sound effect to the content directory (although the book did not explicitly tell me to). I'm hitting the start button and am not hearing anything, which I should after 2 seconds.

It would be nice if these problems were a little more spread out, but I'm hitting snags at every chapter. Its also not helping that I feel that my questions might be annoying the forums, but I promised myself that I wouldn't be afraid to ask questions or let it deter me. On the bright side, I'm noticing the book isn't giving me all code (and not signifying that it might leave something out) so I'm constantly being tested to add in steps. I don't know if its to help me learn, but it has helped me realize that I am picking a lot of this up.
On a happier note, I recently finished "Alan Wake". I know that I wasn't particularly impressed with it at first, but after the first 2 chapters I found myself growing more interested in the story and characters. I also decided to stop playing it so late at night, which says a lot to the power of the atmosphere. I'd definitely recommend it, but wait till it drops in price. I caught it for about $40 per a sale posted on CheapAssGamer.
Also, the other night I read through the Indiana Jones 4 script written by Frank Darabont (Shawshank Redemption, The Mist, Green Mile). Everyone who knows me knows of the deep scars left by Indiana Jones and the Kingdom of the Crystal Skull. Counting Raiders of the Lost Ark as one of my favorite movies of all time, I saw that movie as a blatant slap in the face. While I do believe Darabont's script would have made a better movie (because of its superior depiction of Indiana Jones, more true-to-form Marion Ravenwood, and lack of Mutt) it still included "Nuked Fridges", giant red ants, and space ships. I never felt like those concepts belonged in that series, but can appreciate their sticking with an homage to the movie serials that inspired them. If you want to check out the script, you can find it at "My PDF Scripts".

Update: Once again, the forums straighten me out within minutes of my post. Turns out I missed the line of code that declared my game pad. Seems like a pretty stupid mistake that I was hoping was more the book's fault than my own. Sadly, it was my fault again. Thanks to Jrett at for his help.

Friday, July 2, 2010

Size Chart

Was tinkering around with my design doc and trying to think of the different variations of citizens that you will be saving. I got inspired to draw one. Mostly because I like seeing the art converted to the "pixel" style, but also because I hadn't drawn anything for the game in a while. The rest of the generic citizens will probably be designed more so that they can be only slightly altered and color swapped so that I can get some variety in there. But the "Save the Old Lady" concept was something I wanted to work into the game. Plus, it adds a different dynamic from the other citizens as far as movement speed.

I'll probably keep this size chart and add to it as I build the roster of characters. Hoping to do some more soon as I continue to work through the book. Speaking of, I'm hoping to take advantage of the long weekend and maybe get a couple of chapters done. We'll have to wait and see.