Commit graph

174 commits

Author SHA1 Message Date
kharhamel fe8c75610d FIX: player anims correctly stop on the idle frame 2021-03-11 16:21:02 +01:00
David Négrier 8fcc1534d8 Fixing let/const in Admin 2021-01-18 15:31:19 +01:00
David Négrier d1222e4440 Refactoring admin messages 2021-01-18 15:07:40 +01:00
Gregoire Parant b1f8522c05 Create ban feature by admin console 2021-01-15 03:19:58 +01:00
David Négrier ea3aa3d128 Reimplementing ban/unban/messages 2020-12-11 12:23:50 +01:00
David Négrier 24cb85cc7c Adapting admin connection to pusher.
Done: onUserLeave / onUserEnter
To be done: ban / unban
2020-12-10 17:46:15 +01:00
David Négrier 5d188e51b2 Cleanup of useless files 2020-12-04 17:26:12 +01:00
David Négrier a19edd4dc1 Fixing reconnection to server on back failure 2020-12-03 16:39:44 +01:00
David Négrier 4c1e566a6c Adding a Pusher container as a middleware/dispatcher between front and back 2020-11-26 17:53:30 +01:00
kharhamel 9b64a970b5 FIX: remove the ping and pong overrides server side in favor of and idleTimeout and added a manual ping client side 2020-11-10 18:26:46 +01:00
kharhamel 85f2dabe6c FIX: the server now closes the socket after 30s of no pong 2020-11-09 12:12:52 +01:00
kharhamel b1d2543631 improvment: added prometheus metrics for the number of groups in a room 2020-10-30 15:23:50 +01:00
David Négrier b7854dfb90 When a user moves, do not trigger group creation
In order to avoid triggering group creation when walking next to someone we should avoid creating a group unless the user stops next to the other members of the group.
2020-10-22 16:15:30 +02:00
Gregoire Parant 3a565362a2 Simple limit connexion in room 2020-10-21 23:45:08 +02:00
Gregoire Parant e973921390 Fix admin tags
- Fix get size group
- Fix admin tags
- Fix texture already used
2020-10-21 17:22:17 +02:00
David Négrier 78a4bf3189 Adding custom character textures 2020-10-20 17:42:36 +02:00
arp 75d9ed8dfa implemented the admin websocket
now send data
2020-10-19 14:23:50 +02:00
David Négrier d098a1b8db The server now sends regular ping requests to keep connections alive 2020-10-15 13:53:59 +02:00
arp a6a51caa93 now fetch the tags from the admin into the nodejs back 2020-10-14 16:50:42 +02:00
David Négrier 98bda49d7e Get tags from the admin
And uses tag "admin" to choose whether to display the console or not
2020-10-14 11:07:34 +02:00
David Négrier ce93e5bbaa Fixing the way rights are sent to the admin (now sending organization/world/room) 2020-10-14 10:37:00 +02:00
arp d98efc0433 lint fixes 2020-10-13 16:23:49 +02:00
arp 02c193a262 rewrote the authorisation flow: give more responsability to gameManager and less to gameScene 2020-10-12 16:45:09 +02:00
arp 0b78eb6277 temp 2020-10-06 15:37:00 +02:00
David Négrier 5de2f61231 Adding back authentication to uws websocket 2020-09-30 10:12:40 +02:00
David Négrier 53c6c2bc30 Fixing benchmark 2020-09-29 17:24:16 +02:00
David Négrier 9f3577286d Merge branch 'develop' of github.com:thecodingmachine/workadventure into uws
# Conflicts:
#	back/src/Controller/AdminController.ts
#	back/src/Controller/AuthenticateController.ts
#	back/src/Controller/IoSocketController.ts
#	back/src/Controller/MapController.ts
#	benchmark/index.ts
#	front/src/Connexion/RoomConnection.ts
2020-09-29 17:12:28 +02:00
David Négrier b485c9bf46 Switching WebRTC to protobuf + uws 2020-09-29 16:01:22 +02:00
David Négrier 6a4c0c8678 Migrating to uWS 2020-09-28 18:52:54 +02:00
arp 3f9659ef3c improvments 2020-09-28 15:40:34 +02:00
David Négrier 23cea1c835 Migrating position notification into the User class 2020-09-25 15:25:06 +02:00
David Négrier 892d1555b8 Adding "dump" controller and fixing issue with groups in PositionNotifier by delegating the PositionNotifier.updatePosition call to groups themselves 2020-09-25 13:48:02 +02:00
David Négrier 24a6cd7f8e Switched ITEM_EVENT to protobuf 2020-09-24 17:24:37 +02:00
David Négrier d7209d8864 Migrating messages locally into back and front 2020-09-24 11:16:08 +02:00
David Négrier b4f971c501 Switched group position to protobuf 2020-09-24 10:05:16 +02:00
David Négrier 76d3779438 Moved GroupUpdateMessage to protobuf 2020-09-21 11:24:03 +02:00
David Négrier b148ca3708 Linting 2020-09-18 18:16:26 +02:00
David Négrier 7826b2ea8d Fixing Docker build images to add new messages directory 2020-09-18 17:22:45 +02:00
David Négrier df0636c513 Migrating user position messages to protobuf 2020-09-18 15:51:15 +02:00
David Négrier e9ca8721a6 Migrating userId to "int32" to save some space and adding userMoves message in protobuf 2020-09-18 13:57:38 +02:00
David Négrier f6458a8335 Removing useless group callbacks at the World level 2020-09-16 16:13:47 +02:00
David Négrier f5f9dcac04 Making groups part of zones 2020-09-16 16:06:43 +02:00
David Négrier 3a9196fb82 Merge 2020-09-16 11:41:03 +02:00
David Négrier d24ec0bd75 Plugin PositionNotifier into the main application. 2020-09-15 16:21:41 +02:00
David Négrier f8d462b0d7 Fixing "any" type 2020-09-15 10:10:35 +02:00
David Négrier 9b702c75e3 Adding batched messages + the notion of notifier / zones (not plugged in the system yet) 2020-09-15 10:06:11 +02:00
David Négrier b37a8f63be Moved benchmark to its own directory and added multicore testing + a README 2020-09-11 09:56:05 +02:00
David Négrier df7b5cc2e3 Adding a "silent" notion (triggered in Jitsi meets) 2020-08-31 14:03:40 +02:00
David Négrier fca93663b4 Merge branch 'develop' of github.com:thecodingmachine/workadventure into outline 2020-08-24 18:15:44 +02:00
David Négrier 27ffb6b13d Refactoring SimplePeer code: splitting Peer instantiation into 2 subclasses (VideoPeer and ScreenSharingPeer). This leads to way leaner code. 2020-08-20 16:56:10 +02:00
David Négrier 894f7c8009 Removing useless roomID parameter in WebRtcSignal message 2020-08-20 15:21:07 +02:00
David Négrier 0119534283 First version of screen-sharing that works when a user is joining a group after screen sharing begun. 2020-08-20 00:05:00 +02:00
David Négrier 6c5772e849 Fixing typipng in back 2020-08-18 15:31:42 +02:00
Gregoire Parant a8f27e6084 Create event to start webrtc screen charing 2020-08-17 23:54:26 +02:00
David Négrier 6b970adc6c Merge branch 'develop' of github.com:thecodingmachine/workadventure into outline
# Conflicts:
#	front/src/Phaser/Game/GameScene.ts
#	front/src/Phaser/Player/Player.ts
#	front/src/index.ts
#	front/yarn.lock
2020-08-17 22:51:37 +02:00
David Négrier 84529d6e99 Propagating customized sprites all over the game 2020-07-28 17:45:55 +02:00
David Négrier ee612f6585 Adding event support to items 2020-07-27 22:36:58 +02:00
David Négrier 31846d1640 Using a Set for groups 2020-06-29 22:21:11 +02:00
David Négrier 4fee1ac206 Refactoring World and Group to use Map and Set instead of arrays 2020-06-29 22:10:23 +02:00
David Négrier 9bdcc9da98 Deleting world when empty. 2020-06-29 19:14:54 +02:00
David Négrier 928e486de5 Fixing token management 2020-06-10 12:32:39 +02:00
David Négrier a373626e24 Removing all "any" from back.
To do this, I used generic-type-guard package which generates both an interface AND a valid type guard from code.
With this, we are 100% sure that the messages we receive are validated at runtime!
The client cannot pass us an object that is invalid! \o/
2020-06-09 23:07:19 +02:00
David Négrier ac0b7a7361 Turning let into const where applicable 2020-06-09 15:54:54 +02:00
Gregoire Parant 0c9cbca765 Use userId generated by back end in all message 2020-05-23 15:04:25 +02:00
David Négrier ab798b1c09 Changing the "Point" notion to add a notion of "moving" in addition to the notion of direction.
Also, refactoring JOIN_ROOM event to add complete position.
2020-05-22 23:04:45 +02:00
David Négrier fb8d7b5d59 Removing dead code 2020-05-19 19:53:26 +02:00
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
David Négrier e934015d87 Refactoring searchClientById
searchClientById was scanning through all open sockets to find the right one (which is inefficient if we have many).
Instead, I created a new Map that directly maps ids to sockets.
Furthermore, this solves a long-standing issue (when a socket is disconnected, we cannot find it anymore in the sockets list but it is still available in the disconnect callback from the map)
As a result, we should not have any remaining circles any more.
2020-05-18 18:33:04 +02:00
David Négrier 87707bc814 Removing broken import 2020-05-16 15:51:00 +02:00
David Négrier b20357c1ee Removing the Message class and merging it with MessageUserPosition (since it is only ever used it in MessageUserPosition)
Taking advantage of the TypeScript Constructor Assignment too to reduce the amount of code!
2020-05-16 15:44:45 +02:00
David Négrier 3b6ace03fa Getting rid of roomId in Message class (this is not needed since all messages sent are for the room we are currently in) 2020-05-16 00:19:27 +02:00
David Négrier cdfa9acf01 JoinRoom now ONLY sends the roomId. 2020-05-15 23:24:04 +02:00
David Négrier b80e3e07d8 Sending player details (name + character selected) on connection 2020-05-15 22:49:50 +02:00
David Négrier fff0e13a2e More code removal 2020-05-15 22:09:21 +02:00
David Négrier 4e745f20f7 More code removal 2020-05-15 22:08:53 +02:00
David Négrier 4de552437d Completely getting rid of "userid"
Previously, userid was generated by the "/login" route and passed along.
This commit completely removes the uuid "userid" (and disables the LoginController too and any Jwt check).

