diff --git a/README.md b/README.md index 146195b..59addf3 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,15 @@ This project is a demo for a websocket-based rollback netcode inspired by [GGPO](https://github.com/pond3r/ggpo/blob/master/doc/README.md). +[Demo recorded over INTERNET (Phone-Wifi v.s. PC-Wifi UDP holepunched) using an input delay of 6 frames](https://pan.baidu.com/s/1UArwqDShLoPjYppjjqsTqQ?pwd=10wc), and it feels SMOOTH when playing! + +![Merged_cut_annotated_spedup](./charts/Merged_cut_annotated_spedup.gif) + As lots of feedbacks ask for a discussion on using UDP instead, I tried to summarize my personal opinion about it in [ConcerningEdgeCases](./ConcerningEdgeCases.md) -- **since v0.9.25, the project is actually equipped with UDP capabilities as follows**. - When using the so called `native apps` on `Android` and `Windows` (I'm working casually hard to support `iOS` next), the frontends will try to use UDP hole-punching w/ the help of backend as a registry. If UDP hole-punching is working, the rollback is often less than `turn-around frames to recover` and thus not noticeable, being much better than using websocket alone. This video shows how the UDP holepunched p2p performs for [Phone-Wifi v.s. PC-Wifi (viewed by PC side)](https://pan.baidu.com/s/1K6704bJKlrSBTVqGcXhajA?pwd=l7ok). - If UDP hole-punching is not working, e.g. for Symmetric NAT like in 4G/5G cellular network, the frontends will use backend as a UDP tunnel (or relay, whatever you like to call it). This video shows how the UDP tunnel performs for [Phone-4G v.s. PC-Wifi (viewed by PC side)](https://pan.baidu.com/s/1IZVa5wVgAdeH6D-xsZYFUw?pwd=dgkj). - Browser vs `native app` is possible but in that case only websocket is used. -The following video is recorded over INTERNET using an input delay of 4 frames and it feels SMOOTH when playing! Please also checkout these demo videos -- [source video of the first gif (earlier version)](https://pan.baidu.com/s/1ML6hNupaPHPJRd5rcTvQvw?pwd=8ruc) -- [source video of the second gif (added turn-around optimization & dashing)](https://pan.baidu.com/s/1isMcLvxax4NNkDgitV_FDg?pwd=s1i6) - -to see how this demo carries out a full 60fps synchronization with the help of _batched input upsync/downsync_ for satisfying network I/O performance. - -![gif_demo_1](./charts/internet_fireball_explosion_wallmove_spedup.gif) - -![gif_demo_2](./charts/internet_dash_turnaround_cut_spedup.gif) # Notable Features - Backend dynamics toggle via [Room.BackendDynamicsEnabled](https://github.com/genxium/DelayNoMore/blob/v0.9.14/battle_srv/models/room.go#L786) diff --git a/charts/Merged_cut_annotated_spedup.gif b/charts/Merged_cut_annotated_spedup.gif new file mode 100644 index 0000000..1cffe4b Binary files /dev/null and b/charts/Merged_cut_annotated_spedup.gif differ diff --git a/charts/internet_dash_turnaround_cut_spedup.gif b/charts/internet_dash_turnaround_cut_spedup.gif deleted file mode 100644 index 6addfc8..0000000 Binary files a/charts/internet_dash_turnaround_cut_spedup.gif and /dev/null differ diff --git a/charts/internet_fireball_explosion_wallmove_spedup.gif b/charts/internet_fireball_explosion_wallmove_spedup.gif deleted file mode 100644 index 2806d1e..0000000 Binary files a/charts/internet_fireball_explosion_wallmove_spedup.gif and /dev/null differ