The Reaping: Choosing my Favorite Project

In my  previous post I outlined three projects that I could possibly complete for my Senior Project this semester. Of those three projects, I have now honed in on the one I feel the most attached to: the Triple Triad remake.

Before I move further with the implementation of the program, I will be exploring the topic further and expanding on my previous post.

As a reminder, I will be using the Unity Game Creation Engine to create this project, as it gives me the full freedom of creating my own assets from scratch, and the writing of my own code to support the project.

To make this project much more manageable, I am going to split it into three main phases, or milestones: Object and UI Creation, Coding Gameplay, and AI creation/ Final Debugging. These three steps do not need to be completed in any specific order, but each of them is required for a complete working game that can mimic its predecessor.

Object and UI Creation

The first part of this project will revolve around me creating all the assets that I will need for the program. This step includes the creation of the game board, the playable card objects, and the user interface (UI).

When making the game board I will be expecting to make use of a matrix to keep track of each of the playable locations in the game. In this case I will be using a 3 by 3 matrix that will contain the XYZ coordinate values of an object that will reside within each element of the matrix. These objects will be used to track the availability of that specific location, and will also compare the values of the card taking residence in that space (if any) to the other cards cardinally surrounding it.

The playable card objects will be created to be held in a hand of five cards by the player, and will be visible to the player at all times during the game. What makes these objects special is that they will have 4 cardinal values (1 for each direction) that will define their “power” in that specific direction. When a player plays a card that has more power than an opposing card in any direction, then those opposing cards will fall into the current players control.

Finally the user interface of the program will have a few elements to it, but I would like to keep it as minimal as possible due to the nature of the project. This part of the creation process includes the addition of counters that will keep track of how many cards each player owns on the game board, a cursor to allow the player characters to select which card to play and where to play it, and an opening menu so the player can choose whether they would like to play against an AI opponent or a friend.

The amount of time that I estimate this section of the project taking is a total of 3-4 weeks.

Coding Gameplay

In this section of the project I will be hammering out exactly what players can do during their turn, what happens when they play cards on their turn, and will keep track of which cards belong to which player on the game board.

The player turn consists of two separate actions. First the player must choose a card from their hand, and second the player will place that card on one of the nine possible spots on the game board. Once the player has completed these two actions, their turn will immediately end, and the same process will be mirrored for the second player. When both players have completed their respective turns, a round will have passed and the turn order resets to the first player.

When a card is played from a players hand onto the game board, a series of comparison functions will be activated to see if the player wins any cards. These comparison functions are simply comparing each of the possible cards opposing cardinal values, and if the card currently being played has a higher value than any of the opposing values they will win those cards.

Once during each players turn, a function will access the current state of card ownership on the game board. In other words, the function will analyze how many cards each player owns and send that data to the UI to be displayed to the player(s).

I expect this section of the project to take some time, and I am uncertain how long it will exactly take. Just to give it a number, I can estimate this section to take anywhere from 5-6 weeks.

AI Creation / Final Debugging

This is the portion of the project that will be the most difficult for me to complete. I have no prior knowledge in creating AI for gaming programs such as this. However, after doing some research into two similar projects, I am sure that creating a complex AI for the player to play against will be possible.

The first of these two projects is from GitHub user Mnylen who based his Triple Triad recreation project on the negamax algorithm. I have never encountered this algorithm before so I decided to look it up on StackOverflow. If I implemented this algorithm I would be using a tree data structure in order to explore all possible moves on the game board given the cards in the AI’s hand. After exploring all possible moves, the AI will determine the “best” move and execute it. I do see one problem with this though, if the AI will always make the best move, then can the player ever win? If I were to base my program on the negamax algorithm I will have to create exceptions to the base algorithm in order to give the player a chance at winning.

The second project I found is from Visadb’s GitHub repository in which he created a bot to play triple triad for the player that would never lose, given that the chance to win was inherently possible. What I like about the algorithm that Visadb uses, is that he created it to be used only in this special circumstance of playing triple triad. It helps boost my confidence in the fact that if I needed to I could create my own algorithm to suit my programs needs. I don’t want to make the game impossible for the player to win, but rather give them a chance to outwit a very crafty AI system.

In addition to coding an AI for my game, I will also be using the remainder of the approximately 6-7 weeks left in my project to complete any final debugging and add any special flare that I would like to the program before calling it “finished”.

Final Thoughts

