It’s been a bit longer than I was hoping it would be since my last update, but I got a lot done since then. I’m not quite as far along as I’d like to be, but at this point, I’ve finally begun doing some basic AI development, and I’m getting a bit closer to having something you could actually call a game. Most of my AI work up to this point has been conceptual, but I’ve put a lot of thought into the characters, and I’m starting to think more about how they behave as players, and not just how a player would behave. In any case, let’s look at the game in its current state.
One of the biggest changes since the previous version is the addition of a “Settings Menu” that the player can look at and modify before starting their actual game. The menu is currently very minimal, but it gives the player the ability to set the starting cash for each player, the minimum starting bet, and the number of players in the game. If you look below you can see an image of both what the menu currently looks like, and what the game looks like with different numbers of players.
From these images above you may also notice one of the other changes I implemented. While I haven’t implemented any major AI changes yet, I wanted to do a proof-of-concept to make sure that I could create multiple player types that were ‘children’ of the standard player. As you can see the top-center player has a different player image than any of the others. This is because that player is actually a child-object of the original Player Object I created. At this time it inherits all behavior from the standard player, but as I start implementing AI I will give it some custom behaviors and reactions. As I start making more player types, I plan to add a section to the starting menu that allows the player to choose who they play as, and who their opponents will be. Potentially I will also make multiple difficulty levels for each opponent, but I’m not sure yet if that’s something I want to implement, or what different difficulties would affect on the AI of any given player.
On top of that, you should also notice that I’ve started to implement some basic menus/dialog-boxes into this version. The menus are still very early in development, but it’s progressing well.
The final change you can see in the image above is the “Starting Dealer” dialog-box. For this update I realized that the dealer chip was always starting with the player character, so I created a system that allows the dealer to be randomly selected. After the player hits the “Find Dealer” button it deals every player a random card, and finds the player with the high-card to determine the dealer. In cases of a tie, new cards are dealt to only the players involved in the tie until a single high-card is found. You can see some examples of this in the gif below.
Another improvement I implemented in this version, is the ability to track the “hand value” of the dealer cards. As I begin implementing AI into the game, this means that the player will be able to directly compare their hand to the overall value of the cards the dealer has revealed, and see how their cards stack up. This will allow me to do direct comparisons of the players’ hands to what the dealer has and quickly let them make decisions about folding, calling, checking, and betting.
The next visual improvement I made, was to create a basic alert system that tells the player what actions their opponents are taking. If you view the gif below, you’ll notice that after each player takes their action, a message spawns on their character portrait saying whether they checked, called, folded, or bet. At this time, since the AI players never bet or fold on their own, you can only see the check and call actions, but in the next update this system will be a bit more robust to account for more complex AI.
The next change I made was related to the progression of the game. In a game of poker, the minimum bet will increase over time to force more-cautious players to start taking risks, and to prevent the game from becoming stagnant. In this update I implemented a basic system to do this every time the dealer chip returns to its initial position. In the gif below you can see a game with just two players. If you watch the bet sizes, you’ll notice that they first increase from 10 to 20, and then from 20 to 40. In this system the bet always multiplies by 2, but I plan to eventually add another option to the settings menu that allows you to determine how much the bet increases each time, and how often the increases occur. While you can’t see it in this gif, this system also accounts for when the original dealer has been eliminated and continues to increment the bet size accordingly.
The final change I made was a non-visual one. During my testing I noticed that it was very annoying that after a round was over, the cards would automatically be removed after a certain amount of time. This was particularly frustrating because whenever I was doing multi-round debugging it forced me to increase the amount of time by a very large factor so I would be able to make sure wins were being determined correctly, and I would inevitably have to wait around rounds to end after I had finished checking things. To improve usability for the player, and for me while debugging, I made it so rounds no longer end until you hit the Deal Cards button another time. This gives me as much time as I need to evaluate the outcome of the hand, and it effectively pauses the game until the player is ready to start the next hand.
That’s everything I accomplished between the last update and now. In the next update I plan to implement some basic AI and create all of the player objects, fix a few errors I’m currently having with my custom sliders, create some character art to accompany my character objects, and give the player the ability to choose what players come into a game. I’d also like to do a bit more UI work before I update again, but I’ll see if I get to it. Hopefully I’ll be back soon with my next update, and thanks for visiting.