(Netplay) Improving the netplay protocol
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
Improving the netplay protocol¶
Description¶
The RetroArch frontend currently provides a way to connect two cores together using the netplay protocol. This way, the state / inputs of the cores are shared and users can play their favorite (retro-)games together online.
The current implementation is quite old and has no extensive documentation nor formal specification.
The goal of this project would be to analyse the current implementation and to identify points for improvements.
A deliverable of this project could be, to analyse the performance characteristics of the current implementation and provide a detailed analysis of the current netplay stack. This analysis should include a formal description of the protocol, it’s performance characteristics and advice on how to further improve the protocol.
The student is of course free to actually implement improvements to the netplay stack:
The netplay protocol is currently TCP based, it could also be re-written to use UDP for better latency characteristics.
If the student has a deep background in network protocols, he/she could also design a new version if the netplay protocol all together.
Further readings:
https://github.com/libretro/RetroArch/tree/master/network/netplay
https://github.com/libretro/netplay-mitm-server
Needed knowledge:
C, Network protocols (TCP / UDP), FSM (Finite-state machine)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the current implementation in network/netplay and compare it with the libretro/netplay-mitm-server project. Document the existing netplay protocol, its performance characteristics, and possible improvements. A complete result should provide a formal protocol description, analysis, and recommendations; optional protocol redesign or implementation is explicitly open-ended.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100