Monday, August 27, 2012

Achievement Unlocked: "I Ludum Dog Dare You!"

Hi all,

This weekend was Ludum Dare (LD48) #24, with the theme of: "Evolution". I wasn't sure whether or not I would participate in LD48 or not. For those who are not familiar with Ludum Dare: LD is a 48-72 hour game jam that challenges game designers (or wannabes like myself) to make a game in 48 hours (solo competition) or 72 hours (group jam). The catch? The games that are submitted must adhere to a theme voted on by participants and chosen the moment the jam begins. Essentially, everything in a LD game submission must be fabricated by the participant(s). These include graphics, sounds, music, etc...

When the competition started on Friday night, I spent the evening relaxing and brainstorming. I considered making a platformer where choosing different paths unlocks different abilities/weapons for future levels (like Metroid, but without acquiring every ability in a given playthrough; choose one, lose the other). That idea, while good on paper, was impractical for a 48 hour solo jam session. The next idea I came up with was to make a scrolling shooter that featured evolving the main character and the enemies (also too ambitious, and not incredibly original). Finally I decided to evolve the game itself: take a simple game like Keep-Up or Pong, and evolve it into another game. I chose to take a Keep-Up clone and evolve it into a scrolling shooter with a Breakout clone intermediate.

The angle that I approached designing the game was to connect primitive early levels (rough, crappy designs with few mechanics) to progressively complex and vibrant end-game levels (better controls, more game mechanics, and better graphics). Not only would the game evolve, but so would my ideas.

I decided to use my most comfortable game design SDK: GameMaker (the free Version of GM8.1). I spent most of Saturday relearning how to use GM8.1 and building the Keep-Up and Breakout mechanics. I did relearn most of what I had forgotten about GM8.1 from my days making 1945. I had a tough time properly triggering thought bubbles at appropriate times. My Google-Fu did not let me down, and I was able to quickly solve problems other people encountered before - remember kids, if you don't understand something, don't ask your parents, just Google it! (not a real PSA, Google is not a substitute for good or mediocre parenting). Sunday I spent making the scrolling shooter level and wrapping up. In spite of my triggering issues, I was eventually able to make a finished game with a (crappy) title screen, and a (crappy) end screen.

Things I learned from this experience:
1. Never use test number of instances in a step event to create an object, draw a sprite, or set a timer, as it will often repeat these actions infinitely. Instead use another variable as a pretest before the number of instances test that is designed to only run once.

