top of page

Card Garden - Sprint 1

For the first 2 weeks of work I was assigned a variety of tasks by the producer of the team. These tasks were organized on Trello and completed between 1-3 days for each task.

​

My Completed Tasks:

​

  • As a producer, I would like a class map of the card system in the game to improve workflow later in production.​

​

Card_Mechanics_Class_Map.jpg
  • As a team of programmers, we would like a place to share our code with one another consistently.​

​

Due to limited seats on Unity Collab and a desire to keep minimal hands in direct contact with the project, I set up a GitHub repository for the project and gave the programmers access to it.

CG GitHub.PNG
  • As a player, I would like to have a deck of cards so that I have cards for my hand.

​

  • As a level designer, I would like to have the ability to change the card values so that I don't have to use code.

​

For these tasks I set up a scriptable Card object and a CardManager using my Class Map as a guide, and making adjustments as necessary. Initially, it was not very intuitive to assign card counts in the deck using two lists, so I solved this my creating a new Class inside the CardManager called DeckQuantities which just stores a Card and an integer for the amount of that card in the deck. Then I made an array of DeckQuantities[ ] public so that level designers can easily add more cards and the corresponding quantity of each type. 

Card.PNG.png
CardManager.PNG.png

I also designed some template cards in Photoshop for a better visualization of the card system

Building Card.png
Minion Card.png
  • As a player, I would like to be able to move a card into a designated space on the screen so that I can interact with all systems of the game.

​

  • As a player, I would like to be able to play the cards in my hand on the grid.

​

  • As a player, I would like to be able to discard an unwanted card so that I may have better options in my hand.

For these tasks I put together the card system with a UI interface for the hand zone, a draw pile button, and a discard pile button. I also used our framework for the tile system and a custom 'TileSelector' script to highlight tiles and play the selected card when the mouse is clicked.

​

Initially, I wanted to use a drag and drop system but I realized that when dragging a card onto the grid the card itself covers your view of where you want to place. Instead, I set it up so highlighted cards are scaled up in size, and selected cards move up a bit as well. Once a card is selected, you can place it on tiles (depending on the enum types of the card and tile). For example, a Minion type card can be placed on a Lane type tile, but not on a Building type tile.

​

I also ran into a problem where minions/buildings could be built on top of each other, so I made sure to check if a tile has card data stored on it already. If the tile's Card data field is null, then you are able to place a card on it. Otherwise it will display a "cannot build there" message in the console.

  • As a player, I would like a counter on my deck of cards so that I know how many cards I have left.

​

This task was a quick addition after everything else, and a nice note to end on for Sprint 1. One problem I found was that I could select tiles behind cards which made for some accidental placement of things when trying to select a different card. I fixed this by disabling the TileSelector raycast check if the mouse pointer is below the top of the hand zone.

My next task starting in Sprint 2 will be:

​

  • As a player, I would like to be able to draw cards into my hand using the timer or paying a fee so that I have the freedom of more than one option.

​

And my other tasks following that will be:

​

  • As a player, I would like my buildings to take a certain amount of time to be built so that I feel pressure and danger as enemies march my way.

​

  • As a level designer, I would like a version of the project that I can create assets in so that I can do work and avoid impeding other teammates.

​

  • As a player, I would like my Generator Building to generate a set amount of income over a length of time so that I can have a passive form of income.

​

  • As a player, I would like to collect money from all the enemies my Towers kill.

So far everything is going smoothly and I should have little to no problems tackling these tasks in Sprint 2, I'm looking forward to it!

bottom of page