Tweaking to server loop making it send packets at 5Hz

Commented out some smoothing code in BoatGroup that was dependend on FPS screwing with movement
This commit is contained in:
William Muir
2017-07-24 21:14:17 +12:00
parent 07cebb6c5b
commit a30a1aa7c7
4 changed files with 35 additions and 26 deletions
+21 -21
View File
@@ -172,27 +172,27 @@ public class BoatGroup extends Group {
isStopped = true; isStopped = true;
} }
if (distanceTravelled > 70) { // if (distanceTravelled > 70) {
distanceTravelled = 0d; // distanceTravelled = 0d;
//
if (lastPoint != null) { // if (lastPoint != null) {
Line l = new Line( // Line l = new Line(
lastPoint.getX(), // lastPoint.getX(),
lastPoint.getY(), // lastPoint.getY(),
boatPoly.getLayoutX(), // boatPoly.getLayoutX(),
boatPoly.getLayoutY() // boatPoly.getLayoutY()
); // );
l.getStrokeDashArray().setAll(3d, 7d); // l.getStrokeDashArray().setAll(3d, 7d);
l.setStroke(boat.getColour()); // l.setStroke(boat.getColour());
l.setCache(true); // l.setCache(true);
l.setCacheHint(CacheHint.SPEED); // l.setCacheHint(CacheHint.SPEED);
lineGroup.getChildren().add(l); // lineGroup.getChildren().add(l);
} // }
//
if (destinationSet) { // if (destinationSet) {
lastPoint = new Point2D(boatPoly.getLayoutX(), boatPoly.getLayoutY()); // lastPoint = new Point2D(boatPoly.getLayoutX(), boatPoly.getLayoutY());
} // }
} // }
wake.updatePosition(); wake.updatePosition();
} }
@@ -19,6 +19,7 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
private static final int PORT = 4942; private static final int PORT = 4942;
private static final Integer MAX_NUM_PLAYERS = 3; private static final Integer MAX_NUM_PLAYERS = 3;
private static final Integer UPDATES_PER_SECOND = 5;
private static final int LOG_LEVEL = 1; private static final int LOG_LEVEL = 1;
private Thread thread; private Thread thread;
@@ -57,7 +58,7 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
//You should handle interrupts in some way, so that the thread won't keep on forever if you exit the app. //You should handle interrupts in some way, so that the thread won't keep on forever if you exit the app.
while (!thread.isInterrupted()) { while (!thread.isInterrupted()) {
try { try {
Thread.sleep(1000 / 60); //60 times per second we should calculate the game state Thread.sleep(1000 / UPDATES_PER_SECOND); //60 times per second we should calculate the game state
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
@@ -77,7 +78,6 @@ public class MainServerThread implements Runnable, PacketBufferDelegate, ClientC
else if (GameState.getCurrentStage() == GameStages.FINISHED) { else if (GameState.getCurrentStage() == GameStages.FINISHED) {
} }
updateClients();
while (!packetBuffer.isEmpty()){ while (!packetBuffer.isEmpty()){
try { try {
@@ -184,7 +184,7 @@ public class ServerToClientThread implements Runnable {
// } catch (IOException e) { // } catch (IOException e) {
// System.out.println("IO error in server thread upon writing to output stream"); // System.out.println("IO error in server thread upon writing to output stream");
// } // }
sendBoatLocationPackets(); // sendBoatLocationPackets();
updateClient = false; updateClient = false;
} }
@@ -251,6 +251,7 @@ public class ServerToClientThread implements Runnable {
} }
public void updateClient() { public void updateClient() {
sendBoatLocationPackets();
updateClient = true; updateClient = true;
} }
@@ -347,7 +348,15 @@ public class ServerToClientThread implements Runnable {
ArrayList<Yacht> yachts = new ArrayList<>(GameState.getYachts().values()); ArrayList<Yacht> yachts = new ArrayList<>(GameState.getYachts().values());
for (Yacht yacht: yachts){ for (Yacht yacht: yachts){
// System.out.println("[SERVER] Lat: " + yacht.getLocation().getLat() + " Lon: " + yacht.getLocation().getLng()); // System.out.println("[SERVER] Lat: " + yacht.getLocation().getLat() + " Lon: " + yacht.getLocation().getLng());
BoatLocationMessage boatLocationMessage = new BoatLocationMessage(sourceId, getSeqNo(), yacht.getLocation().getLat(), yacht.getLocation().getLng(), yacht.getHeading(), (long) yacht.getVelocity()); BoatLocationMessage boatLocationMessage =
new BoatLocationMessage(
sourceId,
getSeqNo(),
yacht.getLocation().getLat(),
yacht.getLocation().getLng(),
yacht.getHeading(),
(long) yacht.getVelocity());
sendMessage(boatLocationMessage); sendMessage(boatLocationMessage);
} }
} }
+1 -1
View File
@@ -19,7 +19,7 @@ import seng302.utilities.GeoPoint;
*/ */
public class Yacht { public class Yacht {
private final Double TURN_STEP = 3.0; private final Double TURN_STEP = 2.0;
private Double lastHeading; private Double lastHeading;
private Boolean sailIn; private Boolean sailIn;