"userid" is replaced by the "socket id" of the connection.
So a user is now identified using a socket id, which is unique for a given connection.
2020-05-14 23:20:43 +02:00
David Négrier 4cca1c1e58 Displaying circle on join
So far, someone joining a map would not see the circles of groups already formed until someone moves in the group (because the "circle_moved_or_updated" event was not fired when someone arrives)

This commit fixes this behaviour. Someone entering a room will receive an event for each and every group currently formed.
2020-05-13 23:11:10 +02:00
David Négrier 11972555ee More detailed error log to debug disconnect issue 2020-05-13 22:11:05 +02:00
gparant bd2ffde4c4 Fix CI lint 2020-05-11 20:55:17 +02:00
gparant 099961b818 Delete params not used 2020-05-11 13:19:48 +02:00
gparant e35c188854 Fix update world back end and deleting group in front end 2020-05-11 13:17:02 +02:00
gparant f4af824cf9 Fix error mapping refresh in back & the end of this feature development 2020-05-10 23:49:08 +02:00
gparant 8b9c36e3be Refactor leave and join room 2020-05-10 19:54:41 +02:00
gparant 8a91190d8c Change to update world by scene and room id 2020-05-10 19:45:17 +02:00
David Négrier c59d693f6e
Merge pull request #83 from thecodingmachine/cleanup_rename_frame
Cleanup: renaming "frame" to "character"
2020-05-08 16:21:16 +02:00
David Négrier e4824fe34d
Merge pull request #81 from thecodingmachine/display_groups
Adding the display of a circle around the group
2020-05-08 16:20:56 +02:00
David Négrier 492196b333 Cleanup: renaming "frame" to "character"
The "frame" variable actually contains a string pointing to the character selected.
It has nothing to do with a frame which is usually a particular image in an animation.

