Sunday, January 17, 2010

More Exciting Events in NC!

So I've already mentioned the Global Game Jam, occurring January 29-31, in my previous post. Since then I've learned of two more exciting events coming quickly, so if you live in NC be sure to mark your calendar!

FEB 6: Carolina Games Summit
This one-day event, sponsored in part by The Escapist, takes place on Saturday, February 6th, at Wayne Community College in Goldsboro, NC. The day includes a number of lectures on programming, art, hiring processes, and more. Numerous game tournaments will take place throughout the day. Online registration is highly recommended; you may not be able to get a ticket just by showing up, so check out the website for ticket information.

APR 7-8: Triangle Game Conference
The second annual Triangle Game Conference takes place April 7-8 at the Raleigh Marriott City Center in Raleigh, NC. Dubbed the "leading East Coast event for developers and professionals working in the interactive entertainment and serious game industries," TGC is sure to be the area's top educational and networking event for those interested in the business of game development. This event was established by the Triangle Game Initiative to focus the Triangle area as a major hub of game development. If you live in the area, this is the event this year you don't want to miss!

Are you coming to one of these events??? Let me know in the comments! I'm more than happy to meet new people and look forward to making new friends. See you there!

Wednesday, January 6, 2010

Register for the Triangle Global Game Jam!!!

I just checked the Triangle Global Game Jam website and am excited to see this year's Triangle game jam will be hosted at Icarus Studios in Cary, NC! I have no doubt this will be a very exciting event. The Global Game Jam, hosted at over 100 locations across the world, is a 48-hour game-creation event designed to promote creativity, innovation, and community. The jam will take place January 29-31, 2010.

We need more participants, so make sure to SIGN UP!

Monday, January 4, 2010

Current Project: Tower Defense Game

I've noticed the guys over at Vortix Games occasionally take a hiatus from posting on their blog when busy with a given project. I think this is certainly understandable when you're part of a small team and would like to point out they have done a terrific job on their blog - definitely one to check out for some game development insights. And so I begin this post by admitting I've been doing the same... but hey, it's not so bad because I'm not the only one, right?!

At any rate, I would like to briefly mention the new game project I've been working on. A couple months ago I had the great pleasure of meeting a couple artists in my area, and we've since been working to design and build a Tower Defense game. For the uninitiated, gameplay consists primarily of setting up a series of defenses such as turrets or guns and then watching a flood of enemies attempt to navigate from their start position to a given destination. This is an entirely new game genre to me, but after having played a few games online (such as Whiteboard Tower Defense) and working on our current prototype, I'm excited to see how it will turn out. One thing is sure: with professional artwork it will definitely look better than my basic Pong clone!

This project has some interesting challenges. For example, it is entirely a 2D game; I've been learning 3D development for so long that it is a welcome switch of gears. It is also being developed for the XBox 360 using XNA Game Studio 3.0, which allows me to put my existing C# skills to use, just in a new way. I use C# every day for web development but this is my first experience with XNA. Even though the target platform is the XBox 360, I plan to make it playable on the PC as well.

I hope to reveal more about the game as our agile design/implementation/testing rounds progress. Keep an eye out for future posts, even if they're not terribly frequent. With any luck, the completed game will appear here for your enjoyment!

Wednesday, December 9, 2009

Game Deployment Woes (Just Make It Flash!)