The more time I put into planning this project, the more I find possibly hang ups and roadblocks. To be completely honest, I am unsure as to how the AI system is going to work for me, if it will work at all. However, if half of a week of research can ease my thoughts on most of this process, then I am sure that as soon as I hit that roadblock I will find a way through it. I cannot wait to get started coding, the more I think about it the more excited I get.

Sources

https://github.com/mnylen/triple-triad

http://stackoverflow.com/questions/14787857/how-to-use-negamax-algorithm

https://github.com/visadb/ff8_tthelper

Cards, Classic Games, and Databases: Ideas for my Senior Project

The final year of my time at Berea College has begun, and with it has come many new hurdles to get over. The one staring me down at the moment is my Senior Projects class, which is as straightforward as the title suggests. Simply I will be creating something, whether it be digital or physical, that reflects on both my interests and the material I have learned up to this point.

At this moment I have three major ideas for this project and I will be exploring each of them in semi-depth in this post. Thanks for reading, and sorry for the length.


 

PROJECT IDEA 1: TRIPLE TRIAD REMAKE

hqdefault

The first of these three projects comes from one of my  favorite games from my childhood, Final Fantasy 8.

Project Summary

Triple Triad is a mini game from Final Fantasy 8. Played on a 3×3 grid, each playable card has 4 cardinal values. The goal: beat the opponent’s numbers to own the most cards.

Tools

In this project I plan to use the Unity game creation engine to create a similar game to Triple Triad. Unity gives me the freedom to create the game entirely from scratch and code all of the possible rule sets in Unity’s environment. All coding for this project can be completed in C# or javascript.

Project Timeline

The timeline that I have for this project will be as follows:

  1. Creating the assets/objects that will be needed to play the game – 1 Week
  2. Milestone 1: Have documentation for the rest of project underway, and have most if not all assets/objects needed for the testing of the project in place.
  3. Attach values to the card objects to make them unique, and start working on the user interface – 2 Week(s)
  4. Milestone 2: At this point I would like a working user interface that has 10 cards displayed as either player 1, or player 2’s hand, and be able to move them from each players hand to the game board.
  5. Adding in simple gameplay elements and refine them – 3 Weeks
  6. Add in local multiplayer and make the game completely playable for both players. Allow for bug fixing before moving forward – 2 Weeks
  7. Milestone 3: Have the game working on the simplest form by week 8 at the latest.
  8. Once the game is working in the simplest form, I would like to start work on and AI for the player to play against. – 3 to 4 weeks (depending on complexity of AI)
  9. Milestone 4: Have the game with working AI allowing for the player to play against, and have the game almost bug free at this point, taking all free time up to this point to fix bugs in the programming.
  10. For the rest of the project I plan on working to expand the rule sets, add in more cards, allow for each player to chose a set of 5 cards for their hands. This will be the final stage of the project and will stretch through the rest of the semester. – Approx. 2-3 weeks.
  11. Milestone 5: Final product review and final updates to the system will be put in place before turning it in for the semester.
  12. Total: 14 Weeks

The Appeal to Me

The original mini game this project is based off of has significant sentimental value to me, and I found it extremely enjoyable to play. I would even go as far to not play the actual game when booting up the system, and would spend hours on Triple Triad. I would like to take all of the knowledge I have gained by playing the game over the years and put it to good use to create the game from scratch.

What I plan to learn

With a project as simple as this on the surface, it would be easy to say that nothing could be learned from the project. However, what I plan to spend a lot of time on is creating a AI for the player to play against when there is no one else to work with. I do not know anything about artificial intelligence, and thus I expect it to be a large roadblock in this project. Without the AI, the game fails to achieve the same appeal as the original as you will always have to have a friend to play the game.


 

PROJECT IDEA 2: REMAKING CLASSIC ARCADE GAMES

pong   snake

Project Summary

This project focuses on recreating classic games, such as breakout, pong, and snake. Then putting them all in one game file to choose which one to play.

Tools

This project will utilize the unity game creation engine to recreate some classic arcade games that each have their own complexities.

Project Timeline

The timeline that I have for this project will be as follows:

  1. Milestone 1: Create Pong and debug it – 4 weeks
  2. Milestone 2: Create Snake and debug it –  4 Weeks
  3. Milestone 3: Create Breakout and debug it – 4 Weeks
  4. Milestone 4: Create the interface and menu to hold all three games together – 2 weeks
  5. Milestone 5: Final debugging – 1 week
  6. Total: 15 Weeks

The Appeal to Me

My dream is to use my coding experience to become a game developer in the near future, so having somewhere to start is great for this dream. Recreating these simple old games and putting them into their own mini arcade boosts my resume in the game development field.

What I plan to learn

