1 | This file general algorithms used in the game, such as how players login/logout and how the create games or join existing games.
|
---|
2 |
|
---|
3 | Currently, there is no distinction between logging in and creating a game. There is essentially one game that always exists; when a player logs in, he joins that game, and when he logs out, he leaves that game.
|
---|
4 |
|
---|
5 | New Login/Logout Algorithm:
|
---|
6 |
|
---|
7 | When a player logs in, the db lookup and password check occurs just like it already does, and the player is added to some global player list. Other logged-in players get notified of this.
|
---|
8 |
|
---|
9 | When a player logs out, he gets removed from the list and everyone else also gets notified.
|
---|
10 |
|
---|
11 | All of this already happens, but it's tied to the signle game instance.
|
---|
12 |
|
---|
13 | STEPS:
|
---|
14 | - Un-implement/comment out the current code that sends messages about the game instance and just keep the code that adds/removes players from the global list.
|
---|
15 | - Make sure that chatting with players works.
|
---|
16 | - Modify the current game class to keep track of players in the game and re-implement (or possibly create) the messages for joining and leaving a game.
|
---|
17 | - Re-implement the movement/combat messages to use the list of players in the game, not the global list
|
---|
18 |
|
---|
19 | mapPlayers holds all players on the server and broadcasted messages are sent to everyone in the map
|
---|
20 |
|
---|
21 | A player logs in by sending a LOGIN message. When the server receives the message and verifies user credentials, it sends the following messages:
|
---|
22 | To the new player
|
---|
23 | - PLAYER messages for existing players (still needed)
|
---|
24 | - OBJECT messages for existing objects on the map (only send for new game)
|
---|
25 | - SCORE messages (only send for new game)
|
---|
26 | - PLAYER message to each existing player about the new one
|
---|
27 | - LOGIN message to the new player to indicate successful login (final reply)
|
---|
28 |
|
---|
29 | For logout messages, the logic can basically be kept the same. Just move the part related to restoring the flag in case the player is carrying one.
|
---|
30 |
|
---|
31 | Logic for sending chat messages
|
---|
32 |
|
---|
33 | Server receives a chat message and sends the following:
|
---|
34 | - The received chat message is simply broadcast to all other players
|
---|
35 | - An error will result in a chat message only being sent back to the sender
|
---|