A networked implementation of the traditional African board game Awale (also known as Oware) with additional social features like friend lists, private messaging, and spectator mode (for more info : https://fr.wikipedia.org/wiki/Awal%C3%A9)
This project implements a client-server architecture where multiple clients can connect to play Awale against each other. The server handles game logic, user management, and communication between clients, while the client provides the user interface and game visualization.
- GCC compiler
- Linux environment
- Make utility
make clean
makeThis will create two executables: client and server
N.B : the exec 'awale' is only to test the game in solo without client/server interactions.
- Start the server
go in the repo "Serveur"
./server 2000- Start multiple clients in different terminals:
go in the repo "Client"
./client 127.0.0.1 2000 testaddress: Server IP address (e.g., 127.0.0.1 for local testing)port: Server port number (between 1024-65535)pseudo: Your nickname (2-15 characters, alphanumeric and underscore only)
./launch_game.shThis script will automatically start the server and four client instances.
./cleanup_port.shThis script will clean all ports (If that doesn't work, we recommend running the programs manually.)
Follow the following switch case :
-
Send message to all
- Broadcast a message to all connected users
- Enter your message and press Enter
- Multi-line messages supported (end with empty line)
-
Send private message
- Specify the receiver's pseudo
- Write your muti-line message and press Enter to send
-
List connected users
- Shows all online users and their current number of gained points (start with 500 points)
-
Bio options
- View and update your player biography
- Set personal information visible to other players
-
Play awale vs someone
- Challenge another player to an Awale match (Enter opponent's username)
- After, specify if you want to set the game to be private or public
- If the game was set to private the user has the option of making his friends possible spectators (press Enter) or specify manually the players he wants as spectators using the format
<pseudo>:<pseudo>:..
-
All games in progression
- View list of ongoing Awale matches
- The user can directly choose a game to watch
-
See the save games
- Access history of your completed games
- Press 1 to select the game you see (and after choose the game you want by its id)
-
Spectate a game
- Watch ongoing matches between other players
- Enter player pseudo to spectate
- View moves in real-time
-
Blocked users
- Manage your list of blocked users
- Block/unblock specific players
-
Friend list
- View and manage your friends list
- Add/remove friends
-
Clear screen
- Clears the terminal
- Refreshes the menu display
-
Not implemented yet
- to be implemented later
-
Quit
- Safely exits the application
-
Game Controls
- Enter a number (0 - 5) or (6 - 11) to select a pit for your move
- Your pits are always displayed at the bottom
-
Available Commands
quit: Forfeit the current gamemp:<pseudo>:<message>: Send private message during game
- Time out (30 sec) during demand if the demand is not accepted
- Unicity of pseudo
- Good Managagement of exit ctrl c
- Reutilisabity of the code
- Error Management
- Persistance is done for bio, point, friend and blocked people
- Elo ranking system
N.B : Some actions block messages of the server while not not done but these actions are atomic and not problematic (public messsage, ...).
Project as part on courses in network programming, developed by:
- Noam CATHERINE
- Abderramane BOUZIANE