I have yet to understand what it means to create a game from scratch, so starting with the basics will simply give me the experience of understanding the game creation process first hand.


 

PROJECT IDEA 3: POKEMON TRADING CARD COLLECTION DATABASE AND DECK BUILDER

tcg_product_gallery_169_en

The last of these three projects has come out of a more recent hobby of mine, the Pokémon Trading Card Game.

Project Summary

This database will track all cards that a player owns and allow them to filter the cards to find the ones they need. It will also function as a deck creator with a statistic generator.

Tools

For this project, I will be using PHPmyAdmin, MySQL, HTML, and CSS to create a local database on my machine. PHPmyAdmin and MySQL will be used to primarily create the database, and PHP code will be used along with HTML and CSS to create a user interface that interacts with the database and allows the user to view the data in a cleaner format.

Project Timeline

The timeline that I have for this project will be as follows:

  1. Create the documentation explaining just how the project will progress, as well as creating an ER diagram. – 2 weeks
  2. Milestone 1:  Have all preliminary creation documents in place and be prepared to start creating the database itself in PHPmyAdmin.
  3. Create the Back end, with all necessary tables, and create relationships between the tables. – 2 weeks
  4. Milestone 2: Have the back end completed.
  5. Refer back to what needs to be created on the front end as the initial design document shows. Start to create the pages noted. – 4 weeks
  6. Milestone 3: Have a few of the pages on the front end working with the relational database in the background to pull data to tables.
  7. Finish the Front-end pages, and work on the mathematics needed to grab the statistics from the tables for the deck creator part of the project. – 4 Weeks
  8. Milestone 4: Double check that the mathematics work correctly, and have the front end mostly finished.
  9. Add in any special flare using CSS, and any other properties that were not thought of yet, or were unable to be added until this point due to problems within the project. -2 Weeks
  10. Milestone 5: Final Debugging to make sure the CSS works with the existing code without breaking the current functionality.
  11. Total: 14 Weeks

The Appeal to Me

I have spent a lot of time searching my ever growing collection of Pokémon cards, and I have constantly imagined a system that would allow me to locate a card quickly instead of hunting it down every time that I want to build a deck with it. This system will not only allow me to have that luxury but I could also share it with other players in the area to share the love.

What I plan to learn

I worked on a project similar to this one in the past, however I did not get the full experience of working on both the front end and the back end. My partners focused on the back end while I was focusing on the front end. By doing this similar project I expect to learn about every step that goes into creating a database project, rather than just part of it.


 

Project Ironcircle Demo

As I mentioned in my previous post, I will be uploading the demo of Project Ironcircle so you all can see what I have worked on in the past.

I would like to give some awesome credit the KhasArcthunder and his Sapphire Action System IV, that I make use of in this demo, as well as a few of his maps. I do not plan on making money off of this game as it is a personal project just to learn the RPG Maker VX Ace system. If you would like to see more of Khas Archthunder’s work then follow his blog. I also want to give thanks to Galv, and Yanfly for their amazing scripts!

About my demo, it is a bit crazy at times, and the dialogue is to DIE for, no really its pretty bad. But I feel that the combined work of the above-mentioned people and some small story elements from me have made this small demo both playable and enjoyable. However, I still do not understand how to make AI better, so I apologize in advance for that. You’ll understand what I mean when you load up the game.

Download the demo from my google drive here – Click to Download.

I would love some criticism, so if you would like please leave me a comment! Thanks and enjoy the demo!

Welcome to the Beginning!

Alright its time to get this blog underway! With my beginnings in game development happening during these summer months, I felt that it would be awesome to set up a place to follow my progress step by step, and project by project.

At the moment I will be working in Unity, and RPG Maker VX ace, and I have 2 projects underway.

With Unity I am taking on a seemingly daunting task, the recreation of Triple Triad from Final Fantasy 8. The beloved card game that hooked me to the game itself years ago. I felt that it was only natural that I start my development process at the same place my love for gaming started. Here’s to a rough start!

As for the other project, currently under the name of Project Ironcircle, has had a playable demo in the past, but will be undergoing a lot of changes in the coming months. The story will be scrapped for a new one, as my ideas for the game have changed from what I had began with years ago. My thoughts have already begun to replace many of the characters, including swapping another character for the main character. Lance Lavender will be the new playable character! More on him to come soon.

I will be bouncing between projects periodically as I get ideas for them or get stuck in a spot. If anyone has any ideas, comments, complaints, or criticism feel free to contact me via my contact page and I’ll be sure to read them as soon as possible!

Thanks everyone!