2. I love making pixel art to a fault: too much of my time was spent making complex sprite animations, particularly the Breakout blocks. (Although they do look very shiny and have a decent looking shatter effect.

3. Your game will never feel complete given time constraints- sometimes you just have to pick a cutoff point and start wrapping things up.

Speaking of time constraints... I managed to make my game while still performing a minimal number of required living activities like: grocery shopping, running to work to check on a freezer that was failing, eating, and getting two full nights of sleep. It is quite difficult to make a game at home over a weekend while attempting to watch a toddler, by the way...

Here is a copy of the finished submission. Overall, the game was the manifestation of my original design, but with much less content and polish than I had hoped to include. I feel like if I had more time, that I could make each mechanic more gradually introduced, and the final level more polished.

Completing my first game for LD is a landmark achievement, as I have a truly original creation under my belt now, but I don't feel much closer to becoming a game designer than I was last week. Once I become more comfortable with Unity, I may participate in another LD (most likely as a team member in a Jam) and use Unity to make my next game. Hopefully then I will feel closer to becoming a "real game designer".

I hope you enjoy my simple little game, and have a better understanding of why it appears to be inconsistent from level to level - it's intelligently designed that way.


Friday, August 10, 2012

Thursday Night Game Night 8-9-2012

When I was in college, every Saturday night, my friends in town would tear ourselves away from our World of Warcraft addictions for a few hours to meet up and play other games. Most often, we would play board and card games, and would only play console video games if there was a new title that we all could play together. We played games like Twilight Imperium, Robo Rally, Warcraft/World of Warcraft board game, CCGs (World of Warcraft and Magic: The Gathering). Every weekend, it was something different. We would still occasionally discuss the goings on in WoW, but often we were drawn into the games in front of us. I thoroughly enjoyed those nights, and would come to miss them when I entered graduate school.

Years later, I still keep in touch with my old friends, but I no longer live near any of them. Recently, I started playing games online again with one of my old friends: GundamX. GundamX and I have been friends since high school, and have started weekly gaming sessions again: this time on Thursday nights. Most often we play Xbox 360, but occasionally we play games on PC through Steam, or other online games. Setting aside one day a week to unwind and distance myself from late night game dev training sessions has been good for me. I use the opportunity to relax, but also to be inspired by new game experiences. Often times, AAA titles like Diablo 3 and Team Fortress 2 dominate game night for several weeks on end, but occasionally we turn to other titles, if only for that night.

This week, we tried Killing Floor by Tripwire Interactive. The game is an FPS that is made with the Unreal engine, and is available on Steam. The game has mechanics that remind me of Counter-Strike, Call of Duty: Zombies, Left 4 Dead, and Borderlands.  Overall, it took some time to get used to the controls, but quickly became fun, and it is likely that I will play it again soon.

The theme of the game is co-operative survival horror: several zombie-like specimens will spawn and attack the players' positions from several attack points. Many of the areas have multiple points from which these enemies can attack from, so camping one location is ill advised. The game play is divided up into several waves, where each wave spawns an increasing number and variety of specimens. In order to survive, players must constantly reposition across the map in pursuit of the game's only friendly NPC and part time narrator/cheerleader: the Trader. As players rack up the kills, they earn money, which can be spent on better weapons, ammo for those weapons, grenades, and body armor. The aiming system utilizes iron sights and has no targeting reticule. These attributes remind me of the zombie mod from Call of Duty.

Also, any weapons owned or found (except for the two starting weapons) can be sold to the Trader. Items take up carrying capacity (called blocks) for each player, each block that is used also slows that character down, so if you're the type who likes to bring the big guns to a fight, then you'd better know how to kill with it, because you won't be able to outrun some of the faster specimens while lugging it around. The economy created by the Trader, and the effects of weapon load outs on move speed reminds me of Counter-Strike.

The specimens that make up the enemies of the game each have their own unique skills. Clotters look like ordinary zombie type enemies, but have the ability to root you in place until you kill them. This mechanic alone can get a player killed fast, and greatly contributes to the frantic run 'n' gun nature of the game. Other examples of specimens have bodily fluid projectiles, ranged weapons, cloaking, and super-speed, (just to mane a few) providing a nice mixture of player tactics when encountering each. Most of the time on the easier difficulties, shooting at range in the general direction of the enemies is sufficient to dispatch them, but with higher difficulties, other tactics may apply. Having a variety of enemies with unique abilities and strategies reminds me of Left 4 Dead's Special Infected.

Finally, there is an RPG-like element to the game, where each profile you make can choose a specialty, complete with a list of perks. Performing actions that match that play style (using explosives with the demolitions specialty) earns points that contribute to new levels and better perks in that specialty. In Borderlands, each weapon class has a similar system of weapon proficiencies that boosts damage on the weapons your character uses the most often. This encourages new players to branch out and try new weapons once they get comfortable in the game. At any time, the player can switch perks that they want to level or use on the fly.

These are only a few observations I made about the game within the 2 hours that I played it. At first, I had difficulty coping with the iron sights (as I often do in recent FPSs), but once I adapted, the game became fun!

I will continue to log these gaming experiences along with my game dev training progress as often as I can.

Thanks for reading!



Wednesday, August 8, 2012

Our Journey Begins

Let's Tarantino it:

Back when I was in high school, I took a programming class my senior year. This was a big mistake: I should have taken it much sooner! I loved that class! I learned most of what I know about programming from that class. The class was in C++ programming. I learned variables and declarations, how to manipulate variables through code and user input, loops, and switches. We also briefly worked with some simple graphics programs too. One of the two final projects was to make a bill tracking system that calculated what portions of a given user's payment went to interest, and what portion went to paying off the balance. The other was to make a screen saver program (not actually implemented, just the animation) what involved making a random number of circles, with random color assignments, that had collision detection with the screen edges and each other. Very similar to the bubble screen saver, but with solid circles and a solid white background. I don't have any idea what happened to my old code files. They probably wound up on a floppy somewhere, and eventually were lost.

In my early college years, I took "Computing for Engineers". I worked with another programming language (I think), Matlab, and Excel. I don't remember much about it. Later on, I did take an intro computer science class that brought me back to C++ all over again. It was much easier to learn the second time around, but I wasn't as thrilled about it as I was in high school. I think my brief loss of passion was due to my infatuation with research. I worked with Dr. Mark Merchant, who researches alligators and similar species, particularly their immune systems, which have excellent anti-microbial properties.

Flash forward to recent years: After graduate school, I came to realize that my lifelong passion for playing video games had evolved into analyzing and studying them as well, and has started to rekindle my passion away from research. One example, in my TF2 days, I used to spend a fair amount of time spectating and watching the top players on each team (or each class) and studying their play styles: whether or not they stuck with a group, if they attracted medics (pocket medics), direction of attack, etc. I also spent a fair bit of time on some TF2 forums reading and posting about the game, but my favorite posts were speculations on new weapon load outs (after the medic update), and proposing new classes.

I enjoyed posting ideas so much, I decided to look into the field of game design. I read Tom Sloper's FAQs and other resources, I contacted a few developers from Iowa: Intuition Games (the closest game dev contacts I was aware of at the time), and got started with Game Maker, with the intent to move on to Flash. I was getting excited about designing games and was hopeful about the future.

Recently, I discovered OGDA, a local game dev association! This group supercharged my interest in the field, and has been instrumental in establishing contacts right here in Omaha. I have met several aspiring game devs, who want to succeed in the business as badly as I do, and even a few who have! I cut my game testing teeth on Vince Twelve's Resonance. I also showed up for the last Ludum Dare, which had a low turnout, but was still an excellent experience! After meeting at OGDA for a few months, I decided that I wanted to learn to use Unity, so I changed gears, and started studying C# and JavaScript, as well as studying books and other resources.

Two weeks ago today I was informed that I was going to lose my job in 90 days. I was surprised at first, but I decided to make lemonade (so to speak) and use this opportunity to kick my self-training up a few notches. I now have redoubled my efforts to learn JavaScript and Unity, as well as game design exercises. At the same time, I am applying to a variety of biotech companies to take advantage of my current education and work experience. When I am ready, I will start looking for opportunities in game development locally.

As for my game dev progress:

I am almost done learning the basics of JS, I just need to learn how JS handles classes, and I will be able to complete the next set of WBS Unity exams. Incidentally, I passed the first two exams last week.

In Creighton's Unity book, I am about to learn how to make a GUI, which I did a small amount of in Game Maker, but only scratched the surface.

As for the Challenges for Game Designers progress: I have read chapter 2, and have created a simple race to the finish game similar to chutes and ladders, except involves racing up and out of a sinking ship before the decks flood and a player is eliminated. The game so far isn't playable yet, as I still need tokens to represent players, and the water level. I also need to determine how the players will move, and I am favoring 1D4, to keep the game slow paced for the players and keep the pressure of impending doom upon them.

The other game exercise is a territorial acquisition game, with triangular tiles on a star shaped map. Players draw tiles from a deck every turn. The number is dependent on how many tiles their opponent has captured (still working on balance: how many occupied tiles equals an extra draw?). The method of capture: rock-paper-scissors (RPS). a tile and capture token may be placed on the board tiles to capture that tile. Neighboring opponent tiles will contest the placement of the new tile via RPS. If a player wins the contest, his or her opponent's tile is converted to the player's by replacing the capture token. If they tie, neither player wins, and each players' tiles retain their capture tokens. If a player chooses to, he or she can also intentionally lose a tile to the opponent. The game tiles will have a random assortment of symbols on each edge: rock, paper, scissors, gun, or dynamite. Rock beats scissors, scissors cuts paper, paper covers rock. Gun defeats rock, paper, or scissors, ties to gun, and loses to dynamite. Dynamite destroys all 3 surrounding tiles, removing them from play but is destroyed in the process. I love games that involve strategic planning, combination strategies (combo moves), and a smidgeon of luck - so far I like this second game more (if you can't tell...).

