Make a CCG – Action System

In a game like Hearthstone, every action is significant and can serve as the trigger for a whole new sequence of actions. This includes obvious actions like attacking and casting spells, but also includes less obvious actions such as drawing cards and even changing turns! Although you may already be familiar with event-driven programming, you may not have thought about ways to sort event responders by custom criteria, or considered how to invoke the handlers over time so that you can also play animations in sequence. Let’s look at some architecture to support these ideas.

Continue reading

Make a CCG – Aspect Container & Test Runner

Whenever I begin a new project, the first thing I think about is how I want to set up the architecture. Basically I am looking for the answer to this question: “How will all the stuff know about all the other stuff?”. In the past I usually resorted to a pattern called the Singleton to make it easy for data to be accessible from anywhere. In this case, I don’t want to rely on Singletons because I want my code to be testable, and from what I have read, the two don’t tend to go together well.

Continue reading

Make a CCG – Intro

The goal of this project series will be to create a foundation from which you could make your own Collectible Card Game (CCG) / Trading Card Game (TCG). I sent out a poll to see what everyone would be most interested in building, but the results were pretty much the same for every entry and included a bunch of games I had never played. So, I decided to base the series primarily on Hearthstone, since it is my personal favorite.

Continue reading

Unofficial Pokemon Board Game – Gym Setup

You can catch, train, and manage a solid team of Pokemon, yet asside from the joy of the journey itself we are still lacking any real goal for the game. Much like the cartoon, the goal here is to earn gym badges. The first player to defeat all four gyms is the winner! In this lesson we will lay the ground work for this by creating and updating the models, factories, and systems necessary to support it.

Continue reading