In one of my previous posts I released a Pong clone game that, albeit not polished, was a fully working game and I was quite proud of it. Of course, as sometimes happens with the deployment of Windows-based games, I was dismayed when I learned nobody who actually took an interest (thanks to you faithful few!) was able to run the game :(

That's when the fun began. I asked one friend to make sure he had the DirectX runtime installed and even to reinstall it - no luck. I then learned the C++ runtime was required and had the same friend perform that install - no luck. I tried two different machines with the same installations - no luck. Finally I learned it was not just requirements on the target systems; it turns out I had included a debug version of a DirectX library in my project, which allowed the program to be created and executed, just not in a way that it would work!

You see, as a developer, I have all of the tools required to run any program I create. But other machines don't necessarily have these tools/environments. So I think I'll use the following plan for deploying my next game.
  1. Create a game, coding and testing in DEBUG mode
  2. Change the project from DEBUG to RELEASE mode
  3. Replace DEBUG libraries with RELEASE libraries
  4. Build the project in RELEASE mode
  5. Create an installer project to install the game, the C++ runtime, and the DirectX runtime
  1. Create a Flash game that can be played from a web page in any browser!
Now all I need to do is learn to program a game in Flash...

Wednesday, December 2, 2009

Triangle IGDA Chapter Meeting

Just a quick update, I'm excited to attend my first IGDA chapter meeting and extend a big thank you to my buddy Wes for making me aware of it! Event details can be found here and I've posted the basics below.
Date:  December 3rd, 2009
Time:  7-9pm
Place: Buckhead Saloon
       411 W. Morgan Street
       Raleigh, NC 27603

More info can be found on the Triangle IGDA chapter page, which dubs this event a "holiday mixer" and encourages attendees to bring non-perishable food items to support the Food Bank of Central & Eastern North Carolina.

Hope to meet you there!

Tuesday, November 3, 2009

Pong Postmortem: Completing a Game in 24 Hours!

For the uninitiated (or techno-illiterate), a "postmortem" is a wrap-up discussion summarizing the good, bad, and ugly of a project following its development. What follows is a summary of the creation of my first completed game, a clone of the Atari classic Pong.

My Pong clone was created in 24 hours, though not in the type of all-nighter hack-a-thon you might expect or even a typical three work days. I have a full-time day job, so development is typically done late evenings, but fortunately I kept track of the amount of time spent on specific components. Note that I started with a working Direct3D application from Luna's book Introduction to 3D Game Programming with DirectX 9.0c: A Shader Approach. Here is the hours-to-effort breakdown:

  • 10 Hours - I dedicated the first 10 hours to rendering the basics of the game: the board, two paddles, and the ball. This included creation of graphical "placeholders"; I'm not an artist but I realized I could come back and make the art fancy after everything worked. Getting the ball in motion and then allowing it to bounce off the walls and paddles (Collision Detection) was the second major focus. Finally, the simple mechanic of allowing the player to move a paddle up/down brought the game into a playable state.

  • 4 Hours - The primary effort of the next stretch was to implement a basic computer opponent (Artificial Intelligence), and I started with a perfect opponent whose vertical position matched the ball's position at every moment. When adding different game modes, this perfect opponent became part of the game's Practice Mode. I added the ball's motion blur effect just to improve aesthetics and moved hard-coded values to an include file for easier maintenance and testing.

  • 4 Hours - In this phase I worked on creating a computer opponent that moved more realistically but was also fallible; a perfect opponent gets boring to play against! I added different difficulty levels (easy/medium/hard), which works by choosing a random "reaction time delay" between when the player hits the ball and the computer opponent is allowed to hit the ball. Obviously, as difficulty increases, the computer's reaction time improves to make it a more formidable opponent.

  • 4 Hours - At this point the game was playable with differing levels of difficulty but no clear way of selecting game settings. I created the menu system and added scoring to determine the winner.

  • 2 Hours - The last step before I considered the game completed was to work on the art, which could clearly still use some work! :)

Final Thoughts:
I knew this project would be relatively simple because there are only four game objects to keep track of: two paddles, one ball, and one board. However, due to its simple nature, I was inclined to hack it together quickly and did not follow strict OOP (object-oriented programming) principles. The majority of the game code is in a single monolithic file. I also resorted to reusing an existing class designed to output simple statistics to display text-based menus. But worse, the same class used to show all menus and text became my game state manager since I needed to know which menus had been processed. I then extended it to display current score values and to show which player had won the game. Although I could have put a lot of time into doing it the right way, the purpose of this effort was to get something done. In future endeavors I plan to follow better OOP design.

The best part of this project is that I actually completed a working game! I am proud of the subtle but effective motion blur effect. The game doesn't have all the bells and whistles (seriously, no sounds or music yet) but it is playable, implements Collision Detection and Artificial Intelligence, and has a clearly defined winner at the end. Some may even consider it fun :)

Friday, October 30, 2009

PONG Clone Completed!!!

It is with great pleasure that I announce I have finally completed a game of my own! There are some obvious improvements that could be made (adding sound, better art, etc.) but it is a fully working game with Artificial Intelligence (AI) for the computer opponent, basic menus, scoring, and clear winning conditions. I'm particularly proud of the ball's motion blur, a subtle effect that makes the game look more polished.

The left paddle is controlled with the W (up) and S (down) keys. Likewise, the right paddle is controlled with the O and L keys.

Download the Game Now!

I would be very appreciative of any feedback; just leave me a comment here on the blog to let me know what you think. I will provide a breakdown of the effort spent on this simple game (done in 24 hours!) in an upcoming post.