Race Engineer Specific Protocol
I recently used Second Monitor to serve as a race engineer for a team of drivers doing an endurance race. I got really good feedback from the drivers and they were really impressed with the ability to have a race engineer that has the context of what's going on on-track, but it did come with some downsides:
- Port forwarding can be difficult to set up and each driver has to go through the exercise of setting up port forwarding.
- IP Addresses can change so there's a bit of tedium involved to ensure the race engineer has everybody's public IP Addresses on hand.
- Unfamiliarity with Second Monitor can lead to performance issues.
I'd like to propose a fix for this: instead of having the driver's computer play the role of "server", make that the responsibility of the race engineer's computer. This fixes the above issues in the following way:
- Only the race engineer needs to set up port forwarding
- A race engineer that has DDNS set up can share a single URL with each driver to connect to.
- Being less worried about dealing with networking issues on a driver's computer and network allows the race engineer to spend time to get a driver familiar with the software to ensure they're only running what's necessary.
This further opens up the opportunity for some very interesting things. Knowing that Assetto Corsa Competizione has some limitations with driver swaps and data availability I had to run an instance of Second Monitor for each driver present. If I can set up a single "server" instance as a race engineer that each driver can connect to, the same server can be responsible for synchronising driver telemetry to each of the other drivers. I'm not 100% sure how to approach this problem yet, but it has me very excited.
Having the "race engineer" be the server also allows for some viability in the sim race coaching space. A coach with port forwarding and DDNS set-up can very easily pull live telemetry from their clients. They can host a game server alongside their Second Monitor server which should allow them to structure a coaching session without requiring their clients to send them large replay files as well as the telemetry info.
I think there's even an opportunity to allow a race engineer to have multiple different drivers connected to a single server with some UI elements on the Timing Screen to allow them to focus on a specific driver. I think sim racing coaches might find this very useful, although I don't know if they really do group sessions.
This is ultimately why I submitted the following merge request: !137 (merged)
It's laying the foundation for a networking protocol that I hope is easier to understand and offers us some flexibility. Ultimately I'm not expecting you to implement this Matus, I'm rather creating this issue to keep you in the loop with some future development I'm planning, my only worry being that it might involve some rather significant architecture changes.