Unveiling AI Strategies in Historical Board Games
Table of Contents
- Introduction
- Recent Projects and Experiments
- Overview of the AI System
- The Battle of Caronia
- The Battle of Granicus
- Behaviors and Strategies in Caronia
- Attack Behavior
- Guard Behavior
- Defender Behavior
- March Behavior
- Hard March Behavior
- Hard Defend Behavior
- Behaviors and Strategies in Granicus
- Trigger Guard Behavior
- Trigger Defend Behavior
- The Role of Rivers
- Reflecting Historical Accuracy
- AI Considerations and Game Design
- Conclusion
🤖 Recent Projects and Experiments
Hey everyone! It's been a while since I've updated you on what I've been working on. Lately, I've been deeply immersed in the realm of Artificial Intelligence (AI) and I wanted to take the opportunity to show you some of the experiments I've been conducting. If you've been following my Twitter account, you might have caught a glimpse of a few interesting things I've been trying out.
One experiment involved attempting to have the computer cycle through every possible combination to find the best one. Unfortunately, this approach didn't yield satisfactory results due to the sheer number of combinations involved. However, I didn't let that discourage me. I went back to my original plan, which involved analyzing each counter one by one, considering factors such as their current situation, movement, combat odds, and their objective. This approach provides a more practical and realistic representation of the battles at HAND.
In this article, I will focus on two scenarios: the Battle of Caronia and the Battle of Granicus. These scenarios serve as examples to showcase the different behaviors and strategies that the AI counters have been programmed to exhibit. So, let's start by delving into the Battle of Caronia.
🏰 The Battle of Caronia
Caronia was a significant historical battle that pitted the Macedonians against the Greeks, mainly Athens, Thebes, and other allied forces. In this Scenario, the Macedonians, represented by the human player, take on the Greeks, represented by the AI. The initial setup of the scenario mirrors the historical positioning of the troops but with a reversed orientation for the sake of simplicity.
Historically, Philip, the Macedonian leader, employed a clever strategy. He initially moved his troops forward, luring the Athenians to advance and follow him. However, he quickly retreated, while Alexander, positioned on the flank, seized the opportunity to launch a surprise attack from the side, surrounding the Athenians and inflicting significant damage.
To recreate this historical battle, I have assigned different behaviors, or postures, to each counter at the start of the scenario. These postures dictate the general behavior of the counters throughout the engagement. For example, the "attack" posture indicates that a counter will actively Seek the best possible attack option.
The AI counters also have a specific target hex towards which they move. Initially, this target hex is usually the location of another opponent. However, the target hex may change dynamically based on the evolving situation on the battlefield.
For instance, the Athenians in this scenario move forward initially, as their behavior suggests. Meanwhile, the Macedonian counters adopt a defensive posture. This initial movement pattern reflects historical accuracy and sets the stage for the ensuing battle.
As the scenario progresses, the AI counters will adapt their behavior based on the ongoing developments on the battlefield. They will react to opponents' movements, assess combat odds, and adjust their actions accordingly. Now, let's move on to the intriguing Battle of Granicus and explore a different set of behaviors employed by the AI.
🔥 The Battle of Granicus
Granicus presents a distinct battlefield and a different set of circumstances compared to Caronia. In Granicus, the Macedonians face the Persians, who have chosen to position themselves across a river. Historically, the Persians waited on their side of the river, observing the Macedonian movements and preparing to react accordingly.
To simulate this situation, I have introduced new behaviors known as "trigger guard" and "trigger defend." These behaviors purposefully delay the AI's response until certain conditions are met. In Granicus, the Macedonians initially cross the river, symbolized by the blue lines, while the Persians await their actions.
The trigger guard behavior means that the AI counters will remain in a static position until an opponent comes within visual range. Once the enemy enters this range, the counters proactively leave their positions to engage in combat. On the other hand, the trigger defend behavior is similar to trigger guard, but with an additional restriction. The AI counters will not actively chase after opponents outside of their initial positions.
In the Granicus scenario, I wanted to create a sense of tension, as if the AI counters were waiting for the optimal moment to strike. Historically, the Persians held their ground until the Macedonians had committed themselves fully. By implementing these behaviors, I aimed to capture the strategic decisions made by both sides during the battle.
For example, when the Macedonians move their counters close to the Persian lines, the Persian counters remain inactive, as they are in trigger guard mode. In this state, they will not react until visual contact is made. The AI counters closely monitor their surroundings, waiting for an opportunity to strike back.
It's worth noting that these behaviors are not static and can be fine-tuned and adapted based on player feedback and game design considerations. I strive to strike a balance between historical accuracy and engaging gameplay mechanics.
🗡️ Reflecting Historical Accuracy
While the AI behaviors in these scenarios aim to replicate historical events, it's important to remember that they serve as Simplified representations within the context of a game. Players shouldn't feel overwhelmed or burdened by complex AI mechanics. Rather, the AI should enhance the solo gameplay experience and provide a believable opponent.
By observing and analyzing historical battles, we gain valuable insights into the strategies employed by different armies. The AI programming takes inspiration from these strategies, translating them into logical behaviors that the counters exhibit. The goal is to create an immersive experience that captures the essence of the battles while maintaining gameplay simplicity.
🎮 AI Considerations and Game Design
As a game designer, I constantly grapple with the challenge of striking a balance between historical accuracy and enjoyable gameplay. AI plays a crucial role in creating engaging and challenging solo experiences, but we must find the right level of complexity.
The AI behaviors discussed in this article are a work in progress, and I welcome feedback and discussions from fellow developers and players. If you have experience coding AI systems for board games or any thoughts on the presented behaviors, please leave a comment and share your insights.
Ultimately, my aim is to create an AI that is believable and conducive to enjoyable gameplay. While these scenarios provide a glimpse into my current development process, I strive for continuous improvement and refinement to deliver the best possible gaming experience.
✨ Conclusion
In this article, I've shared my recent projects and experiments involving AI systems for historical board game scenarios. The Battle of Caronia and the Battle of Granicus serve as practical examples of AI behaviors and strategies in action.
From attack and defense postures to trigger-based behaviors, the AI counters interact dynamically within the context of the battles. By taking inspiration from historical events and carefully designing the AI behaviors, I aim to create engaging and immersive gameplay experiences.
Remember, the development of these AI systems is an ongoing process, and your feedback and thoughts are valuable. Stay tuned for more updates on these projects and future endeavors. Happy gaming!