[Scummvm-git-logs] scummvm-sites multiplayer -> 5d90ee725db12f5040b572410a9b7ad4737b9391

LittleToonCat noreply at scummvm.org
Mon Dec 4 23:04:07 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm-sites' repo located at https://github.com/scummvm/scummvm-sites .

Summary:
5d90ee725d MULTIPLAYER: Lobby ability to merge one version to another.


Commit: 5d90ee725db12f5040b572410a9b7ad4737b9391
    https://github.com/scummvm/scummvm-sites/commit/5d90ee725db12f5040b572410a9b7ad4737b9391
Author: Little Cat (toontownlittlecat at gmail.com)
Date: 2023-12-04T19:03:55-04:00

Commit Message:
MULTIPLAYER: Lobby ability to merge one version to another.

This is done to ease the daily build transition to 2.8.0git to 2.9.0git.

Changed paths:
    lobby/net/DatabaseMessages.js
    lobby/net/NetworkListener.js
    main.py


diff --git a/lobby/net/DatabaseMessages.js b/lobby/net/DatabaseMessages.js
index a6e0c4f..9e81b89 100644
--- a/lobby/net/DatabaseMessages.js
+++ b/lobby/net/DatabaseMessages.js
@@ -78,6 +78,15 @@ server.handleMessage("login", async (client, args) => {
         client.versionNumber = client.versionNumber.substr(0, gitLocation + 3)
     }
 
+    for (const [keyVersion, versions] of Object.entries(server.mergeVersions)) {
+        if (versions.includes(client.versionNumber)) {
+            // Change the client version to the merged version.
+            logEvent('mergedVersion', client, version, {'username': username, 'game': game, 'merged_version': keyVersion});
+            client.versionNumber = keyVersion;
+            break;
+        }
+    }
+
     if (client.versionNumber in server.versionRestrictions) {
         if (server.versionRestrictions[client.versionNumber] == null) {
             // Discontinued
diff --git a/lobby/net/NetworkListener.js b/lobby/net/NetworkListener.js
index fece79c..b0606cf 100644
--- a/lobby/net/NetworkListener.js
+++ b/lobby/net/NetworkListener.js
@@ -49,6 +49,7 @@ class NetworkListener {
         this.sessionServer = this.config['session_server'] || '127.0.0.1:9120';
 
         this.versionRestrictions = this.config['version_restrictions'] || {}
+        this.mergeVersions = this.config['merge_versions'] || {}
 
         const host = this.config['host'];
         const port = Number(this.config['port']);
diff --git a/main.py b/main.py
index 2fb3736..46a62e2 100644
--- a/main.py
+++ b/main.py
@@ -218,7 +218,11 @@ if __name__ == "__main__":
                 return
             logging.debug(f"relay_data: Relaying data to host (user 1)")
             peers_to_send.add(peer)
-        elif type_of_send in (PN_SENDTYPE_ALL, PN_SENDTYPE_ALL_RELIABLE, PN_SENDTYPE_ALL_RELIABLE_TIMED):
+        elif type_of_send in (
+            PN_SENDTYPE_ALL,
+            PN_SENDTYPE_ALL_RELIABLE,
+            PN_SENDTYPE_ALL_RELIABLE_TIMED,
+        ):
             # Send to all peers
             for peer in peers_by_user_id.values():
                 peers_to_send.add(peer)
@@ -353,17 +357,21 @@ if __name__ == "__main__":
                     if "git" in scummvm_version:
                         # Strip out the specific revision details, we only need the "git".
                         index = scummvm_version.index("git")
-                        scummvm_version = scummvm_version[:index + 3]
+                        scummvm_version = scummvm_version[: index + 3]
                 else:
                     # We don't know how to parse this string, revert back to unknown.
-                    logging.warning(f"Don't know how to parse scummvm_version string: {scummvm_version}")
+                    logging.warning(
+                        f"Don't know how to parse scummvm_version string: {scummvm_version}"
+                    )
                     scummvm_version = "unknown"
 
             if command == "host_session":
                 name = data.get("name")
                 maxplayers = data.get("maxplayers")
 
-                session_id = create_session(name, maxplayers, scummvm_version, event.peer.address)
+                session_id = create_session(
+                    name, maxplayers, scummvm_version, event.peer.address
+                )
                 send(event.peer, {"cmd": "host_session_resp", "id": session_id})
 
             elif command == "update_players":
@@ -382,8 +390,17 @@ if __name__ == "__main__":
                 session_ids = redis.lrange(f"{game}:sessions", 0, num_sessions)
                 for id in session_ids:
                     session = redis.hgetall(f"{game}:session:{id}")
-                    if scummvm_version != session["scummvm_version"]:
-                        logging.debug(f"get_sessions: {scummvm_version} != {session['scummvm_version']}")
+                    if (
+                        # Skipping if their playing football or
+                        # baseball because they might be
+                        # playing with merged versions
+                        # (e.g. 2.9.0git playing as 2.8.0git)
+                        game not in ("football", "baseball2001")
+                        and scummvm_version != session["scummvm_version"]
+                    ):
+                        logging.debug(
+                            f"get_sessions: {scummvm_version} != {session['scummvm_version']}"
+                        )
                         # Mismatched version, skip.
                         continue
                     sessions.append(




More information about the Scummvm-git-logs mailing list