summaryrefslogtreecommitdiff
path: root/server/src/main.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/main.ts')
-rw-r--r--server/src/main.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/server/src/main.ts b/server/src/main.ts
new file mode 100644
index 0000000..965e0d7
--- /dev/null
+++ b/server/src/main.ts
@@ -0,0 +1,32 @@
+import { Grid } from '@engine/structures';
+import {
+ ServerMessageProcessor,
+ ServerSocketMessagePublisher,
+ ServerSocketMessageReceiver
+} from './network';
+import { Collision, NetworkUpdate, Physics, WallBounds } from '@engine/systems';
+import { Game } from '@engine/Game';
+import { Constants } from './constants';
+import { GameServer } from './server';
+
+const messageReceiver = new ServerSocketMessageReceiver();
+const messagePublisher = new ServerSocketMessagePublisher();
+const messageProcessor = new ServerMessageProcessor();
+
+const game = new Game();
+
+const server = new GameServer(game, messageReceiver, messagePublisher);
+
+[
+ new Physics(),
+ new Collision(new Grid()),
+ new WallBounds(),
+ new NetworkUpdate(messageReceiver, messagePublisher, messageProcessor)
+].forEach((system) => game.addSystem(system));
+
+game.start();
+setInterval(() => {
+ game.doGameLoop(performance.now());
+}, Constants.SERVER_TICK_RATE);
+
+server.serve();