libretro / libretro/RetroArch

(Netplay) Improving the netplay protocol

Open
#10,146 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

netplay
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.