Hearts was my first attempt at a mobile game. The project started off as a Java console app to ensure all the game mechanics and processes were running as intended. Then the project was to be ported to a custom Android game engine.
The project made it to the stage of having four AI opponents that could play through the whole game. All logic and rules were implemented and the game could play from start to finish.
Hearts featured a state-driven rule set, message system, AI, and server/client design.
State System: The state system controlled how the game tabled checked rules and how each player's turn was scheduled. The game table could be in numerous states and depending on what state it was in controlled how the player could interact with it.
Message system: The game was intended to be multiplayer so it was built in a way that all interaction between players, AI, and the game table were handled via a message system.
AI: The game had two different AI systems. The first AI would pick cards at random and attempt to play them to test if the game table was checking rules properly. This AI was slow because it could possibly choose every card in its hand before it would get a card played successfully. The second AI that was implemented was able to play a card-based on simple rule checks and interacted with the game table more.
Server/Client: The game was going to be a multiplayer game and with this, in mind, everything was set up as if it was a client/server relationship. The Players connected to an internal server and used that server's message system to communicate with the game table. The game table was set up as a server. This was all done with the goal of separating the code out into actual servers and clients with the next version that was released. The project halted before this stage was reached.
I was the sole developer on this game. I was responsible for all programming and design. The game was text-based and had no art assets.
design and programming