My wife thinks I'm crazy. I've spent most of the Memorial Day weekend, and most of the last four days I've had off before starting my new job, in programming my game. See my game screen shot below. Keep in mind that I'm using graphic placeholders while I wait for Mindy's anime card graphics. (It looks kind of funny with me playing against a kitty cat).
To refresh your memory, I am creating a battle card game, similar to Magic : The Gathering or Pokemon. It has character cards with a post-apocalyptic flavor.
Also over the last few days I've been playing alot of Magic : The Gathering Online. I originally started doing this to get ideas for gameflow. I have to admit that I have been playing alot and I like the game. But it has dramatically increased the game scope in my mind.
I originally had a limited amount of cards. I was going to have the player and the computer opponent both draw from the same deck and discard to the same discard pile. Then I decided that doing that would not be much fun. I wanted a game that I would be interested in so that I would want to play it again. So I decided to create a completely customizable deck for both player and opponent. I also decided that I liked the way that Magic allowed you to manipulate the draw deck and discard pile/Graveyard. Although I don't have that functionality in this game version, I wanted to leave the design open enough to add it later on and not to program myself into a box.
Since it is a card game, I've been using the Blackjack Starter Kit from the Visual C#.Net Developer Center. This was a cool idea at first. It uses a list of card objects for the deck and hand. This is where I began to run into trouble. I wanted a separate deck for both player and opponent, in addition to a separate hand, play area, and discard pile for each. So this took alot of extra coding to make the extra classes and code the architecture to move cards between theses entities.
Next was the card graphics. Each card is a pictureBox with another pictureBox in it. It has labels for Card Name, Card Type, Hit Points, Attack and Defense. The Starter Kit doesn't use Direct-X or a graphics API. It uses pictureBoxes throughout the screen. This is fine for the few cards on-screen in a Blackjack game, but becomes a drawing nightmare when you have so many labels and pictureBoxes on a Windows Form on screen. There were some serious redraw issues and I almost gave up because it flickered so badly. So, about halfway through the weekend I had a decision to make - restart with 2D programming using a graphics engine or find some other way to accomplish this. I decide to make the cards Dotnet user controls. Now each graphical card is a self-contained user control class, I create it dynamically, and it draws pretty fast. This also gives me room for growth in the future.
My cards in the hand and cards in play can be viewed with more detail by hovering the mouse over the card. Then the card will be shown in a larger view at the left. I got this idea from Magic : The Gathering Online.
The classes are done, the user controls are done, the cards are being read from an XML file and are dynamically filled (which has been done since this screen shot below). This week I will be starting on the turn flow and combat.
Screen shot:
Overall this has been fun. At times it has been too much like **work**. But I still have a month to go! I also plan on making a card database maintenance app so that players can add their own pictures and text. I am leaving this open ended enough so that someone could change it to any theme.
I have been very impressed with the other game submissions as well.