We are coming up on the last weeks of the project, or at least the portions of it I will be graded on, and I am focusing on quality of life improvements and fine tuning my opponent AI/card selection algorithm. After the group demo this past Friday I also added changing the player’s interaction when playing cards, adding card animation to when the opponent plays, and finally adding a delay to action so that there is some time between moves.
Day 1: The greater part of day was spent coming up with a beginner opponent card selection algorithm, hate calling it an AI since there really isn’t any learning happening on its part; maybe someday. The current draft of the algorithm can be seen below and it probably gives greater insight to my playstyle than to any official algorithm from an actual game developer. For the remainder, I worked on debugging issues that were cropping up when some of the modifiers were active; I just love finding edge cases.
Day 2: After the demo the majority of the feedback I received was the flow of the gameplay was a bit too hectic, as such I added delays to the opponent’s actions, and some of the player’s actions, such as when a card is actually added to the playfield, and ensuring that the turn does not change until after the card is done moving. By adding these delays, I feel that the player will be better able to understand what is going on during play. This whole process was a bit on the tricky side, since I had to go back and re-order some of the actions and move chunks of code into new methods. Doing this modification to existing code allowed me to use the C# invoke method to delay the execution of the card transfer, I used the same style of delay at the end of each round and each match. Another additions made based on feedback was a pop-up which would be displayed when the opponent entered a passing state. This should let the player know that they can continue playing cards until they run out, or the chose to pass their turn as well.
Day 3: For the remainder of the work week I implemented a pop-up that would follow the cursor; when it hovered over one of the player’s cards that had a special ability, or the board ability token (middle left object in the image above), the pop-up will contain an explanation to the modifier.
The biggest problem encountered during this implementation was finding that I had overcomplicated how I am handling abilities and the information surrounding them. If I have time over the next week, I will be going back to see if I can clean up some of the dependencies that I now see do not need to exist, as well as working on the opponent card selection.