JavaFX lobby system for multiplayer games with chat, ready toggle and kick/ban buttons, using TCP sockets by default.
- Download the latest release.
- Extract the content of the archive.
- Execute the Launcher.
Read the full docs.
- main schemes
to add:
- update User list in server, when someone send the READY.
- add arrow to identify which user a particular client is
- refactor: use only one listView and put an HBox inside it(?)
- add on close function to disconnect and stop the threads before closing the app
- add "start game" button which enables when the room has the minimum users required
- add open/close checkbox to allow users to join
- check if the users get disconnected properly when closing the app by the Launcher
- change the "this.client != null" check with NavState.MP_CLIENT (same for the server)
- fix Join Existing Room validation
- move Controller methods (in a proper order)
- fix KickUser (removes the server too). The problem was that goBack(), instead of switchToMP, closed the connection, so client sent KICK and DISCONNECT before closing the socket
- fix exception print stack (handle them in a more proper way)
- catch Connection Reset
- SocketException: Interrupted function call: accept failed, thrown when we back from the server room, when no one has been accepted yet
- add a ban list (nickname/IP)
- automatic textarea scrolling, to last message
- catch java.net.SocketException: Socket closed, when server accepts a connection, the client leaves and the server goes back
- add banned user throws null pointer exception on Linux, fix it and make a working build
- show private and public IP address and be able to copy it
- chat text message check length before sending (not more than 200 char?)
- add copy in clipboard when clicking on a username (inside a room)
- server can enable/disable the chat(?)
- add timer after sending READY message
- fix gui components to have proper dimension
- add Datagram (UDP) variant
- add HTTP/websocket variant(?)
- create a logger (?) and log messages to file too
- add an headless server to handle the room list (when a server creates a room it's inserted into the list, and the client can access that list to see those rooms)
- use this template for CluedoApp
For the implementation I used Java 11 and JavaFX 11, Eclipse IDE (2020-03 (4.15.0)), and SceneBuilder to create the gui (FXML).
Java version: JavaSE-11 (jdk-11.0.11)
JavaFX version: JavaFX 11 (javafx-sdk-11.0.2)
- Idea from: JavaFX-Chat by DomHeal
- Icons: Icons8
- Getting the IP address







