PocketRelay / Server

Mass Effect 3 Rust Server Emulator, LAN and WAN private server
https://pocket-relay.pages.dev/
MIT License
12 stars 4 forks source link

Experiment: Discord Game Invites #53

Open jacobtread opened 11 months ago

jacobtread commented 11 months ago

Description

See if its possible to use the Discord game sdk to implement an invite system independently of the origin/ea overlay, this would improve the invite system reliability as the current reliability of the existing overlay is flakey and its unknown how long it will continue to work.

If this experiment is a success #32 can be closed

Checklist

Sora012 commented 11 months ago

I don't use discord nor my close friends for communications or games. Relying on it for an external invite system would eliminate people like us from being able to use an in-game invite system. I would rather suggest implementing a different approach or providing two methods if you're set on implementing discord.

I would suggest something like you add to the relay client a "connect" box that contains another user's in-game name and a "password" box that -must- match on the other end and validated by the server.

Example: Host: sets password -> forwards it to server Server: stores password for host using its associated accout name Client: enters name/password -> forward to server Server: validates name/password (accept|decline) Accept: Host is forwarded client joining packet and Client is forwarded game info Decline: send Client wrong info (e.g. cause a prompt about not able to join or something, or just flatout ignore it)

jacobtread commented 11 months ago

Hey, I'm not too sure if im going down the discord route yet as I'm not sure if I can make the discord add work with this. This is an experiment so its not set in stone and things are bound too change. This experiment was added as I've seen a large portion of the user's and ME3 playerbase reside on discord communities

At the moment I'm working on modifying the game in order to make it possible to obtain the player details and call the nessicary client(me3) game joining functions. Because of the way the client(pr) is structured currently it has no idea about authentication or anything that's happening on the game client as its only a proxy, attempting to modify this to intercept authentication from the server would add a great performance penalty.

Because of this invite changes won't be available to the original external client tool instead im only planning on supporting them for the client plugin, as with the client plugin im able to directly access the game(me3) objects and interact, which simply isn't possible without being injected into the game (the normal tool isn't injected like the plugin and its impossible to force a client to join from the server side so the plugin version must be used)

I may find other solutions while I'm working on this but ill definitely keep your suggested method in mind.