- Replace socket.io relay with Colyseus 0.15 authoritative server - GameRoom with GameState schema (players, units, resources) - Pure TS services: CombatResolver, EconomyService, PathfindingService, UnitManager - POST /api/create-room → 4-char invite code - React/MUI LobbyScreen: Create (shows code + START GAME) / Join by code - ColyseusClient: joinOrCreate/join by room type = invite code - Nginx: static assets direct, all else proxied to Colyseus (WS upgrade) - Content-hashed JS bundles for Cloudflare cache-busting - 1-player lobbies: START GAME button bypasses 2-player wait
36 lines
760 B
JSON
36 lines
760 B
JSON
{
|
|
"name": "restitution-server",
|
|
"version": "1.0.0",
|
|
"scripts": {
|
|
"start": "ts-node src/index.ts",
|
|
"build": "tsc",
|
|
"test": "jest --verbose --coverage --forceExit"
|
|
},
|
|
"dependencies": {
|
|
"@colyseus/schema": "^2.0.0",
|
|
"colyseus": "^0.15.0",
|
|
"easystarjs": "^0.4.4",
|
|
"express": "^4.18.0",
|
|
"xstate": "^5.32.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/express": "^4.17.21",
|
|
"@types/jest": "^29.5.11",
|
|
"@types/node": "^20.10.0",
|
|
"jest": "^29.7.0",
|
|
"ts-jest": "^29.1.1",
|
|
"ts-node": "^10.9.0",
|
|
"typescript": "^5.3.0"
|
|
},
|
|
"jest": {
|
|
"preset": "ts-jest",
|
|
"testEnvironment": "node",
|
|
"testMatch": [
|
|
"**/tests/**/*.test.ts"
|
|
],
|
|
"collectCoverageFrom": [
|
|
"src/**/*.ts"
|
|
]
|
|
}
|
|
}
|