workadventure/back
David Négrier 125a4d11af Refactored and optimized messages
Now, when a user moves, only his/her position is sent back to the other users. The position of all users is not sent each time.

The messages sent to the browser are now:

- the list of all users as a return to the join_room event (you can send responses to events in socket.io)
- a "join_room" event sent when a new user joins the room
- a "user_moved" event when a user moved
- a "user_left" event when a user left the room

The GameScene tracks all these events and reacts accordingly.

Also, I made a number of refactoring in the classes and removed the GameSceneInterface that was useless (it was implemented by the LogincScene for no reason at all)
2020-05-19 19:11:12 +02:00
..
src Refactored and optimized messages 2020-05-19 19:11:12 +02:00
tests Cleaning up tests 2020-05-16 15:58:20 +02:00
.dockerignore Fixing Dockerfiles 2020-04-11 15:11:22 +02:00
.eslintrc.json Create backend 2020-04-04 04:08:12 +02:00
.gitignore Add io socket message to share user position. 2020-04-04 12:42:02 +02:00
Dockerfile Triggerring CI rerun 2020-04-12 15:50:14 +02:00
jasmine.json added jasmine in the back 2020-04-06 15:48:19 +02:00
package.json Fixing linting 2020-05-01 23:48:30 +02:00
position-test.js BIG WIP of refactoring my work in TS 2020-04-07 10:08:04 +02:00
README.md Fix typo 2020-04-04 23:29:36 +02:00
server.ts Create backend 2020-04-04 04:08:12 +02:00
tsconfig.json Stricter compiler 2020-05-16 16:11:58 +02:00
yarn.lock Multi players on the map 2020-04-10 12:54:05 +02:00

Back Features

Login

To start your game, you must authenticate on the server back. When you are authenticated, the back server return token and room starting.

POST => /login 
Params : 
    email: email of user.

Join a room

When a user is connected, the user can join a room. So you must send emit join-room with information user:

Socket.io => 'join-room'

    userId: user id of gamer
    roomId: room id when user enter in game
    position: {
        x: position x on map
        y: position y on map
    }

All data users are stocked on socket client.

Send position user

When user move on the map, you can share new position on back with event user-position. The information sent:

Socket.io => 'user-position'

    userId: user id of gamer
    roomId: room id when user enter in game
    position: {
        x: position x on map
        y: position y on map
    }

All data users are updated on socket client.

Receive positions of all users

The application sends position of all users in each room in every few 10 milliseconds. The data will pushed on event user-position:

Socket.io => 'user-position'

    [
        {
            userId: user id of gamer
            roomId: room id when user enter in game
            position: {
                x: position x on map
                y: position y on map
            }
        },
        ...
    ]

<<< back