1package com.runehive.game.engine;
3import com.google.common.util.concurrent.AbstractScheduledService;
4import com.runehive.Config;
5import com.runehive.content.writer.InterfaceWriter;
6import com.runehive.content.writer.impl.InformationWriter;
7import com.runehive.game.engine.sync.ClientSynchronizer;
8import com.runehive.game.engine.sync.ParallelClientSynchronizer;
9import com.runehive.game.engine.sync.SequentialClientSynchronizer;
10import com.runehive.game.engine.sync.task.NpcPreUpdateTask;
11import com.runehive.game.engine.sync.task.PlayerPreUpdateTask;
12import com.runehive.game.world.World;
13import com.runehive.game.world.entity.MobList;
14import com.runehive.game.world.entity.mob.npc.Npc;
15import com.runehive.game.world.entity.mob.player.Player;
16import com.runehive.util.Stopwatch;
17import org.apache.logging.log4j.LogManager;
18import org.apache.logging.log4j.Logger;
20import java.util.concurrent.TimeUnit;
22public final class GameEngine extends AbstractScheduledService {
31 return clientTicks * 20;
63 long elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
65 System.out.printf(
"world.dequeLogins(): %d ms%n", elapsed);
70 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
72 System.out.printf(
"world.dequeLogouts(): %d ms%n", elapsed);
77 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
79 System.out.printf(
"NpcPreUpateTask: %d ms%n", elapsed);
84 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
86 System.out.printf(
"PlayerPreUpdateTask: %d ms%n", elapsed);
91 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
93 System.out.printf(
"world.process(): %d ms%n", elapsed);
98 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
100 System.out.printf(
"npc.sequence(): %d ms%n", elapsed);
107 }
catch (Exception ex) {
108 logger.error(String.format(
"error player.sequence(): %s", player), ex);
111 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
113 System.out.printf(
"player.sequence(): %d ms%n", elapsed);
119 }
catch (Exception ex) {
120 logger.fatal(
"Error in the main game sequencer.", ex);
122 elapsed = stopwatch.
elapsedTime(TimeUnit.MILLISECONDS);
124 System.out.printf(
"synchronizer.synchronize(): %d ms%n", elapsed);
132 System.out.printf(
"CYCLE END: %d ms%n", stopwatch2.
elapsedTime(TimeUnit.MILLISECONDS));
134 }
catch(Exception e) {
141 return Scheduler.newFixedRateSchedule(0,
TICK_MILLIS, TimeUnit.MILLISECONDS);
The class that contains setting-related constants for the server.
static final boolean PARALLEL_GAME_ENGINE
This will use the parallel game game.
static boolean SERVER_DEBUG
The development state flag.
Handles writing on an itemcontainer.
static void write(InterfaceWriter writer)
Class handles writing on the quest tab itemcontainer.
static final Logger logger
static int clientTicksToMillis(final int clientTicks)
final ClientSynchronizer synchronizer
static int millisToTicks(final int millis)
static int clientTicksToServerTicks(final int clientTicks)
static final int TICK_MILLIS
Represents the game world.
static MobList< Npc > getNpcs()
static MobList< Player > getPlayers()
An Iterable implementation acting as a repository that holds instances of Entitys.
void forEach(Consumer<? super E > action)
long elapsedTime(TimeUnit unit)