Skip to content

Comments/questions #6

@UkoeHB

Description

@UkoeHB

Hey, I spent some time studying this repo to evaluate requirements for an edgegap integration in my project. Had some questions and comments.

Comments + questions about impl

  • bevygap_matchmaker
    • Potentially-fragile security decision: lightyear ConnectTokens always use the same auth key. More robust would be new auth key per game server.
    • kv_cert_digests is never cleaned up.
  • bevygap_matchmaker_httpd
    • What is matchmaker/wannaplay endpoint for? It's not used anywhere in the crate.
  • bevygap_shared
    • Why does NATS_CA_CONTENTS require writing to a temp file? Can't you just extract the string directly?
  • bevygap_server_plugin
    • Why does this wait until NatsConnected to get ArbitriumContext?
  • bevygap_webhook_sink
    • Nothing listens to hook messages. Is this just prepped for future use?
  • edgegap_async
    • Why is this auto-generated and not on crates.io?

Questions

  • Bevygap does not require the webtransport client have the same SocketAddr as the websocket client used to connect to the matchmaker backend (which is then passed to EdgeGap when creating a session).
    • Possibilities:
      • EdgeGap allows connections from other addresses (but then why need the client IP?).
      • The bevygap architecture assumes the WebTransport address will 'end up' having the same IP as the websocket client even when a wildcard is used (or browser auto-generates an address).
  • Why does bevygap only support WebTransport connections?
    • Does EdgeGap require TLS on all connections to deployments?
  • Is NATS efficient for game servers? Storage persistence seems overkill, since all game servers would presumably participate. Or do NATS clients not store anything extra, and always do networked requests for reads?
    • NATS allows game servers to connect to backend without needing a specific address, which is a limitation of websockets.
  • It looks like connecting clients are thrown into a random deployment. How does EdgeGap decide to make a new deployment, and how can you assign a specific deployment to a predefined client list?
    • Maybe use SessionModel::selectors to 'choose' what deployment a session is assigned to? Or is there a separate API for custom deployments (also, can you send data into a deployment as CLI arg?)?
  • Lightyear ConnectTokens are constructed from the deployment public IP and first port. If a new UDP socket (or webtransport or websocket server) is made inside the deployment, will its address not match the 'deployment public IP'? If it doesn't match, will clients not be able to connect?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions