Gamepads now use ArrayBuffers to send binary data to the app. It's not as efficient as it could be (it wastes some calculations on the JavaScript side, and seven bits are wasted per button) but it's a decent starting point.
Precision for every component except buttons is now higher (up to vJoy standards), and the total message length is still shorter than before, and more importantly, deterministic. Using recvfrom() with the expected message length makes latency completely negligible on Linux.
It also helps on Windows but the latency is still noticeable, around 2 or 3 tenths of second. There's still a lot to investigate on this.
A bug with the webserver on Linux was also fixed: Windows reported paths in the manifest using \ rather than /. As Android didn't understand this convention, the result was that Windows users could not use folders at all in their gamepads.
Gamepads now use ArrayBuffers to send binary data to the app. It's not as efficient as it could be (it wastes some calculations on the JavaScript side, and seven bits are wasted per button) but it's a decent starting point.
Precision for every component except buttons is now higher (up to vJoy standards), and the total message length is still shorter than before, and more importantly, deterministic. Using
recvfrom()
with the expected message length makes latency completely negligible on Linux.It also helps on Windows but the latency is still noticeable, around 2 or 3 tenths of second. There's still a lot to investigate on this.
A bug with the webserver on Linux was also fixed: Windows reported paths in the manifest using
\
rather than/
. As Android didn't understand this convention, the result was that Windows users could not use folders at all in their gamepads.