node 12.13.0
npm 6.12.0
gulp-cli 2.2.0npm run cluster_init
npm run client_initnpm run cluster_start
npm run client_startnpm run test_mechanicsInstall socket.io-client
npm i -D socket.io-clientCreate/Get character (POST) url: "/character-create", "/character-get"
interface Response {
name: string
}enum Attribute {
health,
stamina
}
interface Character {
name: string,
position: number[], // [x, y, z]
attributes: {
[key: Attribute]: { value: number }
},
effects: Effect[],
skills: Skill[],
equips: Equip[]
}
interface Request {
data: {
parameters: Character
}
}Enter the world (POST) url: "/world-enter"
interface Response {
name: string
}interface Request {
data: {
secret: string,
id: number,
world: {
characters: Character[]
}
}
}Connect to world (Socket)
import { io } from 'socket.io-client';
const socket = io(socketUrl);
socket.emit('char:enter', { secret });Character enter to the world event: "char:enter"
interface OutData {
secret: string;
}
socket.emit('char:enter', { secret });
interface InData {
id: number;
characterData: Character;
}
socket.on('char:enter', data => {});Character leave from the world event: "char:leave"
interface OutData {}
interface InData {
id: number;
}Character cance leave from the world event: "char:cancel-leave"
interface OutData {}Character say event: "char:say"
interface OutData {
message: string;
}
interface InData {
id: number;
message: string;
}Character move event: "char:move"
interface OutData {
position: number[]; // [x, y, z]
}
interface InData {
id: number;
position: number[]; // [x, y, z]
}Character use skill event: "char:use-skill"
interface OutData {
skillId: number;
}
interface InData {
id: number;
skillId: number;
}Character use skill event: "char:cancel-use-skill"
interface OutData {}
interface InData {
id: number;
code?: number;
}