I'm renaming the variable accross the application to avoid confusion.
2020-05-08 15:18:22 +02:00
gparant 41f5b5a1f6 Fix shares information to enter into Webrtc room.
- Refactor share position in world class.
- Update selects a client to send information about connecting WebRtc room.
2020-05-08 11:54:47 +02:00
David Négrier 02e6b50b16 Adding the display of a circle around the group
This PR adds the display of a circle around groups. This is useful to view where you need to go to speak to someone but also to debug.

Note: implementation is suboptimal, relying on a "graphics" object that is known to be slow. In the future, we need to use a circle as a sprite instead.
2020-05-08 00:35:36 +02:00
gparant 5a6415607d Send event and play animation with user frame 2020-05-06 01:50:01 +02:00
gparant b65e37c468 Name of map users
- Add name on user
 - Delete NonPlayer class not used
2020-05-03 22:24:14 +02:00
David Négrier 9c32c930a0 Merge 2020-05-03 17:47:54 +02:00
David Négrier 3b27f8b000 Making the group radius distinct from the minimum distance to connect 2 players
Also, changed default settings from 160px for Group Radius to 120px
(minimum distance to connect 2 players remains 160px)
2020-05-03 16:57:17 +02:00
gparant 8357f9b8c2 Merge branch 'event_group' into webrtc
# Conflicts:
#	back/src/Model/Group.ts
#	back/src/Model/World.ts
2020-05-03 16:18:05 +02:00
David Négrier 58565a7f45 Refactoring events to connect/disconnect a user to a group 2020-05-03 16:08:04 +02:00
gparant bae03fb1cf Fix CI 2020-05-02 23:48:33 +02:00
gparant aff77fe074 Merge remote-tracking branch 'github.com/master' into webrtc
# Conflicts:
#	back/src/Model/Group.ts
#	back/src/Model/World.ts
2020-05-02 00:36:04 +02:00
gparant e06b20fe96 Update video style and start peer connexion 2020-05-01 21:15:00 +02:00
David Négrier c778afcbca Adding support for leaving the group if the socket is closed 2020-04-29 23:18:42 +02:00
David Négrier bf0fa516d4 First working version with disconnection 2020-04-29 23:12:55 +02:00