project: coup
intro⌗
Coup is a fun and social game that revolve around strategy and social dynamics. The goal of the game is simple: Outlive everybody else. How, you might ask? Well, through making true and false claims throughout the game that allow you to further your position in the game.
At the start of the game, each player gets two card from the deck and two coins.
In Coup, there are 5 characters. Each character has an action and a counter action. The characters are:
- Duke:
- Action: Take 3 coins from the bank
- Counter Action: Prevent another player from taking financial aid
- Ambassador:
- Action: Look at 2 cards from the deck; and optionally swap one or two card from the ones you’ve seen
- Counter Action: Prevent a Captain from stealing from you
- Captain:
- Action: Steal 2 coins from any player
- Counter Action: Prevent an Ambassador from stealing from you
- Assassin
- Action: Kill one of the player’s cards by paying 3 coins
- Contessa:
- Counter Action: Prevent an Assassin from killing one of your cards
Besides the actions that your cards could give you, there are 3 other core actions, these are:
- Income: Take 1 coins from the bank
- Financial Aid: Take 2 coins from the bank
- Coup: Kill a player’s card by paying 7 coins.
Every single claim in the game can be challenged; when a claim is challenged, the player who made the claim must prove its validity or invalidity; meaning they have to either show a card that proves their claim or choose not to.
Once a claim has been challenged, and has been proven right, the player who made the claim can punish the player who challenged the claim by killing one of their characters.
The reverse is also true; If a claim has been challenged, and has been proven wrong, the original player who made the claim will be punished by the “challenger”.
Hopefully, my explaination was good enough for the basic mechanics of the game. If not, check the boardgamegeek.com for further explainations.
Now, onto the technical details of the project.
intro v2: technical⌗
Usually, with most of my projects, I have a tendency to program for the programmer. That is, essentially create prototypes that are meant to be built upon another project.
My latest web project reflects that totally. ft: the remote file browser - was a good project, it solidified my principles in client and server project manangement. It also taught me about how to manage deadlines, but I cannot fully convince a non technical person to use it.
Coup is a chance for me to create a project that is geared towards novices and normal users.
Server-side it doesn’t aim to innovate much but elevate what I’ve already learned, I want to improve the server-side not create a new approach.
Client-side should have that “wow” effect. It should have amazing animations and a game-like feel to it. Less interfacey.
With the client-side, I also want to experiment with unit testing as I never have done before. That should save me plenty of time because my last project, ft, didn’t have client unit testing.
my deadline⌗
I have a firm understanding of the game, Javascript & Typescript, Go and functional programming. Therefore, I think a good deadline, for the game functionality, would be 2 weeks.
2 weeks is more than enough for me to program the server side completely to handle the game. Once I feel that the server has been completed, I will start with client side and it will have its own post.
the checklist⌗
- unit tests with 100% coverage
- handling complete game functionality
- use GraphQL over REST
- A history system that creates a game from scratch
- A database interface & implementation using PostgreSQL
- Oauth2 with several backends
- User Profile
conclusion…⌗
None, the project hasn’t finished. Expect more posts about programming in the upcoming weeks.