Card game in Unreal engine 4
Introduction
This project was made in Unreal Engine 4 in 5 weeks half-time as my examination project at The Game Assembly.
I chose to make a card game because I have always been a fan of card games and board games, and I wanted to test myself as a game designer instead of a game programmer.
The role of game designer in our group projects fell onto
the level designers, when it was necessary to have a game designer, so I did not have a chance to develop my skills during our other projects.
The choice of Unreal 4 as my game engine was mostly down to me wanting to learn the blueprint system. It stood between it and Unity, which is the engine used by most larger companies for TCGs, but I felt I could make greater progress
by using the blueprints in Unreal.
In retrospect I think I should have chosen Unity, as there was not much support for my specific needs on the Unreal forums and I had to learn much without help, which hindered me for longer
periods.
Concept
The concept of my game was a mix of the "runs" from Netrunner and keyword triggers from Magic: The Gathering.
You would on your turn have access to a set of performable actions, each with a specific keyword. These actions would
be written like "Inquire: Draw a card". These keywords would then allow cards in play or in your hand to trigger additional effects.
The goal of the game would be destroy your opponent's capital. The capital would be represented by a card in front of the each player and would have a regular city on each side of it.
The opposing cities and capitals would be
connected by "lanes". These lanes would be where you and your opponent could play your cards. In my first concept, these would be divied into two types, buildings and soldiers.
Actions
- Inquire: Draw a card
- Tax: Add 1 Coin to your Treasury
- Build: Play a Building card in a chosen lane
- Obligate: Activate an ability on a Building card you control
- Conscript: Play a Soldier card in a chosen lane
- Attack: Attack with a Soldier card in target lane
- March: Move target Soldier card to an adjacent lane behind any Soldier card in its relative position, Or; Target Soldier card you control swaps places with a Soldier card you control in front of it or behind it
Soldiers
Soldiers would be able to be played in any lane but behind any existing soldiers controlled by that player, representing reinforcements lining up on the battlefield.
Soldiers have two standard actions available to them, Attack and March.
Attack could be used by the soldier in the front of the lane. It would then deal damage to whichever enemy card in that lane that is in front.
March
could be used on any soldier and it would then switch place with the soldier in front or behind, or move to another lane, either in front of or behind the soldier in it's relative position.
Buildings
Buildings would be able to be played in any lane but in front of any existing buildings controlled by that player, representing the cities growing larger.
Buildings would have an effect printed on the card, that could either be an ability triggered by a keyword, or an activatable ability which I call Obligate. These abilities would in most cases be an improvement to standard actions that the player could take, for example a card named "Bank" could allow you to make 2 coins per action used, instead of the usual 1.
What happened?
I had great ambitions for this project, I had an idea that I was excited for and thought could be a fun game. Unfortunately not having any experience with Unreal meant that I hit many speed bumps during my 5 weeks and the end result is not very representative of the product I had in mind.
Because of this, the project had to be refocused from a game design project, to a "Learn Unreal" project. Advanced features had to be cut and I had to focus on basic implementations, such as playing a card, gaining and spending
coins and drawing cards.
Everything was made from an empty project so every feature took time to implement. My greatest obstacle was how to make different actors communicate with each other. My solution was that the game
state class was a middle man for every "interactor" interaction.
For not having used Unreal 4 ever, I think the progress I made was adequite and I am still confident that my game idea is solid. So I do not consider this project a failure, and given more time, I think this project could have been much more.
Features implemented
- Drawing cards to your hand
- Cards in your hand arrange themselves in an arch
- Hovering over cards in your hand places them in front of other cards
- Gaining "coins"
- Spending coins when playing cards
- Playing cards if you have enough resources
- Played cards are played in a predetermined lane order (left lane, right lane, middle lane)
- Spending action points when gaining coins, drawing cards, playing cards and attacking with soldiers
- Regaining action points when passing the turn
- Data table with card information and stats
- Cities can take damage and have an initial health