I’m working on a board game scoring app. It’s an iOS app because I frankly don’t like writing Java for Android. This is an iOS app written in Swift and it runs on iOS 10 and newer.
The score calculator uses some basic iOS UI elements like a list of games and a button to open the list of players. Players can be added using a “+” button on the players page and can be deleted using a left-swipe on the player name in the list. Played are checked or unchecked and only checked players are shown when scoring a game.
The first game I added to the app was Wingspan. It has simple scoring that requires a check-list but nothing weird or complicated. The number i the boxes are all score values and the app does the math to get a total and then can show the totals on the final page.
The interesting thing about this app is the horizontal scrolling that snaps to pages. More interesting is the way the software is designed to add games as small separate files that hold the page design and the code to compute the score. It was tricky to build the code that way because loading the one page of the game multiple times, once for each player, required some Swift code I had never tried to write. I might write a post just about that code.
I’m trying to add a page for Unfair. Unfair uses a scoring table for converting an icon count into a score value. The table has a sliding scale when each icon is worth more than the one before it. The fifth icon is worth 4 points but the sixth is worth 5 points. The app accepts the icon cot in a box and shows the score next to it. The problem with Unfair is the large quantity of items to score; there are, in the base game, up to five attractions that use an icon count, any number of blueprints that have a regular and a bonus score on the card, coin points (half point per coin), staff and “other” points, and negative loan points. I realize now that I didn’t even add a spot to report a failed blueprint which is worth -10 points.
The other thing that was nice about programming the app to use a sort of internal plug-in mechanism for the games is that the player management is only written and handled once and never changes regardless of what game is being scored. I hope there’s no weird game where the scoring is not just per player. if I had to score teams, the app would need each team name to be entered as a player.
Sunday, we ended up having three new people show up for game day. One of our regulars showed up just in time to get in on a game of Container. One of the new people brought it brand new and unopened. This was the Anniversary edition with ships that were five inches long. It’s an interesting game where you can produce containers (of goods) at your factory and you can store containers in your warehouses. You can even load up your ship from a port and eventually move to the island where players all bid on the contents of the ship. But you can never move your own containers from your own factory to your own warehouse and you can never load your ship with containers at your own port. It makes the game an odd co-op because all players cold simply sit and pass on their turn… unless passing in not allowed. When you produce containers, you set a price for them and other players can decide where to buy containers to store. And when you store containers in a warehouse, you can set a price and players can decide what port to go to for loading their ship.
We also played a game of Wingspan and a game of Terraforming mars. oh yeah, and a quick game of Azul too. It was a good day for gaming and I’m hoping to see lots of the latest batch of new players show up next week.