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 isrefactor: use only one listView and put an HBox inside it(?)add on close function to disconnect and stop the threads before closing the appadd "start game" button which enables when the room has the minimum users requiredadd open/close checkbox to allow users to joincheck if the users get disconnected properly when closing the app by the Launcherchange the "this.client != null" check with NavState.MP_CLIENT (same for the server)fix Join Existing Room validationmove 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 socketfix exception print stack (handle them in a more proper way)catch Connection ResetSocketException: Interrupted function call: accept failed, thrown when we back from the server room, when no one has been accepted yetadd 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