Quick summary: Console application (no gui!) written in C programming language one server, one client application.
So files: server.c and client.c are expected in separate source and output files.
Classic ludo game with 2 human players on the same computer, each player runs a client of the game and there is a server (running on localhost) that handles the communication and gameplay rules.
Game rules: The players have 2-2 distinguishable dolls. The players roll the dice in turns. If the player steps on a field that's already taken by a doll, then the doll already there returns to field #1 (knock out - doesn't matter whose doll it is) and the former doll takes it's place. After field #49 knocking out the dolls is not possible. The goal of the game is to pass through field #49 with both of the dolls - the player who accomplishes this first is the winner.
How the program should work:
- Server application starts and waits for the TWO clients to join.
- When the 1st client starts the application they should receive a mesage that we're waiting for the 2nd player.
- When the 2nd client joins, the game automatically starts.
- The dice is represented by the server, it generates random numbers from 1-6 and it sends the values for the appropriate client
- After the client receives their number, the client sends to the server which doll with they want to move (that's why the dolls need to be distinguishable).
- The server's job is to update the game board, detect and handle specific scenarios (moving with a doll, knocking out a doll, winning, losing). The game board is stored on the server.
What is expected regarding the gameplay mechanics.
The program should acknowledge knock out scenarios, winners and losers. Clients can give up and stop the current match by sending a message (I give up) and inform the other client about this - this way the game ends, but the applications doesn't close just yet.
If the game ends either because someone wins, or someone gave up the server should allow the players to:
- play another match (by sending a message: restart)
- or stop the game (by sending a message: stop)
If "restart" is chosen a new match starts again.
If "stop" is chosen all 3 applications (server, client, client) closes.
Would like to proceed on such an interesting project, should be fun, its been long time i've never coded such things, looks like a university task :P
Relevant Skills and Experience
C/C++ programming skills enough for development of a console/networking tool.
Havig some skills in coding and reverse engineering of simple games too, so that will be quite simple.
Proposed Milestones
€20 EUR - Development of a project-related networking samples and data exchange concepts
€10 EUR - Development of a game mechanics "engine" :P
€10 EUR - Deploying a simple console interface, building a complete program
Additional Services Offered
€5 EUR - Handling both TCP and UDP protocols data transfer by option
€5 EUR - Options for a game mechanics, interface customization options
€5 EUR - Simple sounds (OpenAL/Wave)