Made as a project for the following :
- School : Efrei Paris - Semester 8 in Software Engineering
- Course : Mobile Development (Android)
- Goal : Design and build an Android Application.
How a Mobile App' could help ?
It is a boardgame meant to be played by (ideally) at least 8 people ; the more players, the better. It takes place in a small village where each player has a given role that only he knows (he and no one else !).
But some werewolves are hidden amongst the civilians : these beasts take out a player each night. In response, each day, the village votes to kill one of its members. The game is won by the werewolves if all the civilians are killed, or by the civilians if all the werewolves are killed.
In addition to that, some other roles can be played, which impact the game in different ways (to name a few : Cupidon, the Witch, the Soothsayer…)
Here is the link to the official website
There a few things required to play the game efficiently : knowledge of the game, obviously, and some equipment (aka some cards with a role written on it), to give randomly to each player. The Game Master can also try to remember everyone’s role, but this is never a good idea.
An app’ would solve both issues, and greatly help the Game Master. All role’s data can be displayed at any time, and allows him to easily create games with any selection of character he wants, and keep track of which player plays which role.
IMPORTANT : the project is meant to HELP organize and follow a game, not to direct players likes sheeps.
When launching the App', you have 3 choices :
- Create a Party by entering the names of the players and choosing the roles available
- See the rules, to familiarize yourself with the concept and the different roles
- Change the language of the App' : English and French
If you create a party, the app' will automatically give each player role randomly (more on that on the API section). Afterwards, it will help the Game Master organise the game by keeping track of who play which role, and whose players turn it is to play.
The programmation is fully completed ! You may only only need to fulfill one task :
The location of the Android SDK is set according to my own path, which will obviously vary with yours.
Worry not : Android Studio will automatically warn you of it,
and propose you to change the path to the one you have.
Now, it's all set and done ! you can use the app freely ! :D
I won't get too technical, but the project works following two axes :
- organise data : I have a big, big, BIG Enumeration containing all the Roles (that a player can incarnate). Each iteration points to the according Strings (name, description), Drawable (picture, icon)... In the same way, I have some classes to represent Players and Party.
- UI : I have a total of 5 Activities (one of them being dedicated to communicating with the API) and 6 Fragments. They implement a large array of Widgets (including Recycler Views : there's quite a lot of them).
The project is done using the Deck of Cards API.
It allows to create deck (one, or a given number of deck), which will remain accessible for 2 weeks. From theses decks, we can draw cards, create hands, shuffle... all that you could hope for with a card API.
Let's say you create a party with X players. At this point in the App', you'd have entered X players and selected X roles, but you won't assign them manually ; it is the API which will randomly assign a Role to each Player.
I use it in 3 steps :
- I draw X cards from a newly generated deck ; I assign each card with a Role.
- I create aspecific deck with these X cards.
- Foreach player, I draw one card from the deck, and assign the role corresponding role to the Player.
And it's done !!
- Android Studio 3.5.3 - The IDE used to develop the app'
- Android SDK 26.1.1 - The Android SDK used (same link)
- Api level 29: Android 10.0 (Q) revision 4 - The development environment used
- Pixel 2 API 29 - The Android Studio's emulator used for the tests
It was made by the following Efrei Paris students :
- BEGEOT Hugues - his Git repository
See also the list of contributors who participated in this project.
Note : made in the 4th year of Software Engineering cursus (1st year of Master).
:)