Inspiration

We love playing Settler's of Catan with the guys in our college dorm, but we know how frustrating it is to start a game of Catan only to find that the starting location you chose has pushed you into a corner or handicapped your resource production.

What it does

Catan Companion suggests a favorable starting location based on a given Settler's of Catan board configuration.

How we built it

We used C# and Windows Forms to construct a custom UI component that allows the user to construct any possible Settler's of Catan terrain variation.

Challenges we ran into

Representing hexagonal tiles in a two-dimensional coordinate system was tough. Calculating from code which hexagons composed each intersection was a significant obstacle. Most of our time was spent constructing the groundwork required to represent the Settler's of Catan gameboard in code. As a consequence, we had less time to refine the actual algorithm that selects strategic starting locations.

Accomplishments that we're proud of

The user interface turned out pretty well, given our limited experience. We managed to make it scalable without any major issues.

What we learned

Vance was new to C#, Windows Forms, and version control, and developing Catan Companion provided plenty of practice manipulating UI componenets, writing classes, and managing source code.

What's next for Catan Companion

We'd like to add more sophistication to the criteria used to judge potential embark locations as well as increase the number of favorable locations shown. Now that we have built the framework with which to interpret the game's components, the only limit to Catan Companion's effectiveness is our own strategic analysis of the game's interacting systems.

Built With

Share this project:

Updates

posted an update

Performance Improvement!

Over the summer, Vance and I re-designed Catan Companion's approach to manipulating hexagon intersections. During the hackathon, I had pushed for a design that would simplify the code needed to draw the tiles to the screen. Unfortunately, this came with a significant performance tradeoff when calculating which hexagons form intersections with each other. The result was that choosing the best starting intersection could take several seconds on older hardware. Not good.\ To remedy this, we looked into existing solutions to hexagon management, mostly from RedBlobGames.com. We ended up implementing an axial coordinate system that allowed us to find a straightforward relationship between intersection and hexagon coordinates. Now, constructing the favorability of each intersection and choosing a starting location takes very little time.

Log in or sign up for Devpost to join the conversation.