More to come, wish me luck (again) on the JS exams!


Thursday, August 2, 2012

WalkerBoysStudio Unity Exam 1 and other news.

I just finished watching the first 60 Unity 3D tutorials from WBS. They did an excellent job introducing all of the basic interface and functions in Unity. Later today, (after I sleep, I suppose) I will take the first exam, and try to plow through the material for Exam 2 as well... I can't wait to try their game tutorials!

I am simultaneously following Ryan Creighton's intro to Unity book: Unity 3D Game Development by Example. I completed the first four chapters now, and made a simple version of keep up, with nothing more than a camera, a sphere, and a very flattened cube with a short script attached to it. The original version of the game in the text did not work as well as I had expected on my laptop; the movement of the paddle seemed limited and restricted to a small area. Also, I could not figure out why there was a need to move the paddle along the z-axis. For these reasons, I made a few modifications on a separate script to make the game simpler and more responsive.

For some unknown reason, after I did this the paddle decided to turn into a crazy pinwheel, propelling the ball in a random direction if I so much as breathed on my mouse! (0_o) I wound up rewriting my modified script a second time from a copy of the original. Now I have a simple keep up game in 2D with a paddle that (for the time being is on Ritalin and) responds naturally to mouse movements across the whole screen. Joy!

Both Unity 3D resources are now directing me towards basic scripting (the real skills I need to develop). Wish me luck!