@rpgjs/server 4.1.3 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/browser/rpg.server.js +768 -366
- package/browser/rpg.server.umd.cjs +754 -352
- package/lib/Game/EventManager.js +1 -1
- package/lib/Game/EventManager.js.map +1 -1
- package/lib/Game/Map.d.ts +4 -0
- package/lib/Game/Map.js +11 -1
- package/lib/Game/Map.js.map +1 -1
- package/lib/Gui/Gui.js +1 -0
- package/lib/Gui/Gui.js.map +1 -1
- package/lib/MatchMaker.js +3 -1
- package/lib/MatchMaker.js.map +1 -1
- package/lib/Player/Player.d.ts +9 -3
- package/lib/Player/Player.js +24 -16
- package/lib/Player/Player.js.map +1 -1
- package/lib/RpgServer.d.ts +29 -0
- package/lib/Scenes/Map.d.ts +2 -3
- package/lib/Scenes/Map.js +7 -3
- package/lib/Scenes/Map.js.map +1 -1
- package/lib/entry-point.js +18 -12
- package/lib/entry-point.js.map +1 -1
- package/lib/express/server.js +0 -10
- package/lib/express/server.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/inject.d.ts +22 -0
- package/lib/inject.js +29 -0
- package/lib/inject.js.map +1 -0
- package/lib/server.d.ts +7 -5
- package/lib/server.js +82 -38
- package/lib/server.js.map +1 -1
- package/package.json +7 -8
- package/src/Game/EventManager.ts +1 -1
- package/src/Game/Map.ts +15 -1
- package/src/Gui/Gui.ts +1 -0
- package/src/MatchMaker.ts +3 -1
- package/src/Player/Player.ts +18 -10
- package/src/RpgServer.ts +30 -1
- package/src/Scenes/Map.ts +6 -2
- package/src/entry-point.ts +19 -12
- package/src/express/server.ts +0 -10
- package/src/index.ts +1 -0
- package/src/inject.ts +33 -0
- package/src/server.ts +86 -35
package/lib/index.js
CHANGED
|
@@ -15,4 +15,5 @@ export { SceneMap as RpgSceneMap } from './Scenes/Map.js';
|
|
|
15
15
|
export { RpgMatchMaker } from './MatchMaker.js';
|
|
16
16
|
export { Components } from './Player/ComponentManager.js';
|
|
17
17
|
export { Gui } from './Gui/Gui.js';
|
|
18
|
+
export { inject } from './inject.js';
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAoB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAoB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
|
package/lib/inject.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InjectContext } from "@rpgjs/common";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency injection function for RPGJS server side.
|
|
4
|
+
*
|
|
5
|
+
* The server-side `inject` function is designed for retrieving instances of server-related classes in the RPGJS framework.
|
|
6
|
+
* This function is crucial for accessing singleton instances of classes like `RpgServerEngine` on the server. It facilitates
|
|
7
|
+
* a clean and efficient approach to handling dependencies within server modules, contributing to a more organized codebase.
|
|
8
|
+
*
|
|
9
|
+
* @template T The class type that you want to retrieve an instance of, specific to server-side modules.
|
|
10
|
+
* @returns {T} Returns the singleton instance of the specified class, ensuring consistent server-side behavior and state management.
|
|
11
|
+
* @since 4.2.0
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Example of injecting the RpgServerEngine
|
|
16
|
+
* import { inject, RpgServerEngine } from '@rpgjs/server'
|
|
17
|
+
* const server = inject(RpgServerEngine)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function inject<T>(service: new (...args: any[]) => T, args?: any[]): T;
|
|
21
|
+
export declare function setInject(context: InjectContext): void;
|
|
22
|
+
export declare function clearInject(): void;
|
package/lib/inject.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
let instanceContext = null;
|
|
2
|
+
/**
|
|
3
|
+
* Dependency injection function for RPGJS server side.
|
|
4
|
+
*
|
|
5
|
+
* The server-side `inject` function is designed for retrieving instances of server-related classes in the RPGJS framework.
|
|
6
|
+
* This function is crucial for accessing singleton instances of classes like `RpgServerEngine` on the server. It facilitates
|
|
7
|
+
* a clean and efficient approach to handling dependencies within server modules, contributing to a more organized codebase.
|
|
8
|
+
*
|
|
9
|
+
* @template T The class type that you want to retrieve an instance of, specific to server-side modules.
|
|
10
|
+
* @returns {T} Returns the singleton instance of the specified class, ensuring consistent server-side behavior and state management.
|
|
11
|
+
* @since 4.2.0
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* // Example of injecting the RpgServerEngine
|
|
16
|
+
* import { inject, RpgServerEngine } from '@rpgjs/server'
|
|
17
|
+
* const server = inject(RpgServerEngine)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function inject(service, args = []) {
|
|
21
|
+
return instanceContext.inject(service, args);
|
|
22
|
+
}
|
|
23
|
+
export function setInject(context) {
|
|
24
|
+
instanceContext = context;
|
|
25
|
+
}
|
|
26
|
+
export function clearInject() {
|
|
27
|
+
instanceContext = null;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAAyB,IAAI,CAAA;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,MAAM,CAAI,OAAkC,EAAE,OAAc,EAAE;IAC1E,OAAO,eAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC5C,eAAe,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,eAAe,GAAG,IAAI,CAAA;AAC1B,CAAC"}
|
package/lib/server.d.ts
CHANGED
|
@@ -5,9 +5,6 @@ import { Observable } from 'rxjs';
|
|
|
5
5
|
import { Tick } from '@rpgjs/types';
|
|
6
6
|
import { DatabaseTypes } from '@rpgjs/database';
|
|
7
7
|
export declare class RpgServerEngine {
|
|
8
|
-
io: any;
|
|
9
|
-
gameEngine: RpgCommonGame;
|
|
10
|
-
inputOptions: any;
|
|
11
8
|
/**
|
|
12
9
|
* Express App Instance. If you have assigned this variable before starting the game, you can get the instance of Express
|
|
13
10
|
*
|
|
@@ -42,16 +39,19 @@ export declare class RpgServerEngine {
|
|
|
42
39
|
protected totalConnected: number;
|
|
43
40
|
private scheduler;
|
|
44
41
|
private playerProps;
|
|
42
|
+
gameEngine: RpgCommonGame;
|
|
45
43
|
world: WorldClass;
|
|
46
44
|
workers: any;
|
|
47
45
|
envs: any;
|
|
46
|
+
io: any;
|
|
47
|
+
inputOptions: any;
|
|
48
48
|
/**
|
|
49
49
|
* Combat formulas
|
|
50
50
|
*
|
|
51
51
|
* @prop {Socket Io Server} [io]
|
|
52
52
|
* @memberof RpgServerEngine
|
|
53
53
|
*/
|
|
54
|
-
|
|
54
|
+
initialize(io: any, inputOptions: any): void;
|
|
55
55
|
private _init;
|
|
56
56
|
/**
|
|
57
57
|
* Adds data to the server's database (in RAM) for later use
|
|
@@ -104,6 +104,7 @@ export declare class RpgServerEngine {
|
|
|
104
104
|
* @memberof RpgServerEngine
|
|
105
105
|
*/
|
|
106
106
|
start(inputOptions?: any, scheduler?: boolean): Promise<void>;
|
|
107
|
+
private transport;
|
|
107
108
|
get tick(): Observable<Tick>;
|
|
108
109
|
/**
|
|
109
110
|
* Sends all packages to clients. The sending is done automatically but you can decide to send yourself by calling this method (for example, for unit tests)
|
|
@@ -113,7 +114,7 @@ export declare class RpgServerEngine {
|
|
|
113
114
|
* @returns {void}
|
|
114
115
|
* @memberof RpgServerEngine
|
|
115
116
|
*/
|
|
116
|
-
send(): void
|
|
117
|
+
send(): Promise<void>;
|
|
117
118
|
private updatePlayersMove;
|
|
118
119
|
nextTick(timestamp: number): void;
|
|
119
120
|
step(t: number, dt: number): void;
|
|
@@ -129,6 +130,7 @@ export declare class RpgServerEngine {
|
|
|
129
130
|
get module(): import("@rpgjs/common/lib/Plugin").PluginSystem;
|
|
130
131
|
get assetsPath(): string;
|
|
131
132
|
sendToPlayer(currentPlayer: any, eventName: any, data: any): void;
|
|
133
|
+
private getPlayerBySession;
|
|
132
134
|
private onPlayerConnected;
|
|
133
135
|
private onPlayerDisconnected;
|
|
134
136
|
stop(): void;
|
package/lib/server.js
CHANGED
|
@@ -8,20 +8,12 @@ import { SceneMap } from './Scenes/Map.js';
|
|
|
8
8
|
import { RpgPlayer } from './Player/Player.js';
|
|
9
9
|
import { Query } from './Query.js';
|
|
10
10
|
import { DAMAGE_SKILL, DAMAGE_PHYSIC, DAMAGE_CRITICAL, COEFFICIENT_ELEMENTS } from './presets/index.js';
|
|
11
|
-
import { World } from 'simple-room';
|
|
12
|
-
import { Utils, RpgPlugin, Scheduler, HookServer, DefaultInput } from '@rpgjs/common';
|
|
11
|
+
import { World, Transport } from 'simple-room';
|
|
12
|
+
import { Utils, RpgPlugin, Scheduler, HookServer, RpgCommonGame, DefaultInput } from '@rpgjs/common';
|
|
13
13
|
import { Actor, Armor, Class, Item, Skill, State, Weapon } from '@rpgjs/database';
|
|
14
|
+
import { inject } from './inject.js';
|
|
14
15
|
export class RpgServerEngine {
|
|
15
|
-
|
|
16
|
-
* Combat formulas
|
|
17
|
-
*
|
|
18
|
-
* @prop {Socket Io Server} [io]
|
|
19
|
-
* @memberof RpgServerEngine
|
|
20
|
-
*/
|
|
21
|
-
constructor(io, gameEngine, inputOptions) {
|
|
22
|
-
this.io = io;
|
|
23
|
-
this.gameEngine = gameEngine;
|
|
24
|
-
this.inputOptions = inputOptions;
|
|
16
|
+
constructor() {
|
|
25
17
|
/**
|
|
26
18
|
* List of the data
|
|
27
19
|
*
|
|
@@ -48,8 +40,20 @@ export class RpgServerEngine {
|
|
|
48
40
|
this.scenes = new Map();
|
|
49
41
|
this.totalConnected = 0;
|
|
50
42
|
this.scheduler = new Scheduler();
|
|
43
|
+
this.gameEngine = inject(RpgCommonGame);
|
|
51
44
|
this.world = World;
|
|
52
45
|
this.envs = {};
|
|
46
|
+
this.inputOptions = {};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Combat formulas
|
|
50
|
+
*
|
|
51
|
+
* @prop {Socket Io Server} [io]
|
|
52
|
+
* @memberof RpgServerEngine
|
|
53
|
+
*/
|
|
54
|
+
initialize(io, inputOptions) {
|
|
55
|
+
this.io = io;
|
|
56
|
+
this.inputOptions = inputOptions;
|
|
53
57
|
this.envs = inputOptions.envs || {};
|
|
54
58
|
if (this.inputOptions.workers) {
|
|
55
59
|
console.log('workers enabled');
|
|
@@ -247,9 +251,29 @@ export class RpgServerEngine {
|
|
|
247
251
|
return Query._getShapesOfMap(map);
|
|
248
252
|
}
|
|
249
253
|
});
|
|
250
|
-
this.io.on('connection', this.onPlayerConnected.bind(this))
|
|
254
|
+
//this.io.on('connection', this.onPlayerConnected.bind(this))
|
|
255
|
+
this.transport(this.io);
|
|
251
256
|
await RpgPlugin.emit(HookServer.Start, this);
|
|
252
257
|
}
|
|
258
|
+
transport(io) {
|
|
259
|
+
const timeoutDisconnect = this.globalConfig.timeoutDisconnect ?? 0;
|
|
260
|
+
const auth = this.globalConfig.disableAuth ? () => Utils.generateUID() :
|
|
261
|
+
async (socket) => {
|
|
262
|
+
const val = await RpgPlugin.emit(HookServer.Auth, [this, socket], true);
|
|
263
|
+
if (val.length == 0) {
|
|
264
|
+
return Utils.generateUID();
|
|
265
|
+
}
|
|
266
|
+
return val[val.length - 1];
|
|
267
|
+
};
|
|
268
|
+
const transport = new Transport(io, {
|
|
269
|
+
timeoutDisconnect,
|
|
270
|
+
auth
|
|
271
|
+
});
|
|
272
|
+
this.world.timeoutDisconnect = timeoutDisconnect;
|
|
273
|
+
transport.onConnected(this.onPlayerConnected.bind(this));
|
|
274
|
+
transport.onDisconnected(this.onPlayerDisconnected.bind(this));
|
|
275
|
+
return transport;
|
|
276
|
+
}
|
|
253
277
|
get tick() {
|
|
254
278
|
return this.scheduler.tick;
|
|
255
279
|
}
|
|
@@ -262,7 +286,7 @@ export class RpgServerEngine {
|
|
|
262
286
|
* @memberof RpgServerEngine
|
|
263
287
|
*/
|
|
264
288
|
send() {
|
|
265
|
-
this.world.send();
|
|
289
|
+
return this.world.send();
|
|
266
290
|
}
|
|
267
291
|
async updatePlayersMove(deltaTimeInt) {
|
|
268
292
|
const players = this.world.getUsers();
|
|
@@ -274,7 +298,6 @@ export class RpgServerEngine {
|
|
|
274
298
|
continue;
|
|
275
299
|
const player = playerInstance.otherPossessedPlayer ?? playerInstance;
|
|
276
300
|
if (player.pendingMove.length > 0) {
|
|
277
|
-
player.moving = true;
|
|
278
301
|
const lastFrame = player.pendingMove[player.pendingMove.length - 1];
|
|
279
302
|
if (this.inputOptions.workers)
|
|
280
303
|
obj.push(player.toObject());
|
|
@@ -325,7 +348,7 @@ export class RpgServerEngine {
|
|
|
325
348
|
maps: this.inputOptions.maps,
|
|
326
349
|
events: this.inputOptions.events,
|
|
327
350
|
worldMaps: this.inputOptions.worldMaps
|
|
328
|
-
}
|
|
351
|
+
}));
|
|
329
352
|
}
|
|
330
353
|
getScene(name) {
|
|
331
354
|
return this.scenes.get(name);
|
|
@@ -348,11 +371,49 @@ export class RpgServerEngine {
|
|
|
348
371
|
sendToPlayer(currentPlayer, eventName, data) {
|
|
349
372
|
currentPlayer._socket.emit(eventName, data);
|
|
350
373
|
}
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
374
|
+
getPlayerBySession(session) {
|
|
375
|
+
const users = this.world.getUsers();
|
|
376
|
+
for (let userId in users) {
|
|
377
|
+
const user = users[userId];
|
|
378
|
+
if (user.session === session) {
|
|
379
|
+
return user;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return null;
|
|
383
|
+
}
|
|
384
|
+
onPlayerConnected(socket, playerId) {
|
|
385
|
+
const existingUser = this.world.getUser(playerId, false);
|
|
386
|
+
this.world.connectUser(socket, playerId);
|
|
387
|
+
let player;
|
|
388
|
+
if (!existingUser) {
|
|
389
|
+
const { token } = socket.handshake.auth;
|
|
390
|
+
player = new RpgPlayer(playerId);
|
|
391
|
+
player.session = token;
|
|
392
|
+
this.world.setUser(player, socket);
|
|
393
|
+
player._init();
|
|
394
|
+
if (!token) {
|
|
395
|
+
const newToken = Utils.generateUID() + '-' + Utils.generateUID() + '-' + Utils.generateUID();
|
|
396
|
+
player.session = newToken;
|
|
397
|
+
}
|
|
398
|
+
if (!token) {
|
|
399
|
+
player.execMethod('onConnected');
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
RpgPlugin.emit(HookServer.ScalabilityPlayerConnected, player);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
player = existingUser;
|
|
407
|
+
if (player.map) {
|
|
408
|
+
player.emit('preLoadScene', {
|
|
409
|
+
reconnect: true,
|
|
410
|
+
id: player.map
|
|
411
|
+
});
|
|
412
|
+
player.emitSceneMap();
|
|
413
|
+
this.world.joinRoom(player.map, playerId);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
socket.emit('playerJoined', { playerId, session: player.session });
|
|
356
417
|
socket.on('move', (data) => {
|
|
357
418
|
if (!data?.input)
|
|
358
419
|
return;
|
|
@@ -369,23 +430,6 @@ export class RpgServerEngine {
|
|
|
369
430
|
});
|
|
370
431
|
}
|
|
371
432
|
});
|
|
372
|
-
socket.on('disconnect', () => {
|
|
373
|
-
this.onPlayerDisconnected(playerId);
|
|
374
|
-
});
|
|
375
|
-
this.world.setUser(player, socket);
|
|
376
|
-
player.server = this;
|
|
377
|
-
player._init();
|
|
378
|
-
if (!token) {
|
|
379
|
-
const newToken = Utils.generateUID() + '-' + Utils.generateUID() + '-' + Utils.generateUID();
|
|
380
|
-
player.session = newToken;
|
|
381
|
-
}
|
|
382
|
-
socket.emit('playerJoined', { playerId, session: player.session });
|
|
383
|
-
if (!token) {
|
|
384
|
-
player.execMethod('onConnected');
|
|
385
|
-
}
|
|
386
|
-
else {
|
|
387
|
-
RpgPlugin.emit(HookServer.ScalabilityPlayerConnected, player);
|
|
388
|
-
}
|
|
389
433
|
}
|
|
390
434
|
onPlayerDisconnected(playerId) {
|
|
391
435
|
const player = World.getUser(playerId);
|
package/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rpgjs/server",
|
|
3
|
-
"version": "4.1
|
|
3
|
+
"version": "4.2.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -27,24 +27,23 @@
|
|
|
27
27
|
"author": "Samuel Ronce",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@rpgjs/common": "^4.1
|
|
31
|
-
"@rpgjs/database": "^4.1
|
|
32
|
-
"@rpgjs/tiled": "^4.
|
|
30
|
+
"@rpgjs/common": "^4.2.1",
|
|
31
|
+
"@rpgjs/database": "^4.2.1",
|
|
32
|
+
"@rpgjs/tiled": "^4.2.1",
|
|
33
33
|
"@rpgjs/types": "^4.0.5",
|
|
34
34
|
"axios": "^1.3.6",
|
|
35
35
|
"cors": "^2.8.5",
|
|
36
36
|
"express": "^4.18.2",
|
|
37
37
|
"lodash.merge": "^4.6.2",
|
|
38
|
-
"pathfinding": "^0.4.18",
|
|
39
38
|
"pretty-error": "^4.0.0",
|
|
40
39
|
"rxjs": "7.8.0",
|
|
41
40
|
"sat": "^0.9.0",
|
|
42
|
-
"simple-room": "^
|
|
41
|
+
"simple-room": "^3.1.2",
|
|
43
42
|
"socket.io": "^4.6.1"
|
|
44
43
|
},
|
|
45
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "cb341564bf64b7afdd36b12972f51a28870917a3",
|
|
46
45
|
"devDependencies": {
|
|
47
|
-
"@rpgjs/compiler": "^4.1
|
|
46
|
+
"@rpgjs/compiler": "^4.2.1",
|
|
48
47
|
"typescript": "^5.0.4"
|
|
49
48
|
},
|
|
50
49
|
"alias": {
|
package/src/Game/EventManager.ts
CHANGED
|
@@ -105,7 +105,7 @@ export class EventManager {
|
|
|
105
105
|
for (let playerId in map.players) {
|
|
106
106
|
if (object.id == playerId) continue
|
|
107
107
|
const otherPlayer = map.players[playerId]
|
|
108
|
-
if (otherPlayer.
|
|
108
|
+
if (otherPlayer.followingId == object.id) {
|
|
109
109
|
otherPlayer.cameraFollow(otherPlayer)
|
|
110
110
|
}
|
|
111
111
|
}
|
package/src/Game/Map.ts
CHANGED
|
@@ -90,6 +90,21 @@ export class RpgMap extends RpgCommonMap {
|
|
|
90
90
|
return Object.keys(this.players).length
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
$additionalEmitProperties(player: RpgPlayer) {
|
|
94
|
+
const lastFramePositions: {
|
|
95
|
+
frame: number
|
|
96
|
+
position: unknown
|
|
97
|
+
} | undefined = player['_lastFramePositions']
|
|
98
|
+
let pos
|
|
99
|
+
let lastFrame
|
|
100
|
+
if (lastFramePositions) {
|
|
101
|
+
pos = lastFramePositions.position
|
|
102
|
+
lastFrame = lastFramePositions.frame
|
|
103
|
+
}
|
|
104
|
+
const data = { frame: lastFrame, pos }
|
|
105
|
+
return data
|
|
106
|
+
}
|
|
107
|
+
|
|
93
108
|
async load() {
|
|
94
109
|
if (RpgCommonMap.buffer.has(this.id)) {
|
|
95
110
|
return
|
|
@@ -390,7 +405,6 @@ export class RpgMap extends RpgCommonMap {
|
|
|
390
405
|
const ev = this.game.addEvent<RpgEvent>(event)
|
|
391
406
|
const _shape = shape || this.getEventShape(ev.name)
|
|
392
407
|
ev.map = this.id
|
|
393
|
-
ev.server = this._server
|
|
394
408
|
ev.width = event.width || this.tileWidth
|
|
395
409
|
ev.height = event.height || this.tileHeight
|
|
396
410
|
if (_shape && _shape.properties) ev.properties = _shape.properties
|
package/src/Gui/Gui.ts
CHANGED
package/src/MatchMaker.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import axios from 'axios'
|
|
3
3
|
import { Utils } from '@rpgjs/common'
|
|
4
4
|
import { RpgPlayer } from './Player/Player'
|
|
5
|
+
import { inject } from './inject'
|
|
6
|
+
import { RpgServerEngine } from './server'
|
|
5
7
|
|
|
6
8
|
interface MatchMakerPayload {
|
|
7
9
|
playerId: string
|
|
@@ -32,7 +34,7 @@ export class RpgMatchMaker {
|
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
async getServer(player: RpgPlayer): Promise<MatchMakerResponse | null> {
|
|
35
|
-
const currentServerId =
|
|
37
|
+
const currentServerId = inject(RpgServerEngine).serverId
|
|
36
38
|
const payload: MatchMakerPayload = {
|
|
37
39
|
playerId: player.id,
|
|
38
40
|
mapName: player.map
|
package/src/Player/Player.ts
CHANGED
|
@@ -37,6 +37,7 @@ import { CameraOptions, PositionXY_OptionalZ, SocketEvents, SocketMethods, Layou
|
|
|
37
37
|
import { ComponentManager } from './ComponentManager'
|
|
38
38
|
import { Subject } from 'rxjs'
|
|
39
39
|
import { EventManager, EventMode } from '../Game/EventManager'
|
|
40
|
+
import { inject } from '../inject'
|
|
40
41
|
|
|
41
42
|
const {
|
|
42
43
|
isPromise,
|
|
@@ -200,6 +201,7 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
200
201
|
* ```
|
|
201
202
|
* @title Server Instance
|
|
202
203
|
* @prop {RpgServerEngine} player.server
|
|
204
|
+
* @deprecated Use `inject(RpgServerEngine)` instead. Will be removed in v5
|
|
203
205
|
* @memberof Player
|
|
204
206
|
* */
|
|
205
207
|
public server: RpgServerEngine
|
|
@@ -208,7 +210,7 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
208
210
|
/** @internal */
|
|
209
211
|
public tmpPositions: Position | string | null = null
|
|
210
212
|
public otherPossessedPlayer: RpgPlayer | RpgEvent | null = null
|
|
211
|
-
public
|
|
213
|
+
public followingId: string | null = null
|
|
212
214
|
|
|
213
215
|
// Indicates whether to load data with load(). In this case, hooks are not triggered.
|
|
214
216
|
private _dataLoading: boolean = false
|
|
@@ -218,10 +220,10 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
218
220
|
position: Position
|
|
219
221
|
} | undefined
|
|
220
222
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
/**
|
|
224
|
+
* @deprecated Use `inject(RpgCommonGame)` instead. Will be removed in v5
|
|
225
|
+
*/
|
|
226
|
+
public gameEngine: RpgCommonGame = inject(RpgCommonGame)
|
|
225
227
|
|
|
226
228
|
// redefine type (as RpgPlayer)
|
|
227
229
|
get otherPlayersCollision(): RpgPlayer[] {
|
|
@@ -238,8 +240,14 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
238
240
|
// a flag that lets the client know if the event is suppressed. The client can, for example, end animations before completely deleting the object (client side).
|
|
239
241
|
deleted: boolean = false
|
|
240
242
|
|
|
243
|
+
constructor(public playerId: string) {
|
|
244
|
+
super(inject(RpgCommonGame), playerId)
|
|
245
|
+
this.initialize()
|
|
246
|
+
}
|
|
247
|
+
|
|
241
248
|
/** @internal */
|
|
242
249
|
initialize() {
|
|
250
|
+
this.server = inject(RpgServerEngine)
|
|
243
251
|
this.expCurve = {
|
|
244
252
|
basis: 30,
|
|
245
253
|
extra: 20,
|
|
@@ -597,7 +605,7 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
597
605
|
}
|
|
598
606
|
|
|
599
607
|
toJSON() {
|
|
600
|
-
const { permanentObject } = Room.
|
|
608
|
+
const { permanentObject } = Room.compileSchema(this.schema)
|
|
601
609
|
const snapshot = Room.extractObjectOfRoom(this, permanentObject)
|
|
602
610
|
snapshot.variables = [...this.variables]
|
|
603
611
|
return snapshot
|
|
@@ -769,10 +777,10 @@ export class RpgPlayer extends RpgCommonPlayer {
|
|
|
769
777
|
*/
|
|
770
778
|
cameraFollow(otherPlayer: RpgPlayer | RpgEvent, options: CameraOptions = {}) {
|
|
771
779
|
if (otherPlayer.id == this.id) {
|
|
772
|
-
this.
|
|
780
|
+
this.followingId = null
|
|
773
781
|
}
|
|
774
782
|
else {
|
|
775
|
-
this.
|
|
783
|
+
this.followingId = otherPlayer.id
|
|
776
784
|
}
|
|
777
785
|
this.emit(SocketEvents.CallMethod, {
|
|
778
786
|
objectId: this.playerId,
|
|
@@ -1004,8 +1012,8 @@ export class RpgEvent extends RpgPlayer {
|
|
|
1004
1012
|
mode: EventMode
|
|
1005
1013
|
playerRelated: RpgPlayer | null = null
|
|
1006
1014
|
|
|
1007
|
-
constructor(
|
|
1008
|
-
super(
|
|
1015
|
+
constructor(playerId: string) {
|
|
1016
|
+
super(playerId)
|
|
1009
1017
|
}
|
|
1010
1018
|
|
|
1011
1019
|
async execMethod(methodName: string, methodData = []) {
|
package/src/RpgServer.ts
CHANGED
|
@@ -25,6 +25,36 @@ export interface RpgServerEngineHooks {
|
|
|
25
25
|
* @memberof RpgServerEngineHooks
|
|
26
26
|
*/
|
|
27
27
|
onStep?: (server: RpgServerEngine) => any
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Flexible authentication function for RPGJS.
|
|
31
|
+
*
|
|
32
|
+
* This `auth` function is an integral part of the connection process in RPGJS, designed to be agnostic
|
|
33
|
+
* and adaptable to various authentication systems. It is not tied to any specific database or third-party
|
|
34
|
+
* authentication service, allowing developers to implement custom logic suited to their game's requirements.
|
|
35
|
+
* This flexibility is particularly useful in MMORPGs where diverse and robust authentication mechanisms may be needed.
|
|
36
|
+
*
|
|
37
|
+
* The function is called during the player connection phase and should handle the verification of player credentials.
|
|
38
|
+
* The implementation can vary widely based on the chosen authentication method (e.g., JWT tokens, OAuth, custom tokens).
|
|
39
|
+
*
|
|
40
|
+
* @param {RpgServerEngine} server - The instance of the game server.
|
|
41
|
+
* @param {SocketIO.Socket} socket - The socket instance for the connecting player. This can be used to access client-sent data, like tokens or other credentials.
|
|
42
|
+
* @returns {Promise<string> | string} The function should return a promise that resolves to a player's unique identifier (e.g., user ID) if authentication is successful, or a string representing the user's ID. Alternatively, it can throw an error if authentication fails.
|
|
43
|
+
* @throws {string} Throwing an error will prevent the player from connecting, signifying a failed authentication attempt.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* // Example of a simple token-based authentication in main/server.ts
|
|
48
|
+
* const server: RpgServerEngineHooks = {
|
|
49
|
+
* auth(server, socket) {
|
|
50
|
+
* const token = socket.handshake.query.token;
|
|
51
|
+
* // Implement your authentication logic here
|
|
52
|
+
* // Return user ID or throw an error if authentication fails
|
|
53
|
+
* }
|
|
54
|
+
* };
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
auth?: (server: RpgServerEngine, socket: any) => Promise<string> | string | never
|
|
28
58
|
}
|
|
29
59
|
|
|
30
60
|
export interface RpgPlayerHooks {
|
|
@@ -239,7 +269,6 @@ export interface RpgServer {
|
|
|
239
269
|
player?: string[],
|
|
240
270
|
engine?: string[]
|
|
241
271
|
}
|
|
242
|
-
|
|
243
272
|
/**
|
|
244
273
|
* Adding sub-modules
|
|
245
274
|
*
|
package/src/Scenes/Map.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { RpgMap } from '../Game/Map'
|
|
|
7
7
|
import { RpgWorldMaps, WorldMap } from '../Game/WorldMaps'
|
|
8
8
|
import { RpgEvent, RpgPlayer } from '../Player/Player'
|
|
9
9
|
import { RpgServerEngine } from '../server'
|
|
10
|
+
import { inject } from '../inject'
|
|
10
11
|
|
|
11
12
|
export interface RpgClassMap<T> {
|
|
12
13
|
id?: string
|
|
@@ -28,8 +29,9 @@ export class SceneMap {
|
|
|
28
29
|
[mapId: string]: RpgClassMap<RpgMap>
|
|
29
30
|
} = {}
|
|
30
31
|
private worldMaps: Map<string, RpgWorldMaps> = new Map()
|
|
32
|
+
private server: RpgServerEngine = inject(RpgServerEngine)
|
|
31
33
|
|
|
32
|
-
constructor(sceneMapObject: SceneMapObject
|
|
34
|
+
constructor(sceneMapObject: SceneMapObject) {
|
|
33
35
|
const { maps, worldMaps, events } = sceneMapObject
|
|
34
36
|
this.maps = maps
|
|
35
37
|
this.mapsById = {}
|
|
@@ -252,7 +254,9 @@ export class SceneMap {
|
|
|
252
254
|
return null
|
|
253
255
|
}
|
|
254
256
|
|
|
255
|
-
player.emit('preLoadScene',
|
|
257
|
+
player.emit('preLoadScene', {
|
|
258
|
+
id: mapId
|
|
259
|
+
})
|
|
256
260
|
|
|
257
261
|
player.prevMap = player.map
|
|
258
262
|
|