So I just finished the last 10-20 'Intermediate java tutorials' since its relevant to a Networks class project I'm doing at the moment. The project is basically a very simple little multiplayer game.
- A client types in the address of the server and connects
- A GUI opens on which there are a number of small shapes of different colors
- Each shape on the screen corresponds to a different user that is currently connected to the server as well. This also means that the current user has a shape of his own.
- When the user clicks anywhere on the window, his shape moves to that point. All the other users can also see his movements.
- User can also press enter to type a message and enter again to send it to the server. This message will be displayed in a chat window at the bottom.
Here's my thinking at the moment:
I make it so that the server is listening on a port for connections. The second a client connects, here's what happens:
- Server checks to see if their IP address matches any entry in an array of IP addresses
- If there is no match, they are given a random shape of a random color, and the server takes their IP and stores it in an array. Then the server closes the socket and goes back to listening on that port.
- If there IS a match, the server reads the Object that the client has sent. It sends that information to all clients.
- If the client has sent a string saying "END", the server compares that client's IP addresses with the ones in it's array, and deletes it (moving up all the entries after that).
On the client side:
- Every time the Client clicks somewhere or sends a message, the client sends an Object to the server containing either a String with a message, or coordinates.
- When the client receives something from the server, it sends it as a parameter to an overloaded method which either updates the positions of the shapes (including the clients own) or updates the chat window with a new message.
- When the client closes, sends a last message to Server saying "END".
Well that's basically it. I'd appreciate any advice you guys can give me, like certain libraries that i can use to make things simpler. More specifically I'd appreciate advice on the following topics:
- Is there a better way to store the IP adresses and manage them?
- How can I make it so the client knows that a certain coordinate update message is for a certain shape?
That last one is confusing me a lot. I was thinking to maybe transfer the shape movement calculations to the server, and then the server keeps transmitting the GUI it's got to the clients, but I have no idea how to go about that.