Looking to design and develop this fun paper game from my childhood in digital with elixir, phoenix (channels, presence), and possibly LiveView with the members of this community.
I already have a working one with angular+socketio+python so this is a good learning curve with the elixir community.
Here is the game, rules, and a sample round of me trying to explain how the game works. This game might exist online already under different names for different cultures. I didn’t investigate.
I aim to follow the design principles that are demonstrated and explained brilliantly in this article as much as possible
- Hoping for
thingsneed to be stored somewhere, prefer
eviction and memorybased storage.
thingsshould keep a tidy house at all times within their scope.
Scenario: New user identification success Given I am an anonymous user and I visit the Game Server and I am required to enter my name When I enter "nickname" Then the "nickname" is accepted Scenario: New user identification, nickname non UTF-8 encoding Given I am an anonymous user and I visit the Game Server and I am required to enter my name When I enter "0xC0, 0xC1, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF" Then the "0xC0, 0xC1, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF" is rejected Scenario: New user identification, nickname too long Given I am an anonymous user and I visit the Game Server and I am required to enter my name When I enter "nickname longer than 20 characters" Then the "nickname longer than 20 characters" is rejected
I will slowly expand the following
Rooms, Gathering Hall, and Server as scenarios in time.
- Can be created
- Should have a string identifying the name
- Should have a string language identifying the language used in the room.
- Should have an identifier of being
- Minimum 3 players needed to start a
roundand play the game.
- Able to know which players are in the room
- There is no maximum player limit to a room but should investigate for performance reasons.
- Can be joined only, if it hasn’t reached
maximum user count and no active round is in play
- Can initiate a new round by the ‘administrator’ if there are more than
2 playersin the room.
- Can be destroyed by the
- Can be destroyed only
if there is no active round
- Players should be able to
chatwith each other outside of an
- Should do
- Can be initiated by 'administrator
- All the players should receive the first question at the
- After answering a question,
playershould be presented with the next one.
- If a player finishes all their questions, they simply wait for
all playersto finish.
- If the player count has fallen below the
minimumplayers at any instance, the round should be abandoned
- Should be able to identify which players have answered the
- Should have a
maximum time setto end the round if it does not end by player interaction.
- Round finishes when
all the questions are answered byall the players`
- Round should be able to display the
storieson each player’s screen upon finishing.
- Chat should be activated when a round has
finishesregardless of reason
- Should do
- Should list all the
publicrooms that are
available to join
- Should include
name, language, player countof each room
- Should be able to filter by
- Should be able to
- Should do
I want this to be a community effort where people can peer-review each other’s code and approach and we can all learn from each other in a fun small project.
I didn’t take any further design restrictions and decisions.
I probably missed a couple of important points, either on purpose - not to dictate the design or genuinely forgot. Please ask away!
Please let me know what you think or ideas for implementation, developing together.
Please have a look at the commits to check if I am on the right path, specifically where to
mutate